ROM BIOS和DOS中断共同点:功能号都是在ah中。
(1)显示器中断的中断类型码是10H,
设置显示模式
功能号:0
调用参数:AL=显示模式。
常用显示模式如下图:
eg. 设置显示器为80X25彩色文本模式
mov AH,0
mov al,3
int 10h
⑵ 初始化窗口或窗口内容向上卷动
功能号:6
调用参数:AL=上卷行数
BH=空白区属性
CH=窗口左上角行号
CL=窗口左上角列号
DH=窗口右下角行号
DL=窗口右下角列号
例2.清屏,并设置为蓝底白字属性。
MOV AH ,6
MOV AL ,0
MOV BH ,1FH;蓝底白字属性
MOV CX ,0
MOV DH ,24
MOV DL ,4FH
INT 10H
⑶ 设置光标位置
功能号:2
调用参数:BH=页号,DH=光标行号 DL=光标列号
例4.设置光标在10行20列。
MOV AH ,2 ;设置光标
MOV BH ,0
MOV DH ,10
MOV DL ,20
INT 10H
2.使用DOS系统功能调用
1.带回显的字符输入并识别Ctrl-C键
功能号:1
返回参数:AL=输入字符的ASCII值
2.输出一个字符
功能号:2
调用参数:DL=字符的ASCII值
说明:该输出功能使光标跟随移动。
例. 输出一个字符Y。
MOV AH ,2
MOV DL ,’Y’
INT 21H
3.输入字符串
功能号:0AH
调用参数:DS:DX指向自定义的输入缓冲区首地址
功能:从标准输入设备(例如键盘)输入一串字符到用户定义的缓冲区,直到按下Enter键为止。在接收的同时显示到屏幕上,并且识别Ctrl-C键,也处理DOS编辑键。
缓冲区的示意图:
eg. 定义60个字节的buffer,在buffer[0]存用户定义buffer长度,而buffer[1]里面存的是实际的buffer使用长度(由系统自己算出用户实际使用的字节数),用户实际输入的数据存放在buffer[2]-buffer[M+1]这段空间里面egment
start: mov ax,datasg
mov ds,ax
mov ah,0Ah ;接收一段字符串
lea dx,buffer
int 21h
mov ah,4ch
int 21h
codesg ends
end start
4.输出字符串
功能号:9
调用参数:DS:DX指向要输出的以$结尾的字符串首地址
功能:输出字符串到标准输出设备
说明:要输出的字符串必须以$结束
eg: 打印“ I love China”
assume cs:codesg, ds:datasg
datasg segment
out1 db 'I love China $'
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov dx,offset out1
mov ah,9
int 21h
mov ah,4ch
int 21h
codesg ends
end start