汇编语言与计算机原理第七章
- 格式:doc
- 大小:89.00 KB
- 文档页数:12
第2章计算机中的信息表示习题参考答案1. 设机器数长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。
6413−, 12829,100,-872. 写出下列各数的原码、反码、补码表示(用8位二进制数),其中MSB 是最高位(又是符号位),LSB 是最高位。
如果是小数,小数点在MSB 之后;如果是整数,小数点在LSB 之后。
(1) -35/64 (2)23/128 (3) –127 (4)用小数表示-1 (5)用整数表示-1 解:(1)-35/64 = -0.100011原码1.1000110 反码1.0111001 补码1.0111010(2)23/128= 0.0010111原码0.0010111 反码0.0010111 补码0.0010111 (3) –127=1111111原码11111111 反码10000000 补码10000001 (4) 用小数表示-1 补码1.0000000 (5) 用整数表示-1原码10000001 反码11111110 补码1111111113. 己知[X],求[X]和X .补原4. 当十六进制数9B和FF分别表示为原码、补码、反码、移码和无符号数时,所对应的十进制数各为多少(设机器数采用一位符号位)。
答:5. 有一个字长为32位的浮点数,符号位1位,阶码8位,用移码表示,尾数23位,用补码表示;基数为2。
请写出:(1)最大数的二进制表示;(2)最小数的二进制表示; (3)规格化数所能表示数的范围。
解:用IEEE754格式(E的取值范围:1~254,留出全0和全1分别表示0和无穷大)31 30 23 22 20 0S E M(1) 最大数的二进制表示:0 11111110 11111111111111111111111即 2127(2-2-23)(2) 最小数的二进制表示:1 11111110 11111111111111111111111即 - 2127(2-2-23)(3) 规格化数所能表示数的范围:最小的正数:0 00000001 00000000000000000000001 即2-126(1+2-23)绝对最小的负数:1 00000001 00000000000000000000001 即-2-126(1+2-23)所以范围是: -2127(2-2-23)至-2-126(1+2-23) ,2-126(1+2-23)至2127(2-2-23)6. 将下列十进制数表示成IEEE754标准的32位浮点规格化数。
《微型计算机原理与接口技术》电子教案第一章:微型计算机概述1.1 微型计算机的发展历程1.2 微型计算机的组成与结构1.3 微型计算机的性能指标1.4 微型计算机的应用领域第二章:中央处理器(CPU)2.1 CPU的结构与功能2.2 指令与指令集2.3 寄存器与寄存器组2.4 CPU的工作原理与工作周期第三章:存储器3.1 内存概述3.2 随机存取存储器(RAM)3.3 只读存储器(ROM)3.4 存储器层次结构与缓存技术第四章:微机系统中的输入/输出接口4.1 I/O接口的基本概念4.2 I/O端口与地址映射4.3 I/O指令与DMA传输4.4 中断与中断处理第五章:总线与接口技术5.1 总线的概念与分类5.2 总线标准与协议5.3 接口技术与接口电路5.4 常用接口设备及其驱动程序第六章:微机系统的扩展接口6.1 扩展接口的分类与功能6.2 ISA、EISA、PCI和PCI Express总线6.3 扩展槽与扩展卡6.4 声卡、显卡、网卡等常见扩展接口设备第七章:外部设备7.1 微机系统的外部设备概述7.2 输入设备:键盘、鼠标、扫描仪等7.3 输出设备:显示器、打印机、音箱等7.4 存储设备:硬盘、固态硬盘、光盘等第八章:嵌入式系统8.1 嵌入式系统的基本概念8.2 嵌入式系统的组成与结构8.3 嵌入式处理器与实时操作系统8.4 嵌入式系统的应用案例第九章:接口编程基础9.1 接口编程的基本概念9.2 接口编程的常用方法与工具9.3 汇编语言接口编程9.4 C语言与接口编程第十章:实战项目与案例分析10.1 微机系统接口设计概述10.2 实战项目一:设计一个简单的并行接口10.3 实战项目二:基于PCI总线的数据采集系统10.4 实战项目三:嵌入式系统设计与开发10.5 案例分析:接口技术在现代计算机系统中的应用第十一章:串行通信接口11.1 串行通信的基本概念11.2 串行通信的协议与标准11.3 串行通信接口电路11.4 串口通信编程与应用第十二章:USB接口技术12.1 USB概述与历史12.2 USB接口的物理结构12.3 USB协议与数据传输12.4 USB设备驱动程序开发第十三章:网络接口与通信协议13.1 计算机网络基础13.2 局域网与广域网接口技术13.3 TCP/IP协议簇13.4 网络接口卡(NIC)与网络通信第十四章:无线通信接口14.1 无线通信技术概述14.2 Wi-Fi接口与IEEE 802.11标准14.3 Bluetooth技术与蓝牙接口14.4 移动通信接口与4G/5G网络第十五章:现代接口技术发展趋势15.1 云计算与虚拟化接口技术15.2 物联网(IoT)接口技术15.3 边缘计算与接口技术15.4 与机器学习接口技术重点和难点解析本《微型计算机原理与接口技术》电子教案涵盖了微型计算机的基本概念、组成结构、性能指标、接口技术、外部设备、嵌入式系统、接口编程以及实战项目等多个方面。
汇编语言入门教程汇编语言是一种低级编程语言,直接与计算机硬件进行交互,对于学习计算机原理和底层开发非常重要。
本文将为您介绍汇编语言的基本概念和使用方法,以及如何开始编写汇编程序。
一、汇编语言简介汇编语言是一种以指令集为基础的机器语言,它使用助记符号来代替二进制代码,使程序的编写更加直观。
汇编语言与特定的计算机体系结构紧密相关,不同的处理器有不同的汇编语言。
二、准备工作在开始学习汇编语言之前,您需要一台支持汇编语言开发的计算机和相应的开发工具。
常用的汇编语言开发工具有MASM、NASM和FASM等。
您可以根据自己的需求选择合适的工具。
三、汇编指令和寄存器1. 汇编指令汇编语言的指令包括数据传输指令、算术逻辑指令、控制转移指令等。
每个指令执行特定的操作,例如MOV指令可以将数据从一个位置传输到另一个位置。
2. 寄存器寄存器是计算机内部一小块非常快速的内存空间,用于存储临时数据和地址。
常见的寄存器有通用寄存器、状态寄存器和段寄存器等。
在编写汇编程序时,您需要了解不同寄存器的作用和使用方法。
四、汇编程序的基本结构一个典型的汇编程序由如下几个部分组成:1. 数据段:用于存储程序所需的数据2. 代码段:包含汇编指令,定义程序执行的步骤和过程3. 堆栈段:用于存储程序的运行时数据和函数调用时的参数五、汇编程序实例以下是一个简单的汇编程序示例,实现将两个数相加并将结果存储到指定的位置:```assemblysection .datanumber1 db 10number2 db 5result db ?section .textglobal _start_start:mov al, [number1] ; 将number1的值加载到AL寄存器add al, [number2] ; 将number2的值加到AL寄存器mov [result], al ; 将结果存储到result变量中mov eax, 1 ; 系统调用号:标准输出mov ebx, 1 ; 文件描述符:标准输出流mov ecx, result ; 输出的数据mov edx, 1 ; 数据的长度int 0x80 ; 调用系统中断mov eax, 0x1 ; 系统调用号:退出程序xor ebx, ebx ; 错误代码为0int 0x80 ; 调用系统中断```六、汇编语言学习资源如果您想深入学习汇编语言,以下是一些优秀的学习资源:1. 《汇编语言程序设计》(王爽):经典的汇编语言入门教材,适合初学者。
计算机组成原理与汇编语言综合练习题一、填空题1.表示一个数值数据的基本要素是、、。
2.8位二进制补码所能表示的十进制整数范围是至,前者的二进制补码表示为,后者的二进制补码表示为。
3.某机定点整数格式字长8位(包括1位符号位),用二进制表示最小负数的反码为,最大正数的反码为。
4.在数的表示范围方面,浮点比定点。
在运算规则方面,浮点比定点。
在运算精度方面,浮点比定点。
5.浮点数表示中,数据的范围由的位数据决定,数的精度由决定。
6.已知0和9的ASCII码分别为0110000和0111001,则3的ASCII码为,5的ASCII码为。
7.已知字符A的ASCII码为1000001,则字符B的ASCII码为,字符D的ASCII码为。
8.15的8421码为。
9.每条指令由两部分组成,即部分和部分。
10.有一机器字16位,其中操作码占4位。
若采用三地址寻址,则每个地址位为位,可直接寻址空间为字节;若采用单地址寻址,则每个地址位为位,可直接寻址空间为字节。
11.零地址指令是不带的机器指令,其操作数是由提供的。
12.存储器堆栈中,需要一个,用它来指明的变化。
13.运算器的主要功能是进行。
14.SN74181 ALU是一个位运算单元,由它组成16位ALU需使用片SNN74182 ,其目的是为了实现并行操作。
15.在微程序控制器中,微操作是由控制实现的最基本操作。
一条机器指令是由若干组成的微程序来解释执行的。
16.微程序顺序控制常用的两种方式是方式和方式。
17.控制器的控制方式有、和三种形式,其中方式最节省时间,方式最浪费时间,而方式介于两者之间。
18.在控制器中,指令寄存器(IR)的作用是,它的位数与有关。
19.使用Intel 2114(1K×4位)芯片32片可组成容量为 KB内存,每片片内地址线有位。
20.若有一个512K字的存储器,它由四个存储体组成,每个存储体为16K,则该存储体的字长是位。
21.计算机的I/O系统由、、和组成。
微机原理与汇编程序设计复习题微机系统与汇编语言复习题单项选择题10某2=20分填空题10某2=20分问答题:5某5=25分程序分析题4某5=20分设计应用题1某15=15分第一章微型计算机概述答:微型计算机系统是以微型计算机为主体,配上软件系统和外部设备而构成的。
第二章计算机中的数据表示1.58的非压缩BCD和压缩BCD各如何表示?写出存入D某的指令。
答:58的非压缩BCD是0508H存入D某的指令:MOVD某,0508H58的压缩BCD和是58H存入D某的指令:MOVD某,0058H2、什么是ASCII码?可表示哪些信息?按其作用可分为哪些?答:ASCII码是美国信息交换标准代码的简称,用于给西文字符编码。
包括英文字母的大小写、数字、专用字符、控制字符等;按其作用可分为:34个控制字符;10个阿拉伯数字52个英文大小写字母;32个专用符号第三章80某86微处理器及其体系结构1、8086CPU信号线RESET的功能是什么?8086复位后内部寄存器状态是怎样的?8086CPU复位后从什么单元中取第一条指令执行。
答:RESET—复位信号输入8086复位后CS=FFFFH、DS=0000H、ES=0000H、SS=0000H、IP=0000H、FR=0000H8086CPU复位后从CS某10H+IP=FFFFH某10H+0000H=FFFF0H地址单元中取第一条指令执行启动系统。
CS:IP=FFFF:0000H2、已知一个SRAM芯片的容量为8K某8和64K某8,地址线、数据线各为多少?答:SRAM芯片的容量为8K某8:地址线13条,数据线8条SRAM芯片的容量为64K某8:地址线16条、数据线8条3、指令指针寄存器IP多少位?有何功能?答:IP是一个16位的寄存器,存放EU要执行的下一条指令的偏移地址,用以控制程序中指令的执行顺序,实现对代码段指令的跟踪4、8086CPU用于地址锁存器输入允许的控制信号和用于数据收发器允许的控制信号各是什么信号?答:用于地址锁存器输入允许的控制信号是ALE,用于数据收发器允许的控制信号是DEN5、是什么引脚?答:等待测试引脚6、INTA是什么引脚?答:中断响应引脚7、M/IO是什么引脚?答:存储器访问/输入输出访问控制引脚8、8086CPU最小、最大方式时用于总线请求、允许的信号线各是什么?答:最小:HOLD---总线请求HLDA---总线响应最大:RQ/GT0、RQ/GT19、8086CPU访问存贮器和访问I/O的地址分别各为什么?可寻址的最大存贮器空间和最大I/O空间分别各为多少?答:8086CPU访问存贮器的地址是A19—A0,可寻址的最大存贮器空间是1MB.8086CPU访问I/O的地址是A15—A0,可寻址的最大I/O空间是64KB.10、什么是逻辑地址?什么是物理地址?它们各自如何表示?如何转换?答:程序中使用的存储器地址称为逻辑地址,由16位“段基址”和16位“偏移地址”(段内地址)组成。
1.什么是“程序可见”的寄存器?程序可见寄存器是指在用户程序中用到的寄存器,它们由指令来指定。
2. 80x86微处理器的基本结构寄存器组包括那些寄存器?各有何用途?基本结构寄存器组按用途分为通用寄存器、专用寄存器和段寄存器3类。
通用寄存器存放操作数或用作地址指针;专用寄存器有EIP和EFLAGS,分别存放将要执行的下一条指令的偏移地址和条件码标志、控制标志和系统标志;段寄存器存放段基址或段选择子。
3.80x86微处理器标志寄存器中各标志位有什么意义?常用的7位:CF进位标志: 在进行算术运算时,如最高位(对字操作是第15位,对字节操作是第7位)产生进位或借位时,则CF置1;否则置0。
在移位类指令中,CF用来存放移出的代码(0或1)。
PF奇偶标志: 为机器中传送信息时可能产生的代码出错情况提供检验条件。
当操作结果的最低位字节中1的个数为偶数时置1,否则置0。
AF辅助进位标志: 在进行算术运算时,如低字节中低4位(第3位向第4位)产生进位或借位时,则AF置1;否则AF置0。
ZF零标志:如指令执行结果各位全为0时,则ZF置1;否则ZF置0。
SF符号标志:其值等于运算结果的最高位。
如果把指令执行结果看作带符号数,就是结果为负,SF置1;结果为正,SF置0。
OF溢出标志: 将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则OF置1;否则OF置0。
DF方向标志: 用于串处理指令中控制处理信息的方向。
当DF位为1时,每次操作后使变址寄存器SI和DI减小;当DF位为0时,则使SI和DI增大,使串处理从低地址向高地址方向处理。
4.画出示意图,简述实模式下存储器寻址的过程。
20位物理地址如下计算(CPU中自动完成):10H×段基址+偏移地址=物理地址5. 画出示意图,简述保护模式下(无分页机制)存储器寻址的过程。
采用对用户程序透明的机制由选择子从描述子表中选择相应的描述子,得到欲访问段的段基址、段限等有关信息,再根据偏移地址访问目标存储单元。
微机原理与汇编语言课程总结篇一微机原理与汇编语言课程总结一、引言在当今信息时代,计算机技术已经成为支撑社会发展和进步的重要基石。
作为计算机技术的核心,微机原理与汇编语言在计算机科学、工程、应用等领域具有不可替代的地位。
通过学习微机原理与汇编语言,我深刻认识到这门课程对于培养我们的计算机思维和实际操作能力的重要性。
在此,我将对微机原理与汇编语言课程进行全面的总结。
二、课程内容与学习体会微机原理与汇编语言课程涵盖了计算机体系结构的基本原理、汇编语言的语法规则以及编程技巧等方面的知识。
在学习过程中,我深入了解了计算机内部的组织结构和工作原理,掌握了汇编语言的语法规则和编程技巧,并且通过实践操作加深了对理论知识的理解。
在学习过程中,我深刻体会到了微机原理与汇编语言的魅力所在。
首先,这门课程让我对计算机的工作原理有了更加深入的了解,让我明白了计算机程序是如何在底层与硬件进行交互的。
其次,汇编语言的学习使我更加熟悉计算机的指令集和操作系统的底层机制,这对于编写高效、低功耗的程序以及进行系统级调试都具有重要意义。
最后,通过实践操作,我不仅提高了自己的编程能力,还培养了发现问题、分析问题和解决问题的能力。
三、重点与难点解析在微机原理与汇编语言的学习过程中,我遇到了许多重点和难点。
其中,计算机体系结构的工作原理和汇编语言的指令集是学习的重点。
理解计算机体系结构的工作原理是掌握汇编语言的基础,而熟练掌握汇编语言的指令集则是进行编程的关键。
学习的难点主要体现在实践操作中。
例如,在学习汇编语言时,我曾遇到过程序调试中的问题,需要对程序的每条指令进行逐一排查,才能找到问题的根源。
此外,对于一些复杂的汇编程序,如何进行高效的算法设计和数据结构设计也是一大挑战。
为了克服这些难点,我积极寻求各种学习资源和方法。
通过阅读教材、参加学术讨论、请教老师和同学等方式,我逐渐掌握了解决这些难点的技巧和方法。
同时,我也意识到实践操作的重要性,只有通过不断的实践才能真正掌握和运用所学的知识。
汇编语言和指令集是计算机编程中的两个关键概念,它们之间的关系密切,对于理解计算机系统的工作原理和编写高效的程序至关重要。
汇编语言是一种低级语言,它直接与计算机硬件交互。
汇编语言基于机器语言,机器语言是计算机可以理解的低级语言,它是用二进制代码编写的。
汇编语言将机器语言的指令集中封装成更易于人类理解的格式。
例如,在x86架构的计算机中,汇编语言可能包含如“MOV AX, 1234”这样的指令,这条指令将数值1234存储在寄存器AX中。
指令集则是计算机硬件的一种特性,它是一组为特定任务设计的微小命令。
指令集定义了计算机可以执行的操作,以及这些操作如何进行。
不同的计算机架构有不同的指令集,这使得它们在执行相同的汇编语言程序时可能会有不同的性能。
指令集通常根据应用领域进行优化,例如,为了提高多媒体处理速度,计算机可能会包含专门用于这种处理的指令集。
汇编语言和指令集的关系在于,汇编语言使用指令集来控制计算机执行任务。
在汇编语言程序中,程序员指定要执行的操作,这些操作由指令集中的特定指令实现。
指令集定义了这些操作如何执行,以及它们何时执行。
因此,理解指令集对于编写汇编语言程序至关重要。
总的来说,汇编语言和指令集之间的关系是:汇编语言是人与计算机硬件之间的接口,它使用指令集中定义的指令来控制计算机执行任务。
指令集定义了这些指令如何执行,以及它们在计算机中如何工作。
理解这两个概念对于理解计算机系统的工作原理和编写高效的程序至关重要。
1 第七章 中断调用和中断服务程序 中断调用是指计算机暂时停止当前执行程序,转移到另一程序执行,执行结束后返回前面的程序继续执行。中断调用类似于过程调用,和过程调用不同的是,中断调用可以通过硬件,或者指令INT实现,前者称为硬中断调用,后者称为软中断调用。 中断所调用的过程称为中断服务程序。在IBM-PC计算机系统中,中断服务程序一般是计算机系统所提供的一组程序,用于完成输入输出等操作。程序员编写程序时,可在应用程序中直接调用中断服务程序,完成输入输出等操作,这给程序设计带来极大的方便。 中断服务程序可分为两部分:一部分驻留在ROM中,称为BIOS;另一部分由操作系统程序提供。DOS操作系统提供的中断服务程序保存在磁盘文件中(IO.SYS和IBMDOS.SYS),在系统启动后装入内存。对于同一功能操作,一般既能选择调用DOS中断服务程序,也能选择BIOS中断服务程序。例如,通过键盘输入一个字符,可以调用DOS中断21H的01H子功能,也可以调用BIOS中断16H的01H子功能。因为BIOS比DOS更靠近硬件,因此建议尽可能使用DOS功能,但是,在有些情况下必须使用BIOS功能,因为没有对应的等效的DOS功能。 BIOS和DOS的中断服务程序能处理大多数的输入输出操作,但是,有一些功能还没有提供,这就要考虑使用I/O指令在端口级上编程,这就需要详细了解端口的工作原理。 本章概要介绍BIOS和DOS这两部分中断服务程序,及其调用方法。
§7.1 中断向量和中断服务程序 一、中断号和中断号分配 IBM-PC 计算机系统给每个中断服务程序分配一个顺序编号,该编号称为中断号。中断号分配如下: 1.CPU内部控制的中断服务程序: 0号:除0中断,当程序发生除0错误时系统自动执行该中断服务程序; 1号:单步执行,当单步执行程序时,每执行一条指令后暂停程序执行; 2号:不可屏蔽中断,分配给由CPU的不可屏蔽中断申请; 3号:断点,程序执行到设置的断点时执行该中断服务程序; 4号:溢出,产生溢出错误时执行; 5号:打印屏幕,当按下PrintScreen键时执行; 6号:保留; 7号:保留。 2.中断控制器控制执行的中断服务程序: 输入输出中断是由中断控制器控制执行的中断服务程序,IBM-PC计算机的中断控制器有IRQ0~IRQ7八个输入端,其占用的中断号如下: 08H号: 时钟中断(IRQ0), 每秒钟执行18.2次; 09H号: 键盘中断(IRQ1); 2
0AH号: 保留; 0BH号: 通讯口COM2(IRQ3); 0CH号: 通讯口COM1(IRQ4); 0DH号: LPT2(IRQ5); 0EH号: 磁盘控制器(IRQ6); 0FH号: LPT1(IRQ7); 如果用两片中断控制器芯片以级连方式工作,其IRQ8~IRQ15对应中断号为70H~77H。对应的中断服务程序可查阅相关手册。 3.BIOS软中断服务程序: 软中断是指通过INT指令调用的中断服务程序,经常使用的几个重要的中断服务程序的中断号分配如下: 10H 显示器输入输出控制; 13H 磁盘存取; 14H RS-232串行口通讯; 16H 键盘输入 17H 打印输出 19H 引导装入程序 1AH 时钟 4.DOS软中断服务程序: 中断号20H~2FH分配给DOS系统,其中包括前面介绍过的21H号中断,为DOS系统功能调用。这里不作具体介绍,如果要详细了解可以查阅有关书籍或技术手册。
二、中断向量和中断向量表 中断服务程序的入口地址称为中断向量,由段基址和偏移地址两部分组成。DOS系统在启动时将所有中断程序的入口地址按中断号顺序存放在内存的0000:0000~0000:03FF空间,称为中断向量表。每个中断向量在中断向量表中占四个字节,前两个字节为中断服务程序入口的偏移地址,后两个字节为段基址。只要知道某个中断服务程序的中断号,用中断号乘4,就可以计算出该中断服务程序入口地址存放在中断向量表的何处。例如DOS系统功能服务程序的中断号为21H,其中断向量存放在地址0000:0084H处。使用DEBUG程序可以查看DOS系统功能服务程序的入口地址:
-D 0:84 0000:0080 45 04 A7 08-4F 03 F0 0B 8A 03 F0 0B E...O....... 0000:0090 17 03 F0 0B BC 0F C9 00-C6 0F C9 00 D0 0F C9 00 ................ 0000:00A0 6C 10 C9 00 66 04 70 00-B4 05 1E 03 6C 10 C9 00 l...f.p.....l... 0000:00B0 6C 10 C9 00 6C 10 C9 00-62 01 0F 0A CC 01 10 0A l...l...b....... 0000:00C0 EA E4 0F C9 00 EF 00 F0-6C 10 C9 00 01 00 88 09 ........l.......
可以看到其入口地址为08A7:0445(注意低地址存放的是低字节,高低址存放的是高字节)。实际上知道了某个中断服务程序的入口地址,也可以通过CALL指令调用该中断服务程序,例如DOS功能调用的入口地址为08A7:0445,可以通过指令“CALL 08A7:0445”调用DOS功能。进入DEBUG, 3
使用“A”命令输入下面程序段: -A 126B:0100 MOV AH, 02 126B:0102 MOV DL, 41 126B:0104 CALL 08A7: 0445 执行上面程序: -G=100,109 结果输出字符“A”。 软中断程序调用,就是通过INT指令调用系统中断服务程序。上面例子看到,通过中断号可以从中断向量表中查出对应中断服务程序的入口地址,然后通过CALL指令调用,但是过于繁琐。一般调用中断服务程序可以通过硬件,或使用INT指令。INT指令一般格式为: INT 中断号 计算机执行INT指令的过程是: 根据中断号计算对应中断向量在中断向量表中地址; 从中断向量表中取出中断服务程序的入口地址,将中断服务程序段基址装入CS寄存器,偏移地址装入IP; 计算机就转移到对应的中断服务程序执行; 中断服务程序执行完毕返回被中断的程序继续执行。
§7.2 BIOS中断服务程序调用 由计算机厂商提供的BIOS中断服务程序固化在ROM内,计算机启动后,这些中断服务程序的入口地址被装入中断向量表,用户可以通过硬件方式,或软中断方式调用BIOS中的中断服务程序。下面通过示例说明BIOS的键盘输入和视频输出中断服务程序的使用。
一、键盘中断服务程序 键盘中断服务程序中断号为16H,包含0H、1H、2H三个子功能。 0h号子功能:读键盘输入的字符。当调用该子功能时,计算机等待接收键盘输入。如果没有按键按下,则等待;如果有按键按下,则将按键的扫描码装入AH寄存器,将按键的ASCII码装入AL寄存器。因为键盘上的功能键,如,F1、F2、…等,没有对应的ASCII码,所以,当按下的如果是功能键,AL=0,AH=对应键的扫描码。因此,可以调用0h号子功能识别是否有功能键按下。 01H号子功能:从键盘缓冲区读一个字符,当键盘缓冲区不为空时,将ZF置0,将读取的ASCII码装入AL寄存器;当键盘缓冲区为空时,将ZF置1后返回。 02H号子功能:读取双态键,或组合键的状态,返回值AL的对应位含义如图7.2.1所示。 4
图7.2.1 键盘状态字节 例721:调用键盘中断0H子功能,接收一个按键,如果是功能键F1打印字母“A”,如果是其它功能键打印字母“B”,否则不打印。 DISP MACRO X ; ;显示字符宏定义 MOV DL, X MOV AH, 02H INT 21H ENDM
.MODEL SMALL .CODE START: MOV AH, 0 INT 16H ;调用中断16h的0号子功能 CMP AL,0 ;是功能键否? JNE EXIT ;不是功能键,结束。 CMP AH, 3BH ;是功能键F1否?3B是功能键F1的扫描码。 JNE F2 DISP "A" JMP EXIT F2: DISP "B" EXIT: MOV AH, 4CH INT 21H END START 例722:分别调用16H的01h和0H子功能接收键盘输入,并打印输入健的ASCII码。 ROL14 MACRO Z ; 循环左移四次宏定义 PUSH CX MOV CL, 4 ROL Z, CL
D7 D6 D5 D4 D3 D2 D1 D0 按下右shift键 按下左shift键 按下Ctrl键 按下Alt键 Scrollock键状态 Numlock键状态 Capslock键状态 Insert键状态 5
POP CX ENDM
DISP MACRO ; 显示字符宏定义 PUSH AX MOV AH, 02H INT 21H POP AX ENDM
.MODEL SMALL .CODE OUT16 PROC NEAR ; 十六进制数输出过程 MOV CX, 2 L1:ROL14 AL MOV DL, AL AND DL, 0FH CMP DL, 9 JBE L2 ADD DL, 7 L2:ADD dl, 30h DISP LOOP L1 MOV DL, 'H' DISP RET OUT16 ENDP 调用01H子功能: START: L3: MOV AH, 1 INT 16H ; 调用中断16h的01H号子功能 JZ L3 ; 键盘缓冲如果为空返回L3 CALL OUT16 ; 调用十六进制数输出子程序 MOV AH, 4CH INT 21H END START 调用0H子功能: START: MOV AH, 0 INT 16H ; 调用中断16h的0号子功能