📜  int 21h 表示 (1)

📅  最后修改于: 2023-12-03 15:31:25.111000             🧑  作者: Mango

int 21h

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 功能退出程序。

参考资料