软件中断调用

被刻印的时光 ゝ 提交于 2019-12-06 03:18:16

DOS功能调用

DOS中断号范围:0x20H~0x3FH,总共32个中断向量

INT 21H

  1. 01H号子功能: 等待从键盘输入一个字符,同时将该字符显示在显示器上
    入口参数:无
    出口参数:AL=按键的ASCII码

  2. 02H号子功能: 显示一个字符
    入口参数:DL=待显示字符的ASCII码
    出口参数:无

  3. 07H号子功能: 等待从键盘输入一个字符,但该字符不显示在显示器上,不响应CTRL_C
    入口参数:无
    出口参数:AL=按键的ASCII码

  4. 08H号子功能: 等待从键盘输入一个字符,同时将该字符显示在显示器上,响应CTRL_C
    入口参数:无
    出口参数:AL=按键的ASCII码

  5. 09H号子功能: 显示字符串,响应CTRL_C
    入口参数:DS:DX=字符串首地址,字符串必须以'$'为结束标志
    出口参数:无

  6. 0AH号子功能:等待从键盘输入字符串,并保存在输入数据缓冲区,同时在屏幕上显示
    入口参数:DS:DX=输入数据缓冲区首地址,回车键为结束符,回车键'0DH'保存在缓冲区中,缓冲区首单元预置接收的字符个数(包括回车键),BUF+1单元有0AH功能写入实际接收字符个数,因此缓冲区大小应大于等于接收字符(包括回车键)个数+2。
    出口参数:AL=按键的ASCII码

  7. 0BH号子功能:查询有无键盘输入,响应CTRL_C
    入口参数:无
    出口参数:AL=0,无输入;AL=FFH,有输入。

  8. 4CH号子功能:结束正在运行的程序,并返回DOS系统
    入口参数:AL=返回码(或者不设置)
    出口参数:无

  9. 25H号子功能:写入中断向量
    入口参数:AH=25H,AL=中断类型码;DS:DX=要写入的中断向量
    出口参数:无

  10. 35H号子功能:读取中断向量
    入口参数:AH=35H,AL=中断类型码
    出口参数:ES:BX=中断向量

注意:

  • DOS中断参数总结:单字节参数(1)输入用DL,(2)输出用AL
  • DOS功能调用要注意DOS重入问题,若程序中开启了中断且在中断服务函数中调用了DOS功能函数,主程序中应避免使用DOS功能调用,而用BIOS相关功能替换

BIOS功能调用

BIOS中断号范围:0x10H~0x1FH,总共16个中断向量

INT 16H (键盘中断)

  1. 00H号子功能:读取输入的一个字符,无回显,响应CTRL_C,无输入则等待
    入口参数:无
    出口参数:AL=输入字符的ASCII码,若AL=0,则AH=输入键的扩展码

  2. 01H号子功能:查询键盘缓冲区
    入口参数:无
    出口参数:
    • Z标志=0,表示有输入,键代码仍留在键盘缓冲区中,此时AL=输入字符的ASCII码,AH=输入字符的扩展码
    • Z标志=1,表示无输入
  3. 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(屏幕中断)

  1. 00H号子功能:设置屏幕显示方式
    入口参数:
    - AL=0 --> 40 * 25 黑白文本方式
    - AL=1 --> 40 * 25 彩色文本方式
    - AL=2 --> 80 * 25 黑白文本方式
    - AL=3 --> 80 * 25 彩色文本方式

  2. 02H号子功能:预置光标位置
    入口参数:BH=显示页号,DH=行号,DL=列号
    出口参数:无

  3. 03H号子功能:读取光标的当前位置
    入口参数:BH=显示页号
    出口参数:
    • CH、CL=光标顶部扫描线、底部扫描线的行号
    • DH、DL=光标在屏幕上的行、列号
  4. 05H号子功能:设置当前显示页
    入口参数:AL=显示存储器页号0~7
    出口参数:在屏幕上显示出指定显示页的字符(只对文本方式有效)

  5. 08H子功能:读取光标所在位置的字符及其属性
    入口参数:BH=显示页号
    出口参数:
    • AH=光标所在位置的字符属性
    • AL =光标所在位置的字符的ASCII码,如果没有对应字符的ASCII码则AL置0
  6. 0EH子功能号:显示一个字符
    入口参数:AL=待显示字符的ASCII码
    出口参数:无

INT 1AH

  1. INT 1AH的0H号子功能:调用读取日时钟计数器中的计数值

  2. INT 1AH的1H号子功能:调用预置日时钟计数器中的计数值

  3. INT 1CH型中断功能:BIOS为1CH型中断设计的服务程序只有一条IRET指令,由08H型日时钟中断服务程序调用

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!