李辉 2020-06-08
第五章:
输入/输出和中断程序设计
一、BIOS中断调用:BIOS程序直接建立在硬件基础上,磁盘操作系统(DOS)和其他操作系统建立在BIOS基础上,各种高级语言则建立在操作系统基础上。用户程序可以使用高级语言,也可以调用DOS或其他操作系统,还可以调用BIOS,甚至直接指挥硬件设备。
1.调用方法:
(1) 设置分功能号。按实现的操作功能的要求,给指定寄存器(通常为AH)送入分功能号。
(2) 设置入口参数。按操作要求,给寄存器填写相应参数的内容(某些调用无参数。
(3) 使用中断语句INT n。执行调用的功能,其中n为中断号。
(4) 分析出口参数。
2.BIOS键盘键入功能调用:
在内存0040:0017中记录了双态键和组合键的状态,该字节称为键盘状态字节KB-FLAG,通过INT 16H的功能2可以查看上述8个键的状态,有关程序段如下:
3.BIOS显示功能调用:
有关显示输出的DOS功能调用不多,而BIOS调用(INT 10H)的功能很强,主要包括设置显示方式,设置光标大小和位置,设置调色板号,显示字符和显示图形等。
1)显示方式的设置:INT 10H的0H功能用来设置显示方式。
(1)单色字符显示P33/34/35
(2)彩色字符显示P36/37/38
(3)显示存储器P39/40/41/42 字符偏址 =页偏址+((行数×行宽)+列数)×字节数
2)光标的设置:
(1) INT 10H的01H功能是设置光标的大小和状态。 光标起始行值放在CH的低4位,结束行值放在CL的低4位。CH的D4位为光标禁止位,用来表示光标的状态。
(2)INT 10H的02H功能是设置光标位置。 光标位置的行号设在DH寄存器中,列号设在DL中。BH中必须包含被输出的页号,对单色显示器来说,页号总是0。
(3)INT 10H的03功能是读光标位置,页号必须在BH中指定。此功能把光标位置的行号回送给DH,列号回送给DL。光标大小的参数填入CH和CL中,也就是说,在CH和CL中回送的是用功能1设置的光标参数。
(4)INT 10H的05功能可由程序确定显存中的显示区域。
(5)INT 10H的06功能是清屏和卷屏,能使屏幕内容上卷指定的行,这个功能需要设置7个参数。如果上卷超过指定窗口的顶部,这些行的内容就消失,出现在窗口底部的新行被填为空格,其属性由BH寄存器决定。 10H的功能7和功能6类似,也能使屏幕(或窗口)初始化或使屏幕(或窗口)的内容下卷指定的行,其他参数的设置与功能6一样。
4.BIOS的打印功能:(INT 17H)
(1)打印一个字符:BIOS 17H中断指令的功能0。要打印输出的字符放在AL中,打印机号放在DX中,打印机的状态信息被回送到AH寄存器。
(2)初始化打印机功能:BIOS 17H中断指令的功能1。用于初始化打印机并回送打印机状态到AH寄存器。
(3)状态字节读入AH寄存器:BIOS 17H中断指令的功能2。