BIOS和DOS中断功能调用.ppt_第1页
BIOS和DOS中断功能调用.ppt_第2页
BIOS和DOS中断功能调用.ppt_第3页
BIOS和DOS中断功能调用.ppt_第4页
BIOS和DOS中断功能调用.ppt_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五节 BIOS和DOS中断功能调用 (教材旧P238、新P239) 一、概述 1. BIOS和DOS中断子程层次特点 2. 中断类型分类 3. 调用方法 二、BIOS功能调用 1设置显示方式 ( 10H类型,00H功能 ) 2置光标位置 ( 10H类型,02H功能 ) 3清屏、清窗口 ( 10H类型,06H或07H功能 ) 三、 DOS系统功能调用 ( 21H类型中断调用 ) 1显示单字符 ( 02H功能 ) 2显示字符串 ( 09H功能 ) 3单字符输入 ( 01H、07H、08H功能 ) 4字符串输入 ( 0AH功能 ) 5检测键盘状态( 0BH功能 ) 6保存中断向量 ( 35H功能 ) (第六章介绍) 7设置中断向量 ( 25H功能 ) 1 复习内容:P339P247(新),P228P246(旧) 预内容习: P 110P140(新),P106P134(旧) 作业: 1、预习实验二预习实验二 其中:任务 1、(2)(4),2必做, 任务 1、(1)(3)选做. 实验四实验四 任务1,作为家庭作业,在计算机上调通后, 经过教师检查 签字 2 2编写完整汇编语言程序,要求上机调试出来: (1)清屏,在10行5列上显示“ Hello China!” (2)将0AH功能输入的字符串, 用09H功能显示出来。 在DOS下执行,从键盘输入123456789回车, 屏幕上能显示Hello World!吗?为什么? 用在DEBUG下查看到的data段的内容来说明。 3问题回答 下面程序,汇编连接后 3 max DB 11,?,4 DUP(?) data SEGMENT string DB Hello World! ,$ data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ; 置缓冲区地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ; 调用0AH输入功能 INT 21H LEA DX, string MOV AH, 09H ; 调用09H显示功能 INT 21H MOV AH, 4CH INT 21H ;返回DOS code ENDS END start4 第三节 BIOS和DOS中断功能调用 (教材旧P238、新P239) 一、概述 二、BIOS功能调用 三、 DOS系统功能调用 ( 21H类型中断调用 ) 5 一、概述 1BIOS 和 DOS 中断子程层次特点 2. 中断类型分类 3. 调用方法 6 1BIOS和DOS中断子程层次特点 用户程序 磁盘管理模块(DOS内核) MSDOS.SYS 系统功能 基本输入/输出 BIOS 模 块 IO.SYS 设备驱动 ROM BIOS 基本I/O 系 统 硬 件 装入命令处理模块 COMMAN D.COM 用户命令 DOS系统层次结构 7 层次特点: l ROM BIOS中的中断子程 使用IN/OUT指令直接控制外设, 实现与外设之间的输入/输出操作, 以软件形式向其上层提供服务。 l IO.SYS中的中断子程 ( 称基本输入/输出BIOS模块) 调用ROM BIOS的基本I/O功能, 向 MSDOS.SYS提供设备驱动服务 。 用户程序 磁盘管理模块(DOS内核) MSDOS.SYS 系统功能 基本输入/输出 BIOS 模 块 IO.SYS 设备驱动 ROM BIOS 基本I/O 系 统 硬 件 装 入 命令处理模块 COMMAN D.COM 用户命令 8 l MSDOS.SYS中的中断子程 ( 称DOS内核模块 ) 调用IO.SYS,实现对外设的控制。 与标准外设有两层隔离 : IO.SYS和ROM BIOS。 其中21H类型的中断子程 提供了丰富的系统服务, 称21类型的中断调用 为DOS系统(功能)调用。 用户程序 磁盘管理模块(DOS内核) MSDOS.SYS 系统功能 基本输入/输出 BIOS 模 块 IO.SYS 设备驱动 ROM BIOS 基本I/O 系 统 硬 件 装 入 命令处理模块 COMMAN D.COM 用户命令 9 l 用户编程原则 尽可能使用DOS的系统功能调用, 提高程序可移植性。 在DOS功能不能实现情况下, 考虑用BIOS功能调用。 在DOS和BIOS的中断子程 不能解决问题时, 使用IN/OUT指令直接控制硬件。 用户程序 磁盘管理模块(DOS内核) MSDOS.SYS 系统功能 基本输入/输出 BIOS 模 块 IO.SYS 设备驱动 ROM BIOS 基本I/O 系 统 硬 件 装 入 命令处理模块 COMMAN D.COM 用户命令 10 2. 中断类型分类 l 向量表中的中断类型分为七类: 处理CPU特殊操作( 除0、溢出 )的00H、04H类型。 为DEBUG调试程序设置的单步( 01H )、断点( 03H )类型。 处理CPU的NMI引脚信号的02H类型。 非屏蔽硬中断子程 处理CPU的INTR引脚信号的080FH类型。 可屏蔽类型硬中断子程 用INT指令调用的中断子程 BIOS功能调用(如101AH) DOS功能调用 (如 21H) NMI INTR 8088 11 保留类型 为DOS系统保留 1)指现在未用到,以后系统可能会用到。 2)已用到,但不向用户公开。 为用户保留 1)被系统子程嵌套调用了的类型 ( 如1BH、1CH ) 。 使用户在系统功能基础上扩充功能。 2)系统未占用类型 ( 如 60H67H )。 非中断向量类型 对应向量表中的4个单元存放的不是中断向量。 (如1DH、1EH、1FH、41H、46H、22H) 通常是一些参数表的地址信息. 12 l 中断向量分配表 13 14 15 3. 调用方法 设置入口参数 在AH设置功能号m 执行中断指令INT N 分析、应用出口参数 16 例1 单字符显示功能调用 MOV DL, A ;设置入口参数 MOV AH, 02H ;设置功能号 INT 21H ;执行中断调用 例2 单字符输入功能调用 MOV AH, 01H ;设置功能号 INT 21H ;执行中断调用 CMP AL, 0DH ;分析、应用出口参数 JZ exit 、 17 二、BIOS功能调用 l 基本输入/输出模块BIOS: 实现对输入/输出设备的控制, 内含0 1CH 等类型中断子程, 包括显示器、磁盘、键盘、打印机等标准外设的驱动程序。 (参看中断类型分配表) l BIOS功能调用指对BIOS模块中的中断子程的调用。 18 l 有关显示器 显示器通过显卡(显示适配器)连接到计算机上。 单色显示器只能显示黑白两色。 彩色显示器能显示多种颜色。 19 屏幕上各象素的显示信息,存放在显示缓冲区(显存)中 。 640KB RAM 基本内存 0000:0000 0040:0000 0050:0000 0070:0000 A0 00:0000 B000:0000 C800:0000 F600:0000 FE00:0000 FE00:1FFF 显示缓存区( 显存) 硬盘驱动器控制ROM 32KB ROM BASIC 8KB ROM BIOS IO.SYS模块 COMMAND.COM常驻模块 MSDOS.SYS模块 用户程序空间 COMMAND.COM暂驻模块 256KB ROM DOS工作区 ROM BIOS工作区 128KB RAM 保留区 1KB中断向量表 20 显示器有两种显示方式: 图形方式: 将屏幕划分为 mn的点阵,在每个点的位置显示象素, 一个点是一个象素。 文本方式 将屏幕划分为若干行和列,在每个网格位置上显示象素, 一个字符是一个象素。 21 文本方式 将屏幕划分为 m列和n行 (m n),在每个网格位置上显示象素 , 一个字符是一个象素。 8025 文本方式 A 0 列 0 行 79 列 24行 BC 22 640480 图形方式 640 点 480点 图形方式: 将屏幕划分为 mn的点阵,在每个点的位置显示象素, 一个点是一个象素。 23 在文本方式下, 对应屏幕上的每个字符, 在显示缓冲区中占用两个单元: 一个存放ASCII码, 一个存放显示属性。 41H 07H 42H 07H 61H 70H 62H 70H 、显示缓冲区 (显存) 字符A, 黑底白字 字符B, 黑底白字 字符a, 白底黑字 字符b, 白底黑字 24 例 10000111B 或 87H 表示黑底白字,闪烁 01110000B 或70H 表示白底黑字,不闪烁 16种 0000 黑 1000 灰 0010 绿 1010 浅绿 0100 红 1100 浅红 0111 灰白 1111 白 BL R G BIR G B 闪烁 背景前景 76543210 8种 000 黑 010 绿 100 红 111 白 0 不闪烁 1 闪烁 属性字节的含义: 25 据显存大小,可存储若干页的字符象素。 例 16KB 显存能存储: 8025方式,4页( 0 3 ), 802524 =16000 4025方式,8页( 0 7 ), 402528 =16000 26 1设置显示方式 入口参数 AL = 显示方式值 00 4025 黑白文本方式 01 4025 彩色文本方式 02 8025 黑白文本方式 03 8025 彩色文本方式 04 320320 彩色图形方式 功能号 AH = 00H 类型号 10H 出口参数 无 实现功能 将显示方式设置为指定形式 例 将显示方式设置为 8025 彩色文本方式 MOV AL, 03H MOV AH, 00 INT 10H 27 2. 清屏、清窗口功能 入口参数 AL = 0 CH = 窗口左上角行号 CL =窗口左上角列号 DH = 窗口右下角行号 DL =窗口右下角列号 BH = 窗口属性 功能号 AH = 06H 或 AH = 07H 类型号 10H 出口参数 无 实现功能 按给定属性清除指定的窗口内容 28 例 清除屏幕显示,将其属性置为反白(白底黑字)显示。 MOV AL, 0 ;清屏功能 MOV BH, 70H ;白底黑字 MOV CH, 0 ;左上角 行号 MOV CL, 0 ;左上角 列号 MOV DH, 24 ;右下角 行号 MOV DL, 79 ;右下角 列号 MOV AH, 6 ;功能号 INT 10H ;中断调用 29 3. 置光标位置 l 光标控制开始显示的位置, 计算机有专门的硬件控制光标的显示大小、位置。 l 光标只在文本方式中出现,在图形方式下光标消失。 0 列 0 行 79 列 24 行 5 列 1 列 1 行 2 行 30 置光标位置 入口参数 DH = 行号 DL = 列号 BH = 页号 功能号 AH= 02H 类型号 10H 出口参数 无 实现功能 将光标设置在指定的位置 31 例 将光标设置在2行5列的位置 MOV DH, 2 MOV DL, 5 MOV BH, 0 MOV AH, 2 INT 10H 0 列 0 行 79 列 24行 5 列 1 列 1 行 2 行 32 三、DOS系统功能调用 (21H类型中断调用) 1显示单字符 ( 02H功能 ) 2显示字符串 ( 09H功能 ) 3单字符输入 ( 01H、07H、08H功能 ) 4字符串输入 ( 0AH功能 ) 5检测键盘状态 ( 0BH功能 ) 6保存中断向量 ( 35H功能 ) (第六章介绍) 7设置中断向量 ( 25H功能 ) 33 1. 显示单字符 ( 02H功能 ) 入口参数 DL = 要显示字符的ASCII 码 功能号 AH=02H 类型号 INT 21H 出口参数 无 实现功能 显示指定字符,光标随动。 例 显示字符A MOV DL, A MOV AH, 02H INT 21H 34 例 使光标回到下一行的行首。 MOV DL , 0DH ;显示回车符 MOV AH , 02H INT 21H MOV DL , 0AH ;显示换行符 MOV AH , 02H INT 21H H e l l o W o r l d 35 2. 显示字符串 ( 09H功能 ) 入口参数 定义要显示的字符串, 字符串尾应为$,作为结束显示的标志。 DS : DX = 字符串的首地址 功能号 AH = 09 H 类型号 21H 出口参数 无 实现功能 显示字符串,遇 $ 停止显示,光标随动。 36 例 编程显示字符串 Tsinghua University data SEGMENT ;定义显示的子符串 stri DB Tsinghua University, $ data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置缓冲区地址于DS:DX MOV DS, AX LEA DX, stri MOV AH, 09H ;调显示功能 INT 21H MOV AH, 4CH ;返回DOS INT 21H code ENDS END start 37 l 有关键盘 键盘通过键盘接口电路与计算机连接。 键盘上的键有三种类型: 字符键 AZ, 09等 功能键 F1F12, Page Up等 组合控制键 Shift, Ctrl, Alt等 键盘上的每个键都有一个扫描码。 据扫描码可确定操作的是哪个键、是按下键还是释放键; 扫描码用一个字节表示。 低7位是扫描码的数字编码, 与键盘上的键一一对应; 最高位D7位表示键的操作状态: 当按下键时, D7=0 ; 当释放键时, D7=1 38 键盘中断子程功能(09H类型中断子程) 从键盘接口读取操作键的扫描码; 将扫描码转换成字符码; 大部分键的字符码为ASCII码, 无ASCII码键(如组合键Shift、Ctrl等)的字符码为0。 将键的扫描码、字符码存放在键盘缓冲区, 供其它有关键盘的中断子程应用。 键盘接口对按下键和释放键均向计算机发出中断申请, 如果中断响应条件满足, CPU转去执行键盘中断子程。 键盘中断子程类型号为09H。 39 3. 单字符输入 ( 01H、07H、08H功能) 入口参数 无 功能号 AH = 01H 类型号 21H 出口参数 AL = 键入字符的ASCII码 实现功能 等待从键盘输入一个字符, 并在屏幕上回显,光标移动, 检测Ctrl-Break键 40 例 利用键盘输入的字符产生分支: MOV AH, 1 ;等待从键盘输入 INT 21H CMP AL, Y ;是Y? JZ yes CMP AL, y ;是y? JZ yes no: . . . . . . JMP exit yes: . . . . . . exit: . . . 41 例 在中断向量表中查找从键盘输入的字符, 并将其个数用二进制形式显示出来。( scanskey.asm) code SEGMENT ;代码段开始 ASSUME CS:code begin: MOV AX, 0000H ;设置查找首地址 MOV DS, AX MOV SI,0000H MOV CX,0400H ;设置查找长度 MOV BX,0 ;计算值初值 MOV AH,01H ;从键盘输入 INT 21H ;输入关键字 MOV DL,AL ;保存在DL中 next: LODSB ;从串取 CMP AL, DL ;与关键字比较 JNZ point INC BX ;计算值加1 point: LOOP next ;查找结束? CALL display ;调用显示子程 MOV AH,4CH ;调用4CH功能 INT 21H ;返回DOS ;用二进制显示BX内容子程 display PROC MOV CX, 16 ;显示位数 rotate: ROL BX, 1 MOV DL, BL AND DL, 01H ADD DL, 30H MOV AH, 2H INT 21H LOOP rotate RET ;子程返回 display ENDP code ENDS ;代码段结束 END begin 42 入口参数 无 功能号 AH = 07H 类型号 21H 出口参数 AL = 键入字符的ASCII码 实现功能 等待从键盘输入一个字符, 不在屏幕上回显, 不检测Ctrl-Break键 43 例 用不带回显功能输入密码时: input: MOV AH, 07H ;等待从键盘输入 INT 21H MOV DI, AL ;存入缓冲区 CMP AL, 0DH ;是回车符? JNZ input ;不是,继续输入 check: 、 、 44 4. 字符串输入 ( 0AH 功能 ) 入口参数 DS : DX = 缓冲区的首地址 ( DS :DX ) = 限制最多输入的字符数 功能号 AH = 0AH 类型号 21H 出口参数 ( DS : DX+1 ) = 实际键入的字符(不含回车符) 从( DS : DX+2 )开始顺序存放键入的字符串, 回车符0DH为串尾最后一字符。 实现功能 等待从键盘输入字符串,并存入设定的缓冲区内, 同时回显字符串,光标随着移动, 回车符使光标回到行首。 注意事项:应按要求先定义缓冲区,再调用。 45 例 应用0AH功能输入字符串。 data SEGMENT ;定义缓冲区 max DB 11 ;定义限制最多输入个数 lenth DB ? ;用于存放实际输入个数 stri DB 11 DUP(?) ;用于存放输入的字符串 data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX , data ;置缓冲区地址于DS:DX MOV DS , AX LEA DX , max MOV AH , 0AH INT 21H ;调0A输入功能 MOX CH , 0 MOV CL , lenth ;取字符串长度放CX中 LEA BX , stri ;取字符串首址于BX中 MOV AL , BX ;应用输入字符 、 code ENDS 46 data SEGMENT ;定义缓冲区 max DB 11 ;定义限制最多输入个数 lenth DB ? ;用于存放实际输入个数 stri DB 11 DUP(?) ;用于存放输入的字符串 data ENDS 从键盘输入ABCD, 回车,内存的存放结果: 0B 04 41 42 43 44 0D 00 max 07 00 00 00 00 00 00 00 00 80a 0b0f12345690c 0d 0e lenth stri 地址 内容 DS:DX 47 如下编程与上例相同: data SEGMENT max DB 11 等价于: DB ? max DB 11, ?, 11 DUP(?) DB 11 DUP(?) data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置缓冲区地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ;调输入功能 INT 21H MOX CH, 0 MOV CL, max+1 ;取字符串长度放CX中 LEA BX, max+2 ;取字符串首址于BX中 MOV AL, BX ;应用输入字符 、 code ENDS 48 data SEGMENT max DB 11 DB ? DB 11 DUP(?) data ENDS 从键盘输入ABCD, 回车,内存的存放结果: 等价于 max DB 11,?,11 DUP(?) 0B 04 41 42 43 44 0D 00 max 07 00 00 00 00 00 00 00 00 80a 0b0f12345690c 0d 0e地址 内容 DS:DX 49 0AH功能执行过程: 若(DS:DX)字节单元的值为0,则不等待从键盘输入,结束调用 。 若(DS:DX) 字节单元的内容大于0,则等待从键盘输入, 并把输入键的ASCII码顺序存放在DS : DX+2开始的单元, 按回车键表示结束输入。 当按下键的个数超过( DS : DX )中值,发出警告声 嘟嘟 , 不再接收输入的数据, 直到输入回车键。 将实际输入的字符个数(不包括回车键)填入(DS:DX+1), 结束调用。 DS:DX 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 0AH功能注意事项: 输入的字符均带回显,且光标随字符移动。 当输入回车符结束时,也回显回车符。 表现为功能调用结束后,光标回到了行首。 回车符0DH作为一个输入的字符存放在字符串尾, 但计数输入个数时,不包括回车键。 实际最多能输入的字符数 = 限制的最多数-1 (回车符占一个) 执行完0AH功能后,DS和DX的值不变, DS:DX仍指向缓冲区的首地址。 整个缓冲区的大小应为:限制的最多数 +2 max DB 11, ? , 11 dup (?) 51 例 利用DEBUG查看0A功能输入结果。 data SEGMENT max DB 11, ?, 11 DUP(?) data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置缓冲区地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ;调输入功能 INT 21H MOV CH, 0 MOV CL, max+1 ;取输入长度到CX中 MOV AH, 4CH ;返回DOS INT 21H code ENDS END start 52 D:MASMDEBUG TEST0a.exe ;装入执行文件 -U ;反汇编程序 129E:0000 B89D12 MOV AX , 129D 129E:0003 8ED8 MOV DS , AX 129E:0005 8D160000 LEA DX , 0000 129E:0009 B40A MOV AH , 0A 129E:000B CD21 INT 21 129E:000D B500 MOV CH , 00 129E:000F 8A0E0100 MOV CL , 0001 129E:0013 B44C MOV AH , 4C 129E:0015 CD21 INT 21 、 -D 129D:0 L10 ;查看程序执行前缓冲区内容 129D:0000 0B 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 -G 000D ;执行程序 Hello ;从键盘输入字符串 Program terminated normally -D 129D:0 L10 ;查看程序执行后缓冲区内容 129D:0000 0B 05 48 65 6C 6C 6F 0D-00 00 00 00 00 00 00 00 Hello. - 53 思考: 1. 若将程序改为如下形式, 设想程序执行的结果。 data SEGMENT max DB 100H DUP ( ? ) data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置缓冲区地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ;调输入功能 INT 21H MOV AH, 4CH ;返回DOS INT 21H code ENDS END start 54 结果是:不等待输入,结束0AH功能调用。 00 00 0000 00 00 00 00 max 07 00 00 00 00 00 00 00 00 80a0b0f12345690c 0d 0e地址 内容 DS:DX 注意:由于DS:DX限制输入最大字符数为0, 所以不等待输入, 结束0AH功能调用。 原因是: 55 2. 若将程序改为如下形式, 设想程序执行的结果。 data SEGMENT max DW 100H,? ,100H DUP ( ? ) ;定义为字类型 data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置缓冲区地址于DS:DX MOV DS, AX LEA DX, max MOV AH, 0AH ;调输入功能 INT 21H MOV AH, 4CH ;返回DOS INT 21H code ENDS END start 56 结果是:不等待输入,结束0AH功能调用。 00 01 0000 00 00 00 00 max 07 00 00 00 00 00 00 00 00 80a0b0f12345690c 0d 0e地址 内容 DS:DX 注意:0AH功能以字节类型应用DS:DX指向的缓冲区 。 并不随缓冲区类型定义的变化而变化。 原因是: 57 例 编程从键盘输入字符串,给出显示提示Please input: data SEGMENT stri DB Please Input :,$ max DB 11, ?, 11 DUP(?) data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置缓冲区地址于DS:DX MOV DS, AX LEA DX, stri MOV AH, 09H ;显示提示 INT 21H LEA DX, max ;等待从键盘输入 MOV AH, 0AH INT 21H MOV AH, 4CH INT 21H code ENDS END start 利用DOS 功能调用,编写小程序 58 D:MASMDEBUG e0a09.exe -U ;查看程序 129F:0000 B89D12 MOV AX,129D 129F:0003 8ED8 MOV DS,AX 129F:0005 8D160000 LEA DX ,0000 129F:0009 B409 MOV AH ,09 129F:000B CD21 INT 21 129F:000D 8D160F00 LEA DX ,000F 129F:0011 B40A MOV AH , 0A 129F:0013 CD21 INT 21 129F:0015 B44C MOV AH , 4C 129F:0017 CD21 INT 21 -D 129D:0 L20 ;执行程序前查看 data段内容 129D:0000 50 6C 65 61 73 65 20 49-6E 70 75 74 20 3A 24 0B Please Input :$. 129D:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 -G ;执行程序 Please Input :Hello! Program terminated normally -D 129 D:0 L20 ;执行程序后查看 data段内容 129D:0000 50 6C 65 61 73 65 20 49-6E 70 75 74 20 3A 24 0B Please Input :$. 129D:0010 06 48 65 6C 6C 6F 21 0D-00 00 00 00 00 00 00 00 .Hello!. - 59 data段内存情况: stri Please Input:$ 0B 06 Hello!0D 00 00 00 00 00 00 00 00 max 60 思考:程序中少了一个 $ 符的后果。 data SEGMENT stri DB Please Input : max DB 11, ?, 11 DUP(?) data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX, data ;置缓冲区地址于DS:DX MOV DS, AX LEA DX, stri MOV AH, 09H ;显示提示 INT 21H LEA DX, max ;等待从键盘输入 MOV AH, 0AH INT 21H MOV AH, 4CH INT 21H code ENDS END start 61 data SEGMENT stri DB Please Input : max DB 11, ?, 11 DUP(?) data ENDS stri Please Input:0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 max B8 A8 12 8E D8 8D 16 00 00 B4 09 CD 21 8D 16 0E start 注意:09H功能只在遇到$符才结束显示 。 62 5检测键盘状态 ( 0BH功能 ) 入口参数 无 功能号 AH= 0BH 类型号 21H 出口参数 AL= FFH , 表示有键按下。 AL= 0 , 表示无键按下。 实现功能 检测键盘状态(通过检测键盘缓冲区实现) 63 例 利用0B功能实现按键退出循环。 、 continue: 、 、 、 MOV AH, 0BH ;检测键盘缓冲区是否有键按下 INT 21H CMP AL, 0FFH J

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论