📅  最后修改于: 2023-12-03 15:31:25.111000             🧑  作者: Mango
int 21h
是 DOS 系统调用中的一个中断,它的作用是通过调用 DOS 的中断处理程序来执行各种操作,如文件读写、屏幕输出、键盘输入、系统退出等。
在 DOS 环境下,你可以通过汇编语言中的 int 21h
指令来调用 DOS 的中断处理程序。具体方法是将功能号和参数传递给ah和al寄存器,然后调用int 21h即可,如下所示:
mov ah, 2
mov dl, 'A'
int 21h
以上代码调用 DOS 中断处理程序的 AH=02
功能,将字母 A
输出到屏幕上。
以下是 int 21h
中断处理程序支持的一些功能号和对应的功能:
| 功能号 | 功能 |
|------|------|
|AH=00h
| 终止程序 |
|AH=01h
| 从键盘读取一个字符 |
|AH=02h
| 向标准输出设备(即屏幕)输出一个字符 |
|AH=03h
| 从标准输入设备(即键盘)读取一个字符 |
|AH=05h
| 关闭文件 |
|AH=06h
| 清空键盘缓冲区 |
|AH=09h
| 向标准输出设备输出一个字符串 |
|AH=0Ah
| 从标准输入设备读取一个字符串 |
|AH=0Ch
| 将屏幕显示清除 |
|AH=0Eh
| 在光标位置处显示一个字符 |
以下代码示例演示了如何使用 DOS 中断处理程序来读取用户从键盘输入的字符,并将其显示到屏幕上:
.MODEL SMALL
.STACK 100h
.DATA
CR DB 0DH ; 行结束符
LF DB 0AH ; 换行符
buffer DB 100 DUP('$') ; 存储输入的字符串
.CODE
main PROC
start:
MOV AX, @DATA
MOV DS, AX
; 打印提示信息
MOV AH, 09H
LEA DX, prompt
INT 21H
; 读取用户输入
MOV AH, 0AH
LEA DX, buffer
INT 21H
; 打印输入的字符串
MOV AH, 09H
LEA DX, buffer+2
INT 21H
; 输出换行符
MOV AH, 02H
MOV DL, CR
INT 21H
MOV DL, LF
INT 21H
; 退出程序
MOV AH, 4CH
INT 21H
prompt DB 'Please enter a string:', CR, LF, '$'
main ENDP
END start
此代码演示了如何使用 DOS 中断处理程序 AH=0Ah
功能来从标准输入设备(即键盘)读取一个字符串,并将其存储在一个缓冲区中。然后使用 AH=09h
功能将该字符串输出到标准输出设备(即屏幕)上。最后使用 AH=02h
功能输出换行符和结束符,并通过 AH=4Ch
功能退出程序。