mov ah,02 int 21h
时间: 2023-03-30 13:04:27 浏览: 368
这是一段汇编语言的代码,用于在 DOS 系统下输出一个字符。具体来说,mov ah,02 将 02 存储到寄存器 ah 中,表示要进行字符输出操作;int 21h 则是调用 DOS 的中断服务程序,执行 ah 中所存储的操作。
相关问题
DATA SEGMENT IO8253_K EQU 040H ; 8253控制字端口地址 IO8253_0 EQU 042H ; 8253通道0计数器端口地址 IO8253_1 EQU 046H ; 8253通道1计数器端口地址 IO8253_2 EQU 04AH ; 8253通道2计数器端口地址 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX ; 通道0计数器初始值为1000 MOV AX, 1000 MOV DX, IO8253_0 OUT DX, AL MOV AL, AH OUT DX, AL ; 通道1计数器初始值为2000 MOV AX, 2000 MOV DX, IO8253_1 OUT DX, AL MOV AL, AH OUT DX, AL ; 通道2计数器初始值为3000 MOV AX, 3000 MOV DX, IO8253_2 OUT DX, AL MOV AL, AH OUT DX, AL ; 设置8253控制字,选择二进制计数、工作方式3、初始值计数器、通道0、无自动加载 MOV DX, IO8253_K MOV AL, 00110110B OUT DX, AL ; 循环读取计数器值并输出 LOOP: ; 读取通道0计数器值 MOV DX, IO8253_0 IN AL, DX MOV AH, 0 ; 输出计数器值 MOV CX, 1000 DIV CX MOV DL, AH ADD DL, 30H MOV AH, 02H INT 21H MOV DL, AL ADD DL, 30H MOV AH, 02H INT 21H MOV AH, 02H MOV DL, ',' INT 21H ; 读取通道1计数器值 MOV DX, IO8253_1 IN AL, DX MOV AH, 0 ; 输出计数器值 MOV CX, 1000 DIV CX MOV DL, AH ADD DL, 30H MOV AH, 02H INT 21H MOV DL, AL ADD DL, 30H MOV AH, 02H INT 21H MOV AH, 02H MOV DL, ',' INT 21H ; 读取通道2计数器值 MOV DX, IO8253_2 IN AL, DX MOV AH, 0 ; 输出计数器值 MOV CX, 1000 DIV CX MOV DL, AH ADD DL, 30H MOV AH, 02H INT 21H MOV DL, AL ADD DL, 30H MOV AH, 02H INT 21H MOV AH, 02H MOV DL, 0DH INT 21H MOV DL, 0AH INT 21H JMP LOOP CODE ENDS END START
这段代码的功能是使用8253芯片产生三个不同频率的方波,并将这三个方波的频率输出到屏幕上。
具体实现的过程是,先设置8253芯片的三个通道的初始值,然后设置8253芯片的控制字,选择二进制计数、工作方式3、初始值计数器、通道0、无自动加载。
接着进入一个循环,循环中先读取8253芯片的通道0、通道1和通道2的计数器值,然后将这些计数器值除以1000并输出到屏幕上,最后换行并返回循环开始处继续执行。
需要注意的是,这段代码使用了汇编语言编写,需要在汇编器中编译、链接后才能在计算机上运行。
mov ah,,3eh int 21h mov dl,oah mov ah,02h int 21h call show
这段代码是在 DOS 环境下使用中断 21h 进行文件读取,并将读取到的内容输出到屏幕上。具体来说,`mov ah, 3eh` 将 3eh 这个值存入寄存器 ah 中,表示要进行文件读取操作;`int 21h` 是中断 21h 的调用指令,用来执行 DOS 系统调用;`mov dl, oah` 将 ASCII 码为 0ah 的字符(即换行符)存入寄存器 dl 中;`mov ah, 02h` 将 02h 存入寄存器 ah 中,表示要进行字符输出操作;`int 21h` 是中断 21h 的调用指令,用来执行 DOS 系统调用;`call show` 是调用一个名为 show 的子程序,用来显示读取到的文件内容。
阅读全文