中断的语法格式:
INT n
调用中断n的中断服务程序。n 为中断号,取值0 ~ 255。
对标志位的影响:不影响CF、OF、SF、ZF。
MS DOS使用中断号21H作为系统调用,为程序员提供了上百种系统服务功能,对这些功能的调用步骤如下:
(1)由AH给出功能号。
(2)根据相应功能的要求,设置入口参数。
(3)INT 21H。
(4)分析和使用出口参数。
其中,最常用的是功能号4CH,用来实现程序退出、并返回DOS。使用方法如下:
mov ah, 4ch
int 21h
实战
- INT 21H 中断
(1)、键盘输入并显示(功能01H)
功能描述:从标准输入设备(如:键盘)读入一个字符。该中断在处理过程中将一直处于等待状态直到有字符可读为止。该输入还可被重定向,如果这样做,则无法判断文件是否已到文件尾
入口参数:AH=01H,过滤掉控制字符,并回显
mov AH,01H
int 21H
出口参数:AL=输入字符的ASCII码
(2)、屏幕显示一个字符(功能02H)
功能描述:向标准输出设备(如:屏幕)输出一个字符。该输出还可被重定向,如果这样做,则将无法判断磁盘是否满
入口参数:AH=02H
DL=待输出字符的ASCII码
出口参数:AL=DL
mov AH,02H
mov DL,输入字符的ASCII码
int 21H
(3)、屏幕显示字符串(功能09H)
功能描述:输出一个字符串到标准输出设备上。如果输出操作被重定向,那么,将无法判断磁盘已满
入口参数:AH=09H
DS:DX=待输出字符的地址
说明:待显示的字符串以$ 作为其结束标志
出口参数:AL=24H
data segment
buf dw "I am a chinese people$",
data ends
start:
mov ax,data
mov ds,ax
mov ah,09H
lea dx,buf
int 21H
mov ax,4c00H
int 21H
end start
输出
(4)、字符串输入功能调用(0AH号功能调用)
data segment
;5表示最大长度为5个字符,0占用的那个字节在调用结束后会被放入实际输入的字符个数;5 dup(0)开辟5个字节单元,存放输入的字符的ASCII码。
buf db 5,0,5 dup(0)
data ends
start:
mov ax,data
mov ds,ax
lea dx,buf
mov ah,0AH
int 21H
end start
(5)、读取系统时间
功能描述:取系统日期
入口参数:AH=2AH
出口参数:CX=年(19802099),DH=月(112),DL=日(1~31)
AL=星期几(0=Sunday,1=Monday,…)
mov ah,2ah
int 21h
(6)、读取系统时间
功能描述:置系统日期
入口参数:AH=2BH
CX=年(1980-2099),DH=月(1-12),DL=日(1~31)
出口参数:AL=00H——设置成功,0FFH——设置失败
mov ah,2bh
int 21h
(7)、返回DOS操作系统(4CH号功能调用)
mov AH,4CH
int 21H