DOS功能调用
DOS中断号范围:0x20H~0x3FH,总共32个中断向量
INT 21H
01H号子功能: 等待从键盘输入一个字符,同时将该字符显示在显示器上
入口参数:无
出口参数:AL=按键的ASCII码02H号子功能: 显示一个字符
入口参数:DL=待显示字符的ASCII码
出口参数:无07H号子功能: 等待从键盘输入一个字符,但该字符不显示在显示器上,不响应CTRL_C
入口参数:无
出口参数:AL=按键的ASCII码08H号子功能: 等待从键盘输入一个字符,同时将该字符显示在显示器上,响应CTRL_C
入口参数:无
出口参数:AL=按键的ASCII码09H号子功能: 显示字符串,响应CTRL_C
入口参数:DS:DX=字符串首地址,字符串必须以'$'为结束标志
出口参数:无0AH号子功能:等待从键盘输入字符串,并保存在输入数据缓冲区,同时在屏幕上显示
入口参数:DS:DX=输入数据缓冲区首地址,回车键为结束符,回车键'0DH'保存在缓冲区中,缓冲区首单元预置接收的字符个数(包括回车键),BUF+1单元有0AH功能写入实际接收字符个数,因此缓冲区大小应大于等于接收字符(包括回车键)个数+2。
出口参数:AL=按键的ASCII码0BH号子功能:查询有无键盘输入,响应CTRL_C
入口参数:无
出口参数:AL=0,无输入;AL=FFH,有输入。4CH号子功能:结束正在运行的程序,并返回DOS系统
入口参数:AL=返回码(或者不设置)
出口参数:无25H号子功能:写入中断向量
入口参数:AH=25H,AL=中断类型码;DS:DX=要写入的中断向量
出口参数:无35H号子功能:读取中断向量
入口参数:AH=35H,AL=中断类型码
出口参数:ES:BX=中断向量
注意:
- DOS中断参数总结:单字节参数(1)输入用DL,(2)输出用AL
- DOS功能调用要注意DOS重入问题,若程序中开启了中断且在中断服务函数中调用了DOS功能函数,主程序中应避免使用DOS功能调用,而用BIOS相关功能替换
BIOS功能调用
BIOS中断号范围:0x10H~0x1FH,总共16个中断向量
INT 16H (键盘中断)
00H号子功能:读取输入的一个字符,无回显,响应CTRL_C,无输入则等待
入口参数:无
出口参数:AL=输入字符的ASCII码,若AL=0,则AH=输入键的扩展码- 01H号子功能:查询键盘缓冲区
入口参数:无
出口参数:- Z标志=0,表示有输入,键代码仍留在键盘缓冲区中,此时AL=输入字符的ASCII码,AH=输入字符的扩展码
- Z标志=1,表示无输入
- 02H号子功能:读取当前转换键状态
入口参数:无
出口参数:- AL=键盘状态字
- AL7位置1表示Insert键有效(被奇数次按下)
- AL6位置1表示Caps Lock键有效(相应的指示灯亮)
- AL5位置1表示Num Lock键有效(相应的指示灯亮)
- AL4位置1表示Scroll Lock键有效(相应的指示灯亮)
- AL3位置1表示按下Alt键
- AL2位置1表示按下Ctrl键
- AL1位置1表示按下左Shift键
- AL0位置1表示按下右Shift键
INT 10H(屏幕中断)
00H号子功能:设置屏幕显示方式
入口参数:
- AL=0 --> 40 * 25 黑白文本方式
- AL=1 --> 40 * 25 彩色文本方式
- AL=2 --> 80 * 25 黑白文本方式
- AL=3 --> 80 * 25 彩色文本方式02H号子功能:预置光标位置
入口参数:BH=显示页号,DH=行号,DL=列号
出口参数:无- 03H号子功能:读取光标的当前位置
入口参数:BH=显示页号
出口参数:- CH、CL=光标顶部扫描线、底部扫描线的行号
- DH、DL=光标在屏幕上的行、列号
05H号子功能:设置当前显示页
入口参数:AL=显示存储器页号0~7
出口参数:在屏幕上显示出指定显示页的字符(只对文本方式有效)- 08H子功能:读取光标所在位置的字符及其属性
入口参数:BH=显示页号
出口参数:- AH=光标所在位置的字符属性
- AL =光标所在位置的字符的ASCII码,如果没有对应字符的ASCII码则AL置0
0EH子功能号:显示一个字符
入口参数:AL=待显示字符的ASCII码
出口参数:无
INT 1AH
INT 1AH的0H号子功能:调用读取日时钟计数器中的计数值
INT 1AH的1H号子功能:调用预置日时钟计数器中的计数值
INT 1CH型中断功能:BIOS为1CH型中断设计的服务程序只有一条IRET指令,由08H型日时钟中断服务程序调用