IBM-PC汇编语言⑨BIOS和DOS中断调用程序设计 (2) PPT资料共90页
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
… mov ah, 0ch mov al, 08h int 21h inc al je exit … Exit:
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
4)检验键盘状态
例 编写按任意键结束程序的程序段
… mov ah, 0bh int 21h inc al je exit … Exit:
DOS模块和ROM BIOS的关系如下图所示。
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
DOS中断和BIOS中断使用方法
DOS功能调用与BIOS功能都通过软件中断调用。 在中断调用前需要把功能号装入AH寄存器,把子功 能号装入AL寄存器,除此之外,还需要在CPU的寄存 器 中 提 供 专 门 的 调 用 参 数 。 一 般 来 说 , 调 用 DOS 或 BIOS功能时,有以下几个步骤:
9.1.3 DOS键盘功能调用(INT 21H)
无
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
1)单字符输入
例9—2 接收键盘输入并对其进行测试。
get_key:mov ah, 1 int 21h cmp al , ’y’ je yes cmp al, ’n’ je no jne get_key
9.1.3 DOS中断调用
安徽理工大学 计算机科学与技术系 李敬兆
9.1.1 ASCII与扫描码
《汇编语言》 第9章
键盘是计算机最基本的一种输入设备,
用来输入信息,以达到人机对话的目的。键 盘主要由3种基本类型的键组成:
(1)字符数字键:
(2)扩展功能键:如Home、End、Backspace、 Delete、Insert、PgUp、PgDown以及功能键 F1~F10
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
第9章 BIOS和DOS中断调用程序 设计
• 9.1 键盘输入中断调用
• 9.2 显示器输出中断调用
开始
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
DOS中断和BIOS中断
在存储器系统中,内存从0FE000H高端8K的ROM中 存 放 有 基 本 输 入 输 出 系 统 ( Basic Input/Output System,BIOS)例行程序。BIOS给PC系列的不同微处 理器提供了兼容的系统加电自检、引导装入、主要 I/O设备的处理程序以及接口控制等功能模块来处理 所有的系统中断。
(3)smax db 21, ?, 21 dup(?)
mov ah,4ch
int 21h
code ends
End start
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
3)清除键盘缓冲区
Int 21的功能0ch能清除键盘缓冲区,然后执行在AL中指定的 功能。AL中指定的功能可以是1,6,7,8或0AH。
(1)将调用参数装入指定的寄存器。 (2)如需功能调用号,把它装入AH。 (3)如需子功能调用号,把它装入AL。 (4)按中断号调用DOS或BIOS。 (5)检查返回参数是否正确。
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
表9.1 BIOS中断类型
地址(Hex) 类型码 中断名称
(1) smax db 21 sact db ? stri db 21 dup(?)
assume cs:code,ds:data Start:mov ax,data
mov ds,ax lea dx, stri
(2) smax db 21 db ? db 21 dup(?)
mov ah,0ah int 21h
(00000001B),放开ESC键时会产生一个断码81H
(10000001B)。
BIOS键盘处理程序将取得的扫描码转换成相应的 字符码,大部分的字符码是一个标准的ASCII码;没有 相应ASCII的键,如Alt和功能键(F1~F10),字符码 为0;还有一些非ASCII码键产生一个指定的操作。
安徽理工大学 计算机科学与技术系 李敬兆
;F2
mov ah,4ch
int 21h
code ends
end
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
2)输入字符串 例9-5 输入字符串程序
data segment
smax db 21
sact db ? stri db 21 dup(?) data ends code segment
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
该处理程序从8255可编程外围接口芯片的输入端口
读取一个字节,这个字节的低7位是按键的扫描码。最
高位为0或者为1,分别表示键是“按下”状态还是“放
开”状态。按下时,取得的字节称为通码,放开时取得
的字节称为断码。如ESC键按下取得的通码为01H
键盘缓冲区是一个环形队列,其性质与《数据结构》课程 中对“环形队列”所描述的性质完全一致。虽然缓冲区的本身 长度为16个字,但出于判断“对列满”的考虑,它最多只能保 存15个键盘信息。当缓冲区满时,系统将不再接受按键信息, 而会发出“嘟”的声音,以示要暂缓按键。当KBHead=KBTail 时,表示无键盘输入。
assume cs:code mov ah,7 int 21h cmp al,0
第一次回送00
je get_char jmp error
第二次回送扫描码
get_char_ mov ah,7 int 21h
cmp al,3bh
;F1
je option1
例9-4 检测键盘输入的功能键。
cmp al,3ch je option2
(3)和其他键组合使用的控制键:如Alt, Ctrl,Shift等
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
键盘和主机通过5芯电缆相连,这5根线分 别是电源线、地线、复位线以及键盘数据线和 键盘时钟线。PC机系列的键盘触点电路按16行 ×8列的矩阵来排列,用单片机Intel8048来控 制对键盘的扫描。按键的识别采用行列扫描法, 即根据对行线和列线的扫描结果来确定闭合键 的位置,这个位置值称为按键的扫描码,通过 数据线将8位扫描码送往主机。当在键盘上 “按下”或“放开”一个键时,如果键盘中断 是允许的(21H端口的第一位等于0),就会产 生一个类型9的中断,并转入到BIOS的键盘中 断处理程序。
键盘缓冲区
《汇编语言》 第9章
键盘缓冲区是一个先进先出的环形队列,其所占内存区域如下:
KBHead DW KBTail DW KBBuff DW
? ? 16 DUP(?)
;其内存地址为0000:041AH,缓冲区头指针 ;其内存地址为0000:041CH,缓冲区尾指针 ;其内存地址为0000:041EH,该缓冲区 的缺省长度为16个字
6
保留
58—5B
16
键盘I/O调用
1D—1F
7
保留
5C—5F
17
打印机I/O调用
20—23
8
定时器
60—63
18
ROM BASIC
24—27
9
键盘
64—67
19
引导程序入口
28—2B
A
保留的硬中断
68—6B
1A
时间调用
2C—2F
B
异步通信(COM2) 6C—6F
1B
键盘CTRL-BREAK控制
30—33
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
读取特殊功能键的状态
code segment assume cs:code mov ah, 2 int 16h mov ah, 4ch int 21h
code ends end
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
使用BIOS功能调用,给程序员编程带来极大方 便。程序员不必了解硬件的具体细节,可直接使用指 令设置参数,并中断调用BIOS例行程序,所以利用 BIOS功能调用编写的程序简洁,可读性好,而且易于 移植
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
磁盘操作系统(Disk Operating System)是 PC机上最重要的操作系统,它是由软盘或硬盘提供 的。它的两个DOS模块和使 BIOS使用起来更方便。因为DOS模块提供了更多更 必要的测试,使用DOS操作比使用相应功能的BIOS 操作更简易,而且DOS对硬件的依赖性更少些。
0—3
0
除以0
4—7
1
单步
8—B
2
非屏蔽
C—F
3
断点
10—13
4
溢出
14—17
5
打印屏幕
地址(Hex) 类型码 中断名称
40—43
10
视频显示I/O调用
44—47
11
设备检测调用
48—4B
12
存储器容量检测
4C—4F
13
软/硬盘I/O调用
50—53
14
通信I/O调用
54—57
15
盒式磁带I/O调用
18—1B
键盘中的控制键和双态键是非打印按键,它们 是起控制或转换作用的。当使用者按下控制键或双 态键时,系统要记住其所按下的按键。为此,在计 算机系统中,特意安排的一个字来标志这些按键的 状态,我们称该字为键盘状态字。
键盘状态字的各位含义如图所示。
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
并置ZF标志位。(若ZF=0,则AL=字符码,AH=扫描码, ZF=1,缓冲区空)
(3)AH=2 本功能为读取特殊功能键的状态(AL=键盘 状态字节)
安徽理工大学 计算机科学与技术系 李敬兆
从键盘读字符 code segment assume cs:code mov ah, 0 int 16h mov ah, 4ch int 21h code ends end
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
9.2 显示器I/O
显示器可以简单的分为单色显示器和彩色显示器。随着显示 技术的发展,种类也更加丰富,常见的有阴极摄像管(CRT)、液 晶显示器、等离子显示器等。 显示器是通过显卡与主机相连。 显示器的显示屏通常称之为屏幕,现在常用的显示器有14"和17", 常用的显示分辨率为800×600或1024×768等。常用的显示卡类 型为VGA、SVGA、EVGA和TVGA等,显示卡上也都带有大量的显示 存储器,能快速显示精美的图象。
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
例9—3 检测键盘输入的字符是否是回车键。
wait_here: mov ah, 7 int 21h cmp al, 0dh jne wait_here
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
code segment
如果程序要求能接收功能键 或数字组合键必须进行两次DOS 功能调用:
《汇编语言》 第9章
安徽理工大学 计算机科学与技术系 李敬兆
键盘状态字
《汇编语言》 第9章
在计算机键盘上除了可输入各种字符(字母、数字 和符号等)的按键之外,还有一些功能键(如:F1、 F2、…等)、控制键(如:Ctrl、Alt、Shift等)、 双态键(如:Num Lock、Caps Lock等)和特殊请求 键(如:Print Screen、Scroll Lock等)。
C
异步通信(COM1) 70—73
1C
定时器报时
34—37
D
硬盘
74—77
1D
显示器参数表
38—3B
E
软盘
78—7B
1E
软盘参数表
3C—3F
F
并行打印机
7C—7F 1F 字符点阵结构参数表
BIOS中断向量
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
表9.2 DOS中断类型
地址(Hex) 类型码
安徽理工大学 计算机科学与技术系 李敬兆
9.1.2 BIOS键盘中断
《汇编语言》 第9章
类型 16H 的中断提供了基本的键盘操作,它的中 断处理程序包括3个不同的功能,分别根据AH寄存器中 的子功能号来确定。
(1)AH=0 本功能为从键盘读字符到AL寄存器中。(AL= 字符码,AH=扫描码)
(2)AH=1 本功能为读键盘缓冲区字符到AL寄存器中,
80—83
20
84—87
21
88—8B
22
8C—8F
23
90—93
24
94—97
25
98—9B
26
9C—9F
27
A0—FF
28—3F
100—17F
40—5F
180—19F
60—67
中断名称 程序结束,返回DOS DOS系统功能调用 程序结束地址 CTRL_BREAK退出地址 标准错误出口地址 绝对磁盘读 绝对磁盘写 程序结束,驻留内存 为DOS保留 保留(扩充BIOS中断向量) 为用户软中断保留
1A0—1FF 200—217 218—3C3 3C4—3FF
68—7F 80—85 86—F0 F1—FF
不用(其中70—77为I/O设备中断向量)
BASIC使用 BASIC运行时,用于解释 未用
安徽理工大学 计算机科学与技术系 李敬兆
《汇编语言》 第9章
9.1 键盘输入中断调用
9.1.1 ASCII与扫描码 9.1.2 BIOS键盘中断