汇编语言9
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ASM
25
华北电力大学计算机系
2、显示缓冲区
显示缓冲区是用来记录屏幕显示信息的。 在文本显示方式下,显示信息包括:每个显示字符的ASCII 码及其显示属性。 在图形显示方式下,显示缓冲区内存储每个象素的显示颜色。 文本显示方式下,单色显示器的显示缓冲区段地址为0B000H; 文本显示方式下,彩色显示器显示缓冲区段地址为0B800H; 图形显示方式下,其显示缓冲区段地址为0A000H。
ASM
26
华北电力大学计算机系
9.2.1 BIOS的10H号中断服务程序 在屏幕上显示字符需要指定哪些属性? 页,光标,字符,字符属性
9.2.1.1 对光标的控制
1.改变光标的大小
CX=0E0FH, 光标是在字符下部的一条小短线; CX=080FH, 光标是下半格的小方块; CX=0102H, 光标是在字符上部的一条小短线; CX=0FFFFH,消隐光标,即不显示闪烁的光标。 ASM
15 华北电力大学计算机系
(3)字符串输入的功能调用
DOS功能调用INT 21H
功能号:AH=0AH 入口参数:DS:DX=缓冲区首地址 关键要定义好缓冲区
执行该功能调用时,用户按键,最后用回车确认 本调用可执行全部标准键盘编辑命令;用户按回车键 结束输入,如按Ctrl+Break或Ctrl+C则中止
DH/DL=该显示页的光标所在行/列坐标;
CH/CL=该显示页的光标起始线/结束线。
4.清屏与卷屏 5.显示字符 09号功能、0ah号 ASM
29 华北电力大学计算机系
9.2.2 DOS的21H号中断服务程序
AH 功能 调用参数 返回
2
6
显示一个字符,检验ctrl-break
显示一个字符,不检验ctrlbreak
位号
控制键
7
Insert
6
CapsLoc k
5
Num Lock
4
Scroll Lock
3
Alt
2
Ctrl
1
左shift
0
右shift
ASM
8
华北电力大学计算机系
利用BIOS功能进行输入的
例子: 9.1.2 BIOS键盘中断 Mov ah,0 16H号中断是BIOS提供给用户程序使用的一个软件中断, Int 16h 以INT 16H指令调用,提供基本的键盘服务,包括读键、判 Cmp al,’Q’ 断有无普通键按下、读取控制键的状态等子功能。 Jnz next
ASM
14
华北电力大学计算机系
(2)扩展字符输入
接收键盘输入,并对其进行测试,如果是扩展ascii码 字符,需要调用2次7号功能,第一次返回0,第2次 返回按键的扫描码。
例:
MOV AH,7 INT 21H CMP AL,0 JE getec Jmp error
Getec:
ASM
MOV AH,7 INT 21H CMP AL,3bh ;是F1?
13
华北电力大学计算机系
例2.48:判断按键
getkey:
yeskey: nokey:
mov ah,01h int 21h cmp al,’Y’ je yeskey cmp al,’N’ je nokey jne getkey ... ... ...
;功能号:ah←01h ;功能调用 ;处理出口参数al ;是“Y” ;是“N”
9.1.1
9号中断与键盘工作原理
键盘上的按键分为普通键和控制键两类。控制键包括Shift、 Ctrl、Alt、CapsLock 等,其余为普通键。
对于每个普通键,根据各键在键盘上的分布位置对键进行编
码,得到键盘扫描码(P317)。每个键还有ASCII码。
当发生9号中断请求时,表明键盘有按键信息需要送到主机中,
27
华北电力大学计算机系
2.改变光标的位置
其入口参数是:
AH=2,子功能号; BH=显示页的页号; DH=光标移动到哪一行,屏幕顶端为第0行; DL=光标移动到哪一列,屏幕左端为第0列。
ASM
28
华北电力大学计算机系
3.读光标位置 入口参数: AH=3,子功能号; BH=显示页的页号。
出口参数:
ASM
2
华北电力大学计算机系
IBM-PC 重要的中断类型
IBM-PC 重要的中断类型有0~49h 其中重点掌握: BIOS: 10h 显示中断 16h 键盘中断 DOS: 20h 程序中断 21h 功能调用(显示、键盘等)
ASM
3
华北电力大学计算机系
21H号中断是DOS提供给用户的用于调用系 统功能的中断,它有近百个功能供用户选择使用, 主要包括设备管理、目录管理和文件管理三个方 面的功能 ROM-BIOS也以中断服务程序的形式,向程 序员提供系统的基本输入输出程序 汇编语言程序设计需要采用系统的各种功能 程序 充分利用操作系统提供的资源是程序设计的 一个重要方面,需要掌握
0号子功能──读普通键 如果键盘缓冲区不空,则从缓冲区的环型队列首部取走 一个按键,把按键的扫描码放到AH中,ASCII码放到AL中
作为出口参数;
如果键盘缓冲区是空的,则等待有效按键输入。 ASM
9 华北电力大学计算机系
1号子功能──不改变缓冲区的读键(从缓冲区读) 当键盘缓冲区中还存放有没取走的有效按键时,出口参 数中ZF=0,AX=扫描码与ASCII码。 如果键盘缓冲区已空,则ZF =1表示无键可读。 1号子功能与0号的差别 首先,在缓冲区为空时,0号子功能将等待按键,1号子 功能则不等待,而是以ZF置1表示(这是很多电脑游戏软件 典型的读键方式)。 其次,如果缓冲区不空,0号子功能会取走该键,而1号 子功能并不取走,只把它复制到AX中。 10 ASM
读键时可以从队列首部取走键值,9号中断则把新的按键置入队列尾部。当键 盘缓冲区已满,而键盘上还有普通键被按下时,键盘仍然会提出中断申请,但 以表示缓冲区已满。
9号中断的服务程序中会忽略该按键,并使计算机的小喇叭发出“嘀”的一声,
ASM
7
华北电力大学计算机系
键盘状态字节在物理地址417H处,每一位代表一个控制键, 为1表示该键处于按下的状态,为0则是松开的。状态字节 的各个位与控制键的对应关系见表9.4。 表9.4 状态字节与控制键的对应关系
放普通键的32字节键盘缓冲区。
键盘缓冲区是一个先进先出的环形队列,共32字节,可以存放15个键的扫描码 和ASCII码。其所占内存区域如下:
KBHead DW
KBTail DW
?
?
;其内存地址为0000:041AH,缓冲区头指针
;其内存地址为0000:041CH,缓冲区尾指针
KBBuff DW
16 DUP(?);其内存地址为0000:041EH,
常用的显示卡类型为VGA、SVGA、EVGA和 TVGA等。1、显示模式 计算机系统中的显示器都有二种显示方式:文 本显示方式和图形显示方式。在DOS操作系统环境 下,其默认的显示方式为文本显示方式,而在 Windows操作系统环境下,其显示方式是图形显示 方式,其绝大多数操作界面是以图形界面的窗口形 式出现的。
ASM
21 华北电力大学计算机系
1)、文本显示方式 在常用的文本显示模式(模式3)下,每屏最多可显示 2000(80×25)个字符。 规定:屏幕的左上角坐标为(0, 0),右下角坐标为(24, 79)。 在显示字符时,用一个字节存储该字符的ASCII码,用另一 个字节存储的显示属性,即:显示颜色。 彩色显示器的字符显示属性定义如图
ASM
4
华北电力大学计算机系
9.1 键盘I/O 键盘的中断有3个:
(1)DOS的21H号中断,提供功能较强的读键功
能;
(2)BIOS的16H号中断,提供较低层次的服务;
(3)BIOS的9号中断,这是键盘硬中断,每当键盘 上有键被按下,键盘都会通过接口向CPU提出9 号中断请求。 ASM
5 华北电力大学计算机系
华北电力大学计算机系
2号子功能──读控制键状态 直接从BIOS数据区中复制出键盘状态字节的值,放 到AL中作为出口参数。
ASM
11
华北电力大学计算机系
9.1.3 DOS的输入子功能
DOS提供的输入子功能(21h 号中断中):
AH 1 6 7 8 A B 功能 从键盘输入一个字符并回显 读键盘患处区字符 从键盘输入一个字符,不回显 从键盘输入一个字符,不回显 检测CTRL-BREAK 输入字符到缓冲区 读键盘状态 DS:DX=缓 冲区首址 1)al=0ffh有键入 2)al=00无键入 Al=键盘功能 号(1,6,7,8,a) DL=0FFH 调用参数 返回 Al=字符 1)AL=字符 ,ZF=0 2)AL=0 ,ZF=1 Al=字符 Al=字符
ASM
22
华北电力大学计算机系
存储内容与显示位置的对应关系下如图:
ASM
23
华北电力大学计算机系
2)、图形显示方式
图形显示的最小单位是象素,对每个象素可用不 同的颜色来显示。所以,在显示缓冲区内记录的信 息是屏幕各象素的显示颜色。 由于各种图形显示模式所能显示的颜色和象素是 不同的,它决定了显示缓冲区的存储方式也是不同 的。下面给出一个具体的图形显示模式及其存储方 式。
ASM
16
华北电力大学计算机系
例2.50:输入字符串
buffer db 81 ;定义缓冲区 ;第1个字节填入可能输入的最大字符数 db 0 ;存放实际输入的字符数 db 81 dup(0) ;存放输入的字符串 ... mov dx,seg buffer ;伪指令seg取得buffer的段地址 mov ds,dx ;设置数据段DS mov dx,offset buffer mov ah,0ah int 21h
ASM
24
华北电力大学计算机系
256色320×200图形显示模式
表达256种不同颜色需要8位 二进制,即一个字节。在该 模式下,其显示缓冲区的存 储方式是非常简单的,即: 第一个字节存储第一个象素 的颜色,第二个字节存储第 二个象素的颜色,以此类推, 所以,存储满屏象素所需要 的字节数为:320×200×1 =64000。其显示缓冲区的 存储方式如图8.10所示。
第9章 BIOS和DOS中断
利用BIOS和DOS功能调用是汇编进行输入输出 的有效办法。
汇编语言程序
裸机
一般情况下,要完成一个功能既可以选择DOS, 也可以选择BIOS功能调用。
ASM
1 华北电力大学计算机系
功能调用的步骤
BIOS和DOS功能调用通常按照如下5个步骤进行:
(1)在指定寄存器中设置调来自百度文库参数 (2)在AH寄存器中设置系统功能调用号 (3)在AL寄存器中设置系统子功能调用号 (4) 执行指令INT 21H(或ROM-BIOS的中断向量号)实 现中断服务程序的功能调用 (5) 根据出口参数分析功能调用执行情况
C
ASM
清除键盘缓冲区,并调用一种键盘 功能 12
华北电力大学计算机系
(1)单个字符输入的功能调用
DOS功能调用INT 21H
功能号:AH=01H 出口参数:AL=字符的ASCII码 功能:获得按键的ASCII代码值
调用此功能时,若无键按下,则会一直等待, 直到按键后才读取该键值
ASM
DL=字符
DL=字符
显示字符,光标跟 随移动
显示字符,光标跟 随移动
9
显示字符串
DS:DX=串地址, 显示字符串,光标 串必须以$结束 跟随移动
getkey: mov ah,0bh int 21h or al,al ;al=0? jz getkey ;al=0,没有按键,继续等待
;等同于如下功能调用 mov ah,01h int 21h
ASM
20 华北电力大学计算机系
9.2 显示器I/O 常用的显示分辨率为800×600或1024×768等。
ASM
18 华北电力大学计算机系
(4)按键判断的功能调用
DOS功能调用INT 21H
功能号:AH=0BH 出口参数:AL=0,当前没有按键; AL=FFH,当前已经按键。 功能:仅判断当前是否有按下的键,设置 AL后退出
ASM
19
华北电力大学计算机系
例2.51:按任意键继续
...
;提示“按任意键继续”
在没有被屏蔽的情况下,CPU将响应该中断,执行一次9号中 断服务程序,处理从键盘传来的信息。 9号中断服务程序的功能主要有:如果是控制键被按下或松开, 就把BIOS数据区中的键盘状态字节作相应调整;如果是普通
键,则把按键的扫描码和ASCII码一起存入键盘缓冲区。
ASM
6 华北电力大学计算机系
计算机启动后,在内存较低端(物理地址400H起,紧接在中断向量表的后面)有 一段供BIOS使用的数据区,其中包括存放各控制键状态的键盘状态字节和存