
微机原理与接口技术钱晓捷版课后习题答案.pdf
72页微机原理与接口技术”习题解答第1章 微型计算机系统( 习题1.1)简答题( 解答)①处理器每个单位时间可以处理的二进制数据位数称计算机字长②总线信号分成三组,分别是数据总线、地址总线和控制总线③ PC机主存采用DRAM组成④高速缓冲存储器Cache是处理器与主存之间速度很快但容量较小的存储器⑤ ROM-BIOS是 “ 基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能⑥ 中 断 是 CPU正常执行程序的流程被某种原因打断、并暂时停止, 转向执行事先安排好 的 段 处 理 程 序 ,待该处理程序结束后仍返回被中断的指令继续执行的过程⑦主板芯片组是主板的核心部件,它提供主板上的关键逻辑电路⑧ MASM是微软开发的宏汇编程序⑨指令的处理过程处理器的“ 取指一译码一执行周期” 是指处理器从主存储器读取指 令 ( 简称取指),翻译指令代码的功能( 简称译码),然后执行指令所规定的操作( 简称执行)的过程⑩机器语言层,即指令集结构 学生很多认为是:汇编语言层前 4 章主要涉及汇编语言,但本书还有很多处理器原理等内容)( 习题1.2)判断题①错②错③对④错⑤对⑥错⑦错⑧对⑨错⑩错(( 解答)① Central Processing U n it,中央处理单元,处理器② 1MB, 4GB③ 216, 64KB④ EXE, COM ( BAT老师讲的)⑤ Instruction Set Architecture⑥目录⑦ MMX, SSE3⑧ 64⑨ IBM, DOS⑩ PCI( 习题1.4)说明微型计算机系统的硬件组成及各部分作用。
解答)CPU: CPU也称处理器,是微机的核心它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元( 即寄存器)处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调利控制存储器:存储器是存放程序和数据的部件外部设备:外部设备是指可与微机进行交互的输入( Input)设备和输出( Output)设备,也称I/O设备I/O设备通过I/O接口与主机连接总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号 习题1.5)什么是通用微处理器、单 片 机 ( 微控制器)、DSP芯片、嵌入式系统?( 解答)通用微处理器:适合较广的应用领域的微处理器,例如装在PC机、笔记本电脑、工作站、服务器上的微处理器单片机:是指通常用于控制领域的微处理器芯片,其内部除CPU外还集成了计算机的其他•些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统DSP芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,内部集成有高速乘法器,能够进行快速乘法和加法运算嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统。
习题1.6)综述Intel 80x86系列处理器在指令集方面的发展 解答〕8086奠定了基本的16位指令集, 80286提供了保护方式的各种指令,80386将指令集全面提升为32位,80486融入了浮点数据处理指令,奔腾系列陆续增加了多媒体指令MMX、SSE、SSE2和 SSE 3,最新的奔腾4 处理器还支持64位指令集题外话:大家可以通过阅读相关资料、查询互联网获得更加详细的发展情况可以考虑组织成一篇或多篇论文 习题1.7)区别如下概念:助记符、汇编语言、汇编语言程序和汇编程序 解答)助记符:人们采用便于记忆、并能描述指令功能的符号来表示机器指令操作码,该符号称为指令助记符汇编语言:用助记符表示的指令以及使用它们编写程序的规则就形成汇编语言汇编语言程序:用汇编语言书写的程序就是汇编语言程序,或称汇编语言源程序汇编程序: 汇编语言源程序要翻译成机器语言程序才可以由处理器执行这个翻译的过程称为“ 汇编”,完成汇编工作的程序就是汇编程序( Assembler) 习题1.8)区别如下概念:路径、绝对路径、相对路径、当前目录系统磁盘上存在某个可执行文件,但在DOS环境输入其文件名却提示没有这个文件,是什么原因?( 解答)路径: 操作系统以目录形式管理磁盘上的文件,文件所在的分区和目录就是该文件的路径。
绝对路径:从根目录到文件所在目录的完整路径称为“ 绝对路径”是保证文件唯一性的标示方法相对路径:从系统当前目录到文件所在目录的路径称为相对路径当前目录;用户当前所在的目录就是当前目录指明的路径不正确,或者执行了另外一个同名的文件( 习题1.9)什么是摩尔定律?它能永久成立吗?( 解答)每 18个月,集成电路的性能将提高一倍,而其价格将降低一半 ( 1965年,Intel公司的创始人之一摩尔预言:集成电路上的晶体管密度每年将翻倍现在这个预言通常表达为:每 隔 18个月硅片密度( 晶体管容量)将翻倍;也常被表达为:每 18个月,集成电路的性能将提高一倍,而其价格将降低一半由于电子器件的物理极限在悄然逼近,摩尔定律不会永远持续 习题1.10)冯 • 诺依曼计算机的基本设计思想是什么?( 解答)采用二进制形式表示数据和指令指令由操作码和地址码组成将程序和数据存放在存储器中, 计算机在工作时从存储器取出指令加以执行,自动完成计算任务这就是“ 存储程序”和 “ 程序控制” ( 简称存储程序控制)的概念指令的执行是顺序的,即一般按照指令在存储器中存放的顺序执行, 程序分支由转移指令实现计算机由存储器、运算器、控制器、输入设备和输出设备五大基本部件组成,并规定了5 部分的基本功能。
习题1.11)计算机系统通常划分为哪儿个层次?普通计算机用户和软件开发人员对计算机系统的认 识 样 吗 ?( 解答)最上层是用户层第 5 层是高级语言层第 4 层是汇编语言层第 3 层是操作系统层第 2 层是机器语言层第 1层是控制层第 0 层是数字电路层普通计算机用户和软件人员对计算机系统的认识并不一样 普通计算机用户看到的计算机,也就是我们最熟悉的计算机,属于用户层,而软件人员看到的属于高级语言层或是汇编语言层 习题1.12)什么是系列机和兼容机?你怎样理解计算机中的“ 兼容”特性?例如,你可以用PC机为例,谈谈你对软件兼容( 或兼容性)的认识,说明为什么PC机具有如此强大的生命力?( 解答)系列机是指在一个厂家生产的具有相同计算机结构,但具有不同组成和实现的一系列( Family)不同档次、不同型号的机器兼容机是指不同厂家生产的具有相同计算机结构( 不同的组成和实现)的计算机兼容是一个广泛的概念,包括软件兼容、硬件兼容、系统兼容等其中软件兼容是指同一个软件可以不加修改地运行于体系结构相同的各档机器,结果一样但运行时间可能不同软件兼容可从机器性能和推出时间分成向上( 向下)和 向 前 ( 向后)兼容。
例 如 3 2 位 PC机就陆续增加了对浮点处理指令、多媒体指令等的支持在保证向后兼容的前提下,不断改进其组成和实现,延续计算机结构的生命,才使得P C机具有如此强大的生命力 习题1.13)英特尔公司最新Intel 80x86处理器是什么?请通过查阅相关资料•( 如英特尔公司网站) ,说明其主要特点和采用的新技术[ 解答)酷睿2多核处理器 习题1.14)说明高级语言、汇编语言、机器语言三者的区别,谈谈你对汇编语言的认识 解答)高级语言与具体的计算机硬件无关, 其表达方式接近于所描述的问题,易为人们接受和掌握,用高级语言编写程序要比低级语言容易得多,并大大简化了程序的编制和调试,使编程效率得到大幅度的提高 而汇编语言是为了便于理解与记忆, 将机器指令用助记符代替而形成的一种语言 汇编语言的语句通常与机器指令对应,因此,汇编语言与具体的计算机有关,属于低级语言它比机器语言直观,容易理解和记忆,用汇编语言编写的程序也比机器语言易阅读、易排错机器语言的每一条机器指令都是二进制形式的指令代码,计算机硬件可以直接识别高级语言程序通常也需要翻译成汇编语言程序,再进一步翻译成机器语言代码 习题1.15)为了更好地进行编程实践,请进入Windows操作系统下的控制台环境( 或M S-DOS模拟环境),练习常用命令。
第2章处理器结构( 习题2.1)简答题( 解答)① A L U是算术逻辑运算单元,负责处理器所能进行的各种运算,主要是算术运算和逻辑运算②取指是指从主存取出指令代码通过总线传输到处理器内部指令寄存器的过程8086分成总线接口单元和指令执行单元,可以独立操作在执行单元执行一条指令的同时,总线接口单元可以读取下一条指令,等到执行时不需要进行取指了,所以称为预取③ Pentium采用分离的Cache结构,一个用做指令Cache, 一个用做数据Cache④堆栈的存取原则是先进后出( 也称为后进先出)操作方式存取数据⑤标志寄存器主要保存反映指令执行结果和控制指令执行形式的有关状态⑥执行了一条加法指令后,发现Z F = 1 ,表明运算结果为0⑦ 没 有 ⑧汇编语言的标识符大小写不敏感,即表示字母大小写不同、但表示同一个符号⑨ 不 会 ⑩指令的操作数需要通过存储器地址或I /O地址,才能查找到数据本身,故称数据寻址方式 习题2.2)判断题( 解答)①错②对③对④对⑤错⑥对⑦对⑧错⑨对⑩对( 习题2.3)填空题( 解答)① 32, DX, DH② 16③段地址, 偏移地址,EIP, IP④ 00100110, 0⑤ 73C00H, 73800H⑥ EBX, ECX, ESI, EDL EBP, ESP⑦ 实 地 址 ,64KB⑧ A S M ,目标模块,FLAT⑨立即数寻址、寄存器寻址和存储器寻址⑩ DS, SS( 习题2.4)处理器内部具有n 那 3 个基本部分? 8086分为哪两大功能部件?其各自的主要功能是什么?( 解答)处理器内部有ALU、寄存器和指令处理三个基本单元。
8086有两大功能部件:总线接口单元和执行单元总线接口单元:管理着8086与系统总线的接口,负责处理器对存储器和外设进行访问8086所有对外操作必须通过B1U和这些总线进行执行单元EU:负责指令译码、数据运算和指令执行 习题2⑸8086怎样实现了最简单的指令流水线?( 解答)8086中,指令的读取是在BIU单元,而指令的执行是在E U 单元因为BIU和 EU 两个单元相互独立、分别完成各自操作,所以可以并行操作也就是说,在 EU 单元对一个指令进行译码执行时, BIU单元可以同时对后续指令进行读取;这就是最简单的指令流水线技术 习题2.6)什么是标志?什么是IA-32处理器的状态标志、 控制标志和系统标志?说明状态标志在标志寄存器EFLAGS的位置和含义 解答)标志:用于反映指令执行结果或控制指令执行形式的一个或多个二进制数位例如,有些指令执行后会影响有关标志位;有些指令的执行要利用相关标志状态标志:用来记录程序运行结果的状态信息控制标志:DF标志,控制字符串操作的地址方向系统标志:用于控制处理器执行指令的方式状态标志在标志寄存器EFLAGS中的位置和含义如下:31 11 198765432100……OFSFZFAFPFCF( 习题2.7)举例说明CF和 OF标志的差异。
解答)进位标志CF表示无符号数运算结果是否超出范围,超出范围后加匕进位或借位,运算结果仍然正确;溢出标志OF表示有符号数运算结果是否超出范围,如果超出范围,运算结果已经不正确例 1: 3AH + 7CH=B6H无符号数运算:58+124=182,范围内,无进位有符号数运算:58+124=182,范围外,有溢出例 2: AAH + 7CH = ©26H无符号数运算:170+124 = 2 9 4 ,范围外,有进位有符号数运算:—86+124=28,范围内,无溢出 习题2.8)什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达( 均为十六进制形式):① FFFF : 0 ② 40 : 17 ③ 2000 : 4500 ④ B821 : 4567( 解答)物理地址: 在处理器地址总线上输出的地址称为物理地址 每个存储单元有一个唯一的物理地址逻辑地址:在处理器内部、程序员编程时采用逻辑地址,采 用 “ 段地址:偏移地址“ 形式某个存储单元可以有多个逻辑地址,即处于不同起点的逻辑段中,但其物理地址是唯一的逻辑地址转换成物理地址: 逻辑地址由处理器在输出之前转换为物理地址。
将逻辑地址中的段地址左移二进制4 位 ( 对 应 16进制是一位,即乘以16), 加上偏移地址就得到20位物理地址① FFFFH:0=FFFF0H② 40H: 17H=00417H③ 2000H:4500H=24500H④ B821H:4567H=BC777H( 习题2.9)IA-32处理器有哪三类基本段,各是什么用途?( 解答)IA-32处理器有代码段、数据段、堆栈段三类基本段代码段:存放程序的指令代码程序的指令代码必须安排在代码段,否则将无法正常执行数据段: 存放当前运行程序所用的数据程序中的数据默认是存放在数据段,也可以存放在其他逻辑段中堆栈段:主存中堆栈所在的区域程序使用的堆栈一定在堆栈段 习题2.10)什么是平展存储模型、段式存储模型和实地址存储模型?( 解答)平展存储模型下, 对程序来说存储器是一个连续的地址空间,称为线性地址空间程序需要的代码、数据和堆栈都包含在这个地址空间中段式存储模型下, 对程序来说存储器由一组独立的地址空间组成, 独立的地址空间称为段通常,代码、数据和堆栈位于分开的段中实地址存储模型是8086处理器的存储模型它是段式存储模型的特例,其线性地址空间最大为1MB容量,由最大为64KB的多个段组成。
习题2.11)什么是实地址方式、保护方式和虚拟8086方式?它们分别使用什么存储模型?( 解答)实地址方式:与 8086具有相同的基本结构,只能寻址1MB物理存储器空间,逻辑段最大不超过64KB;但可以使用32位寄存器、32位操作数和32位寻址方式;相当于可以进行32位处理的快速8086o实地址工作方式只能支持实地址存储模型保护方式:具有强大的段页式存储管理和特权与保护能力,使用全部32条地址总线,可寻址4GB物理存储器保护方式通过描述符实现分段存储管理,每个逻辑段可达4GBo处理器工作在保护方式时,可以使用平展或段式存储模型虚拟8086方式: 在保护方式下运行的类似实方式的运行环境,只能在1MB存储空间下使 用 “ 16位段” 处理器工作在虚拟8086方式时,只能使用实地址存储模型 习题2.12)汇编语句有哪两种,每个语句由哪4 个部分组成?( 解答)汇编语句有两种:执行性语句( 处理器指令)、说明性语句( 伪指令)每个语句有:标号、指令助记符、操作数或参数、注释4 个部分组成 习题2.13)汇编语言程序的开发有哪4 个步骤,分别利用什么程序完成、产生什么输出文件 解答)汇编语言程序的开发有4 个步骤:编辑:用文本编辑器形成一个以ASM为扩展名的源程序文件。
汇编:用汇编程序将ASM文件转换为OBJ模块文件连接:用连接程序将一个或多个目标文件链接成一个EXE或 COM可执行文件调试:用调试程序排除错误,生成正确的可执行文件 习题2.14)MASM汇编语言中,下面哪些是程序员可以使用的正确的标识符FFH, DS, Oxvab, Again, next, @data, h_ascii, 6364b, .exit, small( 解答)FFH, Again, next, h_ascii( 习题2.15)给出IA-32处理器的32位寻址方式和16位寻址方式的组成公式,并说明各部分作用 解答)① 32位存储器寻址方式的组成公式32位有效地址= 基址寄存器+ ( 变址寄存器X 比例)十位移量其中的4 个组成部分是:• 基址寄存器——任何8 个 32位通用寄存器之一;•变址寄存器——除 ESP之外的任何32位通用寄存器之一:•比例一 可 以 是1, 2, 4或8 ( 因为操作数的长度可以是1, 2, 4或8字 节 );•位移量一可以是8或32位有符号值② 16位存储器寻址方式的组成公式16位有效地址= 基址寄存器+变址寄存器十位移量其中基址寄存器只能是B X或BP ,变址寄存器只能是S I或D L位移量是8或16位有符号值。
习题2.16)说明下列指令中源操作数的寻址方式?假设V A R D是一个双字变量 1) mov edx,1234h(2) movedx,vard(3) movedx,ebx(4) mov edx,[ebx](5) movedx,[ebx+1234h](6) mov edx,vard[ebx](7) movedx,[ebx+edi](8) movedx,[ebx+edi+1234h](9) movedx,vard[esi+edi]( 10) movedx,[ebp*4]( 解答)①立即数②直接③寄存器④寄存器间接⑤寄存器相对© 寄存器相对⑦基址变址⑧相对基址变址⑨相对基址变址⑩带比例寻址( 习题2.17)使用本书配套的软件包( 或者按照本书说明)创建M ASM开发环境,通过编辑例题2-1和例题2-2程序、汇编连接生成可执行程序和列表文件,掌握汇编语言的开发第 3 章数据处理( 习题3 .1 )简答题( 解答)① 没 有 使用二进制8位表达无符号整数,257没有对应的编码② 字 符“ F”的A SCI I码就是数值4 6 H,所以没有区别③汇编程序在汇编过程中对数值表达式计算,得到一个确定的数值,故称数值表达式为常量。
④数值500大于一个字节所能表达的数据量,所以不能为字节变量赋值⑤ 源 、目标寄存器位数不同,不能用该指令进行数据交换⑥前者在指令执行时获得偏移地址,是正确的:但后者的OF F SET只能在汇编阶段获得偏移地址,但此时寄存器内容是不可知的,所以无法获得偏移地址⑦ I N C, D EC, N E G和N O T指令的操作数既是源操作数也是目的操作数⑧ 大小写字母转换利用它们的A S C I I码相差20H o⑨加减法不区别无符号数和有符号数,但根据运算结果分别设置标志寄存器的C F和O F标志,可利用C F和O F进行区别⑩逻辑与运算规则类似二进制的乘法,所以称其为逻辑乘 习题3.2)判断题错对⑤⑩错对④⑨对错③⑧对错②⑦—对对答①⑥( 习题3.3)填空题[ 解答)① B YTE, OF F SET② 97, 6 1 ,小写字母a③ 0DH ( 13) , 0AH ( 10)④ 8843H⑤ DW ORD, 4, WORD PTR X Y Z⑥ 3⑦ 78894111⑧ 0, 0, 0⑨ 0123456788765432H , 83H⑩ 4( 习题3 4 )①答①②③④解F列十六进制数表示无符号整数,请转换为十进制形式的真值:F F H ② 0H ③ 5EH ④ EF H255094239( 习题3 .5 )将下列十进制数真值转换为压缩B C D码:① 12 ② 24 ③ 68 @ 99( 解答)① 12H② 24H③ 68H④ 99H( 习题3.6)将下列压缩B C D码转换为十进制数:① 10010001 ② 10001001 ③ 00110110 @ 10010000答① ② ③ ④力牛角91893690(习题3.7)将下列十进制数用8位二进制补码表示:①。
②127 ③-127 ④-57(解答)① 00000000② 01111111(3)10000001④ 11000111(习题3.8)进行十六进制数据的加减运算,并说明是否有进位或借位:① 1234H+7802H② F034H+5AB0H③ C051H-I234H④ 9876H-ABCDH(解答)① 1234H+7802H=8A36H,无进位② F034H+5AB0H=4AF4H,有进位@ CO51H-1234H=BE1DH,无借位④ 9876H- ABCDH=ECA9H,有借位(习题3.9)数码0〜9、大写字母A〜Z、小写字母a〜z对应的ASCII码分别是多少? ASCII码0DH和0AH分别对应什么字符?(解答)数码0〜9对应的ASCII码依次是30H〜39H大写字母A〜Z对应的ASCII码依次是:41H〜5AH小写字母a〜z对应的ASCH码依次是:61〜7AHASCII码0DH和0AH分别对应的是回车和换行字符习题3.10)设置一个数据段,按照如下要求定义变量或符号常量:①my 1 b为字符串变量:Personal Computer②my2b为用十进制数表示的字节变量:20③my3b为用十六进制数表示的字节变量:20④my4b为用二进制数表示的字节变量:20⑤my5w为20个未赋值的字变量⑥my6c为100的常量⑦ my7c 表示字符串:Personal Computer(解答)mylb byte * Personal Computer,my2b byte 20my3b byte 14hmy4b byte 00010100bmy5w word 20 dup( ?)my6c = 100my7c equ 解答)num equ 5datalist byte -10, 2, 5, 4, ?( 习题3.12)从低地址开始以字节为单位,用十六进制形式给出下列语句依次分配的数值:byte 'ABC', 10, 10h,'EF',3 dup( T,?, 3 dup( 4) )word lOh,-5,3 dup( ?)( 解答)41 42 43 0A 10 45 46 FF 00 04 04 04 FF00 04 04 04FF 00 04 04 0410 00 FBFF 00 00 00 00 00 00( 习题3 3 3 )设在某个程序中有如下片段,请写出每条传送指令执行后寄存器EAX的内容:; 数据段org 100hvarw word 1234h,5678hvarb byte 3,4vard dword 12345678hbuff byte 10 dup ( ?)mess byte 'hello,; 代码段mov eax,offset messmov eax,type buff+type mess+type vardmov eax,sizeof varw+sizeof buff+sizeof messmov eax,lengthof varw+lengthof vard答①②③④解EAX=0114HEAX = 0006HEAX=0013HEAX=0003H( 习题3.14)按照如下输出格式,在屏幕上显示ASCII表:I 0 1 2 3 4 5 6 7 8 9 A B C D E F一 一 +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -20 |।' 、#30 | 0 1 2 340 | @ A B C50 | P Q R S60 Ia b c70 I p q r s . . .表格最上一行的数字是对应列ASCII代码值的低4位 ( 用十六进制形式),而表格左边的数字对应行ASCII代码值的高4位 ( 用十六进制形式)。 编程在数据段直接构造这样的表格二填写相应ASCII代码值( 不是字符本身), 然后使用字符串显示子程序DISPMSG实现显示 解答)include io32. inc.datatable byte ' 0 1 2 3 4 5 6 7 8 9 A B C D E F) , 13, 10byte '---+------------------------------------', 13, 10byte' 20r, 20h, 20h, 21h, 20h, 22h, 20h, 23h, 20h, 24 h, 20h, 25h, 20h, 26h, 20h, 27h, 20h, 28h, 20h, 29h, 20hbyte 2ah, 20h, 2bh, 20h, 2ch, 20h, 2dh, 20h, 2eh, 20h, 2fh, 20h, 13, 10byte'30r, 30h, 20h, 31h, 20h, 32h, 20h, 33h, 20h, 34 h, 20h, 35h, 20h, 36h, 20h, 37h, 20h, 38h, 20h, 39h, 20hbyte 3ah, 20h, 3bh, 20h, 3ch, 20h, 3dh, 20h, 3eh, 20h, 3fh, 20h, 13, 10byte'4 0I', 4 0h, 20h,4 1h, 20h, 4 2h, 20h, 4 3h, 20h, 4 4 h, 20h, 4 5h, 20h, 4 6h, 20h, 4 7h, 20h, 4 8h, 20h, 4 9h, 20hbyte 4 ah, 20h, 4 bh, 20h, 4 ch, 20h, 4 dh, 20h, 4 eh, 20h, 4 fh, 20h, 13, 10byte' 50|', 50h, 20h, 51h, 20h, 52h, 20h, 53h, 20h, 54 h, 20h, 55h, 20h, 56h, 20h, 57h, 20h, 58h, 20h, 59h, 20hbyte 5ah, 20h, 5bh, 20h, 5ch, 20h, 5dh, 20h, 5eh, 20h, 5fh, 20h, 13, 10byte'60I', 60h, 20h, 61h, 20h, 62h, 20h, 63h, 20h, 64 h, 20h, 65h, 20h, 66h, 20h, 67h, 20h, 68h, 20h, 69h, 20hbyte 6ah, 20h, 6bh, 20h, 6ch, 20h, 6dh, 20h, 6eh, 20h, 6fh, 20h, 13, 10byte'7070h, 20h, 71h, 20h, 72h, 20h, 73h, 20h, 74 h, 20h, 75h, 20h, 76h, 20h, 77h, 20h, 78h, 20h, 79h, 20hbyte 7ah, 20h, 7bh, 20h, 7ch, 20h, 7dh, 20h, 7eh, 20h, 7fh, 20h, 13, 10byte 0.codestart:mov eax,offset tablecall dispmsgexit 0end start( 习题3.15)数据段有如下定义,IA-32处理器将以小端方式保存在主存:var dword 1234 5678h现以字节为单位按地址从低到高的顺序, 写出这个变量内容。 并说明如下指令的执行结果:mov eax, varEAX =mov bx, varBX=mov ex,var+2c x = _mov dl,varDL=mov dh,var+3DH=可以编程使用十六进制字节显示子程序DSIPHB顺序显示各个字节进行验证, 还可以使用十六进制双字显示子程序DSIPHD显示该数据进行对比 解答)小端方式采用“ 低对低、高对高”,即低字节数据存放在低地址存储单元、高字节数据存放在高地址存储单元以字节为单位按地址从低到高的顺序, var变量的内容: 78H、 56H、34H、12Ho;E A X = 1 2 3 4 5 6 7 8 H;B X = 5 6 7 8 H;C X = 1 2 3 4 H;D L = 7 8 H;D H = 1 2 H( 习题3.16)使用若干MOV指令实现交互指令"XCHGEBXJEDI] ” 功能 解答)p u s h e a x ;可以没有m o v e a x , e b xm o v e b x ,[ e d i ]m o v [ e d i ] ,e a xp o p e a x ;可以没有( 习题3.17)假设当前ESP=0012FFB0H,说明下面每条指令后,ESP等于多少?p u s h e a xp u s h d xp u s h d w o r d p t r 0 f 7 9 hp o p e a xp o p w o r d p t r [ b x ]p o p e b x( 解答)ESP=0012FFACHESP=0012FFAAHESP=0012FFA6HESP=0012FFAAHESP=0012FFACHESP=0012FFB0H( 习题3.18)已知数字0〜 9 对应的格雷码依次为:18H、34H、05H、06H、09H、OAH、OCH、11H>12H、14H;请为如下程序的每条指令加上注释,说明每条指令的功能和执行结果。 数据段t a b l e b y t e 1 8 h , 3 4 h , 0 5 h , 0 6 h , 0 9 h , O a h , O c h , Uh , 1 2 h , 1 4 h;代码段m o v e b x ,o f f s e t t a b l em o v a l , 8x l a t为了验证你的判断,不妨使用本书的I/O 子程序库提供的子程序DISPHB显示换码后AL的值如果不使用XLAT指令,应如何修改?( 解答);数据段t a b l e b y t e 1 8 h , 3 4 h , 0 5 h , 0 6 h , 0 9 h , O a h , O c h , 1 l h , 1 2 h , 1 4 h ;定义格雷码表;代码段m o v e b x , o f f s e t t a b l em o v a l , 8x l a t不使用XLAT指令:m o v e b x ,o f f s e t t a b l em o v e a x ,0m o v a l , 8m o v a l ,[ e a x +e b x ];£1 ^ = 格雷码表首地址;A L = 8;A L = 1 2 H ( 8的格雷码);£8乂= 格雷码表首地址;A L = 8;A L = 1 2 H ( 8的格雷码)( 习题3.19)请分别用一条汇编语言指令完成如下功能:( 1 ) 把 EBX寄存器和EDX寄存器的内容相加,结果存入EDX寄存器。 2 ) 用寄存器EBX和 ESI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中 3 ) 用 EBX和位移量0B2H的寄存器相对寻址方式把存储器中的一个双字和ECX寄存器的内容相加,并把结果送回存储器中 4 ) 将 32位变量VARD与数3412H相加,并把结果送回该存储单元中 5 ) 把数0A0H与 EAX寄存器的内容相加,并把结果送回EAX中 解答)① a d d e d x ,e b x② a d d a l , [ e b x +e s i ]③ a d d [ b x +0 b 2 h ] , e x@ a d d v a r w , 3 4 1 2 h⑤ a d d e a x , O a O h( 习题3.20)分别执行如下程序片断,说明每条指令的执行结果:1解答)(1);E A X = 8 0 H;E A X = 8 3 H , C F = O , S F = O;E A X = 1 0 3 H , C F = O , 0 F = 0;E A X = 1 0 6 H , C F = O , Z F = O(2);E A X = 1 0 0;E A X = 3 0 0 , C F = O(3);E A X = 1 0 0;E A X = 4 4 , C F = 1 ( 包含 2 5 6 的进位含义:2 5 6 + 4 4 = 3 0 0 )(4)m o v a l , 7 fh;AL = 7 F Hs u b a l , 8;AL = 7 7 H , CF =O , S F =Os u b a l , 8 0 h;AL =F 7 H , CF =1 , 0 F =ls b b a l , 3;AL =F 3 H , CF =0 , Z F =O( 习题3.21)给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和 PF的状态:m o v a l , 8 9 ha d d a l , a la d d a l , 9 d hcm p a l , O b chs u b a l , a ld e c a lin c a l( 解答)m o v a l , 8 9 hAL =8 9 HCF Z F S FO FP Fa d da l , a lAL =1 2 H10011a d da l , 9 d hAL =0 AF H00101cm pa l , O b chAL = O AF H10101s u ba l , a lAL =O O H01001d e c a lAL =0 F F H00101in c a lAL = O O H01001( 习题3.22)有 两 个6 4位无符号整数存放在变量bufferl和buffer?中,定义数据、EDX.EAX-bufferl -buffer2功能。 编写代码完成( 解答)b u ffe r lb u ffe r 2;数据段q wo r d 6 7 8 8 3 0 0 0 hq wo r d 6 7 7 6 2 0 0 0 h;代码段m o v e a x, d wo r dm o v e d x, d wo r ds u b e a x, d wo r ds b b e d x, d wo r dp t r b u ffe r lp t r b u ffe r l + 4p t r b u ffe r 2p t r b u ffe r 2 + 4( 习题3.23)分别执行如下程序片断,说明每条指令的执行结果:( 解答)( 1);E S I=9 CH;E S I=8 0 H;E S I=F F H;E S I=O 1 H( 2);E AX =1 O 1 O B ( 可以有前导0 , 下同);E AX =0 0 1 0 B, CF =1;E AX =0 1 0 0 B, CF =0;E AX = 0 0 0 0 B, CF =0( 3);E AX =1 0 1 1 B ( 可以有前导0 , 下同);E AX =1 0 1 1 0 0 B, CF =O;E AX = 1 0 1 1 0 B, CF =0;E AX =1 0 1 1 1 B, CF =0( 4);E AX =O , CF =0 , 0 F =0; Z F =1 , S F = O , P F =1( 习题3.24)3.24给出下列各条指令执行后A X 的结果,以及状态标志CF、OF、SF、ZF、P F 的状太心 Omov ax, 1470hand ax, axor ax, axxor ax, axnot axtest ax, OfOfOh( 解答)mov ax,1470hA X = 1470H CF OF SF ZF PFand ax, axA X = 1470H 0 0 0 0 0or ax, axA X = 1470H 0 0 0 0 0xor ax, axA X = O O O O H 0 0 0 1 1not axAX=FFFFH 0 0 0 1 1test ax, OfOfOhAX= OFOFOH 00101( 习题3.25)逻辑运算指令怎么实现复位、置位和求反功能?( 解答)AND指令同“0” 与实现复位,OR指令同"1” 或实现置位,XOR同 “ 1” 异或实现求反。 习题3.26)说明如下程序段的功能:mov ecx,16mov bx,axnext: shr ax, 1rcr edx, 1shr bx, 1rcr edx, 1loop nextmov eax, edx( 解答)将 AX的每一位依次重复一次,所得的32位结果保存于EAX中 习题3.27)编程将一个64位数据逻辑左移3 位,假设这个数据已经保存在EDX.EAX寄存器对中 解答);代码段mov ecx, 3again: shl eax,1rcl edx, 1loop again( 习题3.28)编程将一个压缩BCD码 变 量 ( 例如92H)转换为对应的ASCII码,然后调用D1SPC子程 序 ( 在输入输出子程序库中)显示 解答);数据段b e d b yt e 9 2 h;代码段m o v a l , b e ds hr a l , 4a d d a l , 3 0 hca l l d is p em o v a l , b e da n d a l , O fha d d a l , 3 0 hca l l d is p e( 习题3.29)以 MOVS指令为例,说明串操作指令的寻址特点,并用M OV和 ADD等指令实现MOVSD的 功 能 ( 假设DF=0)。 解答)MOVS指令的功能是:ES:[ED1|-DS:|ES1] ; ESI-ESI±1/2/4, ED1-EDI + 1/2/4由此可看出串操作指令的寻址特点:源操作数用寄存器ESI间接寻址,默认在D S指向的数据段,但可以改变;目的操作数用寄存器EDI间接寻址,只能在ES指向的附加数据段;每执行一次串操作,源指针ESI和目的指针EDI将自动修改:±1 ( 字节),±2 ( 字)或±4 ( 双字)指针的增量和减量控制由DF标志确定,D F = 0 ,进行增量;D F = 1 ,进行减量p u s h e a xm o v e a x, [ e s i]m o v e s : [ e d i] , e a xa d d e s i, 4a d d e d i, 4( 习题3.30)m s g说明如下程序执行后的显示结果:;数据段b yt e 'W E L L DO N E ', 0;代码段m o vm o va ga in : m o va d dm o va d de cx, ( l e n gt ho f m s g) - le b x, o ffs e t m s ga l , [ e b x]a l , 2 0 h[ e b x] , a le b x, 1l o o p a ga inm o v e a x, o ffs e t m s gca l l d is p m s g如 果 将 其 语 句 "mov ebx,offset m sg"改 为 "xorebx,ebx” ,则利用EBX间接寻址的两个语句如何修改成EBX寄存器相对寻址,就可以实现同样功能?( 解答)显示结果:welldoneEBX寄存器相对寻址:m o v a l , m s g[ e b x]m o v m s g[ e b x] , a l( 习题3 . 3 1 )下面程序的功能是将数组AR R AY 1的每个元素加固定值( 8 0 0 0 H ),将和保存在数组AR R AY 2。 在空白处填入适当的语句或语句的一部分 数据段a r r a y 1 d wo r d 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0a r r a y2 d wo r d 1 0 d u p ( ?);代码段m o v e cx, l e n gt ho f a r r a y 1m o v e b x, 0a ga in : m o v e a x, a r r a y1 [ e b x* 4 ]a d d e a x, 8 0 0 0 hm o v_ _ _ _ _ _ _ _ _ _ _ _ _ _a d d e b x, _ _ _ _ _ _ _ _ _ _l o o p a ga in( 解答)m o v a r r a y2 [ e b x* 4 ] , e a xa d d e b x, 1.( 习题3 . 3 2 )上机实现本章的例题程序,编程实现本章的习题程序第4章汇编语言程序设计( 习题4 . 1 )简答题( 解答)① 当 同一个程序被操作系统安排到不同的存储区域执行时,指令间的位移没有改变,目标地址采用相对寻址可方便操作系统的灵活调度。 ② 数据通信时,数据的某一位用做传输数据的奇偶校验位,数据中包括校验位在内的“ 1 ”的个数恒为奇数,就是奇校验;恒为偶数,就是偶校验③ 无符号数和有符号数的操作影响两组不同的标志状态位,故判断两个无符号数和有符号数的大小关系要利用不同的标志位组合,所以有对应的两组指令④ 双分支结构中两个分支体之间的J M P指令, 用于实现结束前一个分支回到共同的出口作用⑤ 完整的子程序注释可方便程序员调用该子程序,子程序注释包括子程序名、子程序功能、入口参数和出口参数、调用注意事项和其他说明等⑥ 子程序保持堆栈平衡, 才能保证执行R E T指令时当前栈顶的内容是正确的返回地址主程序也要保持堆栈平衡, 这样才能释放传递参数占用的堆栈空间, 否则多次调用该子程序可能就致使堆栈溢出⑦“ 传值”是传递参数的一个拷贝,被调用程序改变这个参数不影响调用程序; “ 传址”时,被调用程序可能修改通过地址引用的变量内容⑧ I N C L UD E语句包含的是文本文件、是源程序文件的一部分;I N C L UD E L I B语句包含的是子程序库文件⑨取长补短⑩ W i n d o w s程序在运行时需要加载其配套的动态链接库D L L文件,当其没有被搜索到时就会提示不存在。 ( 习 题4.2)判断题—对对答①⑥刀牛角( 习 题4.3)② 错⑦ 对填空题( § )错⑧ 错④ 错⑨ 对⑤ 错⑩ 错( 解答)① 相 对 寻 址 ,间接寻址,直接寻址,间接寻址② 1256H , 3280H③ 3721H , 1④ EAH⑤ 循 环 初 始 ,循环控制⑥ REPT1标号的地址© TESTENDP, ENDM⑧ EB P⑨ PUB LIC, EXTERN⑩ 38H ODH OAH( 习 题4.4)为了验证例题4-1程序的执行路径,可以在每个标号前后增加显示功能例如使得程序运 行 后 显 示 数 码1234 解 答 )j m p l a b l l ;相对寻址n o pm o v e a x , * ? ’c a l l d i s p cl a b l 1: m o v e a x ,' 1'c a l l d i s p cj m p n e a r p t r l a b 12 ;相对近转移n o pm o v e a x ,' ? 'c a l l d i s p c1 a b l 2: m o v e a x ,' 2'c a l l d i s p cm o v e a x , o f f s e t l a b l 3j m p e a x ;寄存器间接寻址n o pm o v e a x ,' ? ’c a l l d i s p cl a b l 3: m o v e a x ,'3'c a l 1 d i s p cm o v e a x ,o f f s e t l a b l 4m o v n v a r , e a xj m p n v a r ;存储器间接寻址n o pm o v e a x ," ? 'c a l l d i s p cl a b l 4 : m o v e a x ,* 4 *c a l l d i s p c( 习题4.5)使 用 “SHR EAX,2” 将 EAX中的D1位移入CF标志,然后用JC/JNC指令替代JZ/JNZ指令完成例题4-3的功能。 解答)m o v e a x ,5 6 h;假设一个数据s h r e a x , 2;D I 位移入C F 标志j n c n o m;D I =0 条件成立,转移;余同原程序( 习题4.6)执行如下程序片断后,CM P指令分别使得5 个状态标志CF、ZF、SF、O F和 P F 为 0还是为1 ? 它会使得哪些条件转移指令指令Jcc的条件成立、发生转移?m o v e a x , 20hc m p e a x , 80h( 解答)CF=1 ZF=0 SF=1 OF=0 PF=1可以使得条件成立、发生转移的指令有:JC JS JP JNZ JNO( 习题4.7)将例题4-4程序修改为实现偶校验建议进一步增加显示有关提示信息的功能,使得程序具有更加良好的交互性 解答)i n c l u d e i o 32. i n c.d a t am s g l b y t e , P l e a s e i n p u t a c h a r a c t e r : ',0m s g 2 b y t e , Th e A SC I I c o d e o f t h e c h a r a t e r y o u e n t e r e d i s : ',0m s g 3 b y t e * Th e c o d e w i t h e v e n p a r i t y i s : ',0・ c o d es t a r t :m o v e a x , o f f s e t m s g lc a l l d i s p m s gc a l l r e a d cc a l 1 d i s p c r l fm o v e b x ,e a xm o v e a x ,o f f s e t m s g 2c a l l d i s p m s gm o v e a x ,e b xc a l 1 d i s p b bc a l l d i s p c r l fa n d a l , 7f hj p n e x to r a l , 80hn e x t : m o v e b x , e a xm o v e a x , o f f s e t m s g 3c a l 1 d i s p m s gm o v e a x ,e b xc a l l d i s p b be x i t 0e n d s t a r t( 习题4.8)在采用奇偶校验传输数据的接收端应该验证数据传输的正确性。 例如, 如果采用偶校验,那么在接收到的数据中,其包含“ 1” 的个数应该为0 或偶数个,否则说明出现传输错误现在,在接收端编写一个这样的程序,如果偶校验不正确显示错误信息,传输正确则继续假设传送字节数据、最高位作为校验位,接收到的数据已经保存在Rdata变量中 解答)d o n e :R d a t ae r r o r;数据段b y t e 5 7h ; 保存接收的数据b y t e ' E r r o r !',0;代码段m o v a l ,R d a t aa n d a l ,O f f h ; 标志P F 反映“ 1”的个数j p d o n e ; 个数为偶数,正确继续m o v e a x , o f f s e t e r r o r ; 个数为奇数,显示出错c a l 1 d i s p m s g( 习题4.9)指令CDQ将 EAX符号扩展到E D X ,即:EAX最高为0 , 则EDX=0: EAX最高为1,则 EDX = FFFFFFFFH请编程实现该指令功能 解 答 1)t e s t e a x , 8000hj z n e x t 1m o v e d x ,O f f f f f f f f hj m p d o n en e x t 1: m o v d x ,0d o n e :( 解答2)使用移位指令更好。 r o l e a x ,1r c r e d x , 1s a r e d x , 31r o r e a x , 1;测试最高位;最高位为0 ( Z F = 1), 转移到标号N E X T1;最高位为1 , 顺序执行:设置E D X = F F F F F F F F H;无条件转移,跳过另一个分支;最高位为0 转移到此执行: 设置E D X = O( 习题4.10)编程,首先测试双字变量DVAR的最高位,如果为1 , 则显示字母“L” ;如果最高位不 为 1 , 则继续测试最低位,如果最低位为1 , 则显示字母“R” ;如果最低位也不为1 , 则显示字母“M” 解答);数据段d v a r d w o r d 5 7h;代码段m o v e a x ,d v a rt e s t e a x , 80000000hj n z n e x t lt e s t e a x , 1j n z n e x t rm o v a l , ' M 'j m p d o n en e x t !:m o v a l , ' L 'j m p d o n en e x t r :m o v a l , * R 'd o n e :c a l l d i s p c( 习 题 4.11)编写一个程序,先提示输入数字“ Input Number:。 〜 9”,然后在下一行显示输入的数字,结束;如果不是键入了 〜 9 数字,就提示错误"Error!” ,继续等待输入数字d o n e :( 习题4.12)有一个首地址为ARRAY的 20个双字的数组,说明下列程序段的功能 解答);数据段i nms ge rms gb yt e * I np ut numb e r(0^ 9 ): , 0b yt e O d h , O a h , * Erro r! I np ut a g a i n: ', 0;代码段mo v e a x , o f f s e t i nms g ;提示输入数字c a ll d i s p ms ga g a i n:c a ll re a d c ;等待按键c mp a l, ' O ' ;数字 < 0?j b e rd i s pc mp a l, * 9 ' ;数字 > 9 ?j a e rd i s pc a ll d i s p c rlfc a ll d i s p cj mp d o nee rd i s p : mo v e a x , o f f s e t e rms gc a l 1 d i s p ms gj mp a g a i n( 解答)s umlp :mo v e c x , 2 0mo v e a x , 0mo v e s i , e a xa d d e a x , a rra y[ e s i ]a d d e s i , 4lo o p s umlpmo v t o t a l, e a x求这20个双字的和,保存在TOTAL变量,不关进心进位和溢出。 习题4.13)编程中经常要记录某个字符出现的次数 现编程记录某个字符串中空格出现的次数,结果保存在SPACE单元 解答);数据段s t ri ngs p a c eb yt e 'Do yo u h a ve f un wi t h As s e mb ly ?', 0 ; 以 0 结尾的字符串d wo rd ?;代码段mo v e s i , o f f s e t s t ri ngx o r e b x , e b x ; EBX 用于记录空格数a g a i n:mo v a l, [ e s i ]c mp a l, 0j z d o nec mp a l, 2 0h ; 空格的 AS CI I 码是 2 0Hj ne ne x t ; 不相等、不是空格,转移i nc b x ; 相等、是空格,空格个数加1ne x t :i nc e s ij mp a g a i n ; 继续循环d o ne :mo v s p a c e , e b x ; 保存结果( 习 题4.14)编 写 计 算100个16位正整数之和的程序如 果 和 不 超 过16位 字 的 范 围( 65535),则保 存 其 和 到WORDSUM,如 超 过 则 显 示'O verflow !'。 解 答 );数据段a rra ywo rd s ume rro rwo rd 2 005 , 2 008, 9 8 d up (13 9 4 ) ;假设 100 个 16 位正整数wo rd ?b yt e 1 O ve rf lo w !,, 0;代码段a nd e b x , 0mo v e c x , 100x o r a x , a xa g a i n:a d d a x , a rra y[ e b x *2 ]j c o ve ri nc e b xlo o p a g a i nmo v wo rd s um, a xo ve r:mo v e a x , o f f s e t e rro rc a ll d i s p ms g( 习 题4.15)在一个已知长度的字符串中查找是否包含“BUG”子字符串如果存在,显 示“Y”否 则 显 示“N” 解 答 );数据段s t ri ngc o untb ugb yt e 'I f yo u f i nd a ny e rro r i n t h e p ro g ra m, yo u c a n DEBU G i t .’= s i z e o f s t ri ngb yt e 'BU G ';代码段mo v e c x , c o untmo v e d i , o f f s e t s t ri ngL I :mo v e s i , o f f s e t b ugp us h e d imo v e d x , s i z e o f b ugL N :mo v a l, [ e s i ]c mp [ e d i ] , a lj ne L 2i nc e s ii nc e d id e c e d xj ne L Np o p e d imo v a l, * Y 'j mp L 3L 2 : p o p e d ii nc e d ilo o p L Imo v a l, ' N 'L 3 : c a ll d i s p c( 习题4.16)主存中有一个8 位压缩BCD码数据,保存在一个双字变量中。 现在需要进行显示,但要求不显示前导0由于位数较多,需要利用循环实现,但如何处理前导0 和数据中间的0呢?不妨设置一个标记编程实现 解答);数据段b e dd wo rd 003 71002 h;代码段mo v e s i , b e dc mp e s i , 0j nz g o o nmo v a l, ' O 'c a ll d i s p cj mp d o neg o o n:mo v e c x , 8x o r e b x , e b x ; EBX =O , 表示可能是前导0a g a i n:ro l e s i , 4mo v e a x , e s ia nd e a x , O f h ; EAX 低 4 位保存当前要显示的BCD码c mp e b x , 0 ; EBX W O , 说明不是前导0 , 要显示j nz d i s p ; EBX =O , 说明可能是前导0c mp e a x , 0jz ne x t ; EAX =O , 说明是前导0 , 不显示mo v e b x , 1 ; EAX W O , 没有前导 0 了,令 EBX =1W Od i s p :a d d a l, 3 0hc a ll d i s p cne x t :lo o p a g a i nd o ne :( 习题4.17)已知一个字符串的长度, 剔除其中所有的空格字符。 请从字符串最后一个字符开始逐个向前判断、并进行处理 解答);数据段s t ri ng b yt e , L e t us h a ve a t ry !, , O d h , O a h , 0;代码段mo v e c x , s i z e o f s t ri ngc mp e c x , 2j b d o nele a e a x , s t ri ng ;显示处理前的字符串c a ll d i s p ms gd o ne :( 习题4.18)第 3 章习题3.14在屏幕上显示ASCII表, 现仅在数据段设置表格缓冲区, 编程将ASCH代码值填入留出位置的表格,然后调用显示功能实现( 需要利用双重循环)mo v e s i , e c xd e c e s io ut lp :c mp s t ri ng [ e s i ] ,J ;检测是否是空格j nz ne x t ;不是空格继续循环mo v e d i , e s i ;是空格,进入剔除空格分支d e c e c xi nlp :i nc e d imo v a l, s t ri ng [ e d i ] ;前移一个位置mo v s t ri ng [ e d i - l] , a lc mp e d i , e c xj b i nlpne x t :d e c e s i ;继续进行c mp e s i , 0j nz o ut lp ;为 0 结束le a e a x , s t ri ng ;显示处理后的字符串c a ll d i s p ms g( 解答)i nc lud e i o 3 2 . i nc.d a t at a b leb yt e ' 0 1 234567 8 9A B C D E F), 13 , 10b yt e - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , 13 , 10t a b ib yt e 6 d up (3 6 d up (?), 13 , 10)b yt e 0.c o d es t a rt :mo v e b x , o f f s e t t a b imo v e d x , ' | 02 'mo v a x , 2 02 0hmo v e s i , 6a g a i nO :mo v [ e b x ] , e d xa d d e b x , 4mo v e c x , 16a g a i nl: mo v wo rd p t r [ e b x ] , a xa d d e b x , 2i nc a llo o p a g a i nla d d e b x , 2a d d e d x , 1d e c e s ij nz a g a i nOmo v e a x , o f f s e t t a b lec a ll d i s p ms ge x i t 0e nd s t a rt( 习题4.19)请按如下说明编写子程序:子程序功能:把用ASCII码表示的两位十进制数转换为压缩BCD码入口参数:DH=十位数的ASCII码,D L = j位数的ASCII码出口参数:AL=对应BCD码( 解答)a s c t ob p r ocs h l d h , 4mov a l, d ha nd d l, Ofhor a l, d lr e ta s c t ob e nd p( 习题4.20)乘法的非压缩BCD码调整指令AAM执行的操作是:A H -A L+10的商,AL-AL+10的余数。 利用AAM可以实现将AL中的100内数据转换为ASCII码,程序如下:x or a h , a ha a ma d d a x , 3 0 3 0 h利用这段程序,编写一个显示AL中数值( 0〜 99)的子程序 解答)d is p 9 9 p r ocx or a h , a ha a ma d d a x , 3 0 3 0 hp u s h a xmov a l, a hc a l 1 d i s p cp op a xc a ll d is p cr e td i s p 9 9 e nd p( 习题4.21)编写一个源程序, 在键盘上按一个键, 将其返回的ASCH码值显示出来,如果按下ESC键 ( 对应ASCII码 是 1BH)则程序退出请调用书中的HTOASC子程序 解答);代码段,主程序a g a in: c a l 1 r e a d cc mp a l, I b hjz d onemov b l, a lmov a l, * : ‘c a ll d is p cmov a l, b lr ol a l, 4c a l 1 h t oa s c ;调用子程序c a l 1 d is p cmov a l, b lc a ll h t oa s cc a ll d is p cc a l 1 d i s p c r lfjmp a g a ind one :;显示•个字符;调用子程序;显示一个字符( 习题4.22)编写一个子程序,它以二进制形式显示EAX中 32位数据,并设计一个主程序验证。 解答);代码段,主程序d i s p b dmov e a x , 8 F 9 8 F F 0 0 Hc a ll d is p b d;代码段,子程序p r oc;调用子程序;32位二进制数的输出d b d :p u s h e c xp u s h e d xmov e c x , 3 2r ol e a x , 1;要输出的字符个数;A L循环左移一位p u s h e a xa nd a l, Olha d d a l, 3 0 hc a ll d is p cp op e a xloop d b dp op e d xp op e c xr e td is p b d e nd p( 习题4.23);取A L最低位;转化成相应的AS CL L码值;以二进制的形式显示将例题4-16的 32位寄存器改用16位寄存器,仅实现输出一2匕 〜 + 2小一1之间的数据 解答);数据段a r r a y w or d 1 2 3 4 5 , - 1 2 3 4 , 3 2 7 6 7 , - 3 2 7 6 8 , 0 , 6 6 7w r it e b u f b y t e 6 d u p ( 0 );代码段,主程序mov e c x , le ng t h of a r r a ymov e b x , 0a g a in:mov a x , a r r a y [ e b x * 2 ]c a l 1 w r i t ec a ll d is p c r lfinc e b x ; 此时e b x代表a r r a y中的第几个数d e c e c x ; 此时e c x代表循环的次数jnz a g a in;代码段,子程序w r it e p r oc ; 子程序开始p u s h e b xp u s h e c xp u s h e d xmov e b x , offs e t w r it e b u f ; e b x 指向显示缓冲区t e s t a x , a xjnz w r it e lmov b y t e p t r [ e b x ] , 3 0 hinc e b xjmp w r it e 5w r it e l: ; 若不为0则首先判断是正是负jns w r it e 2 ;若为正则跳过下面两步到w r it e 2mov b y t e p t r [ e b x ] , '」inc e b xne g a xw r it e 2 :mov e x , 1 0p u s h e x ; 将。 * =1 0压入栈,作为退出标志w r it e 3 : ; w r it e 3是让e a x循环除以1 0并把余数的AS CI I码压入栈e mp a x , 0jz w r it e 4x or d x , d xd iv e xa d d d x , 3 0 hp u s h d xjmp w r it e 3w r it e 4 : ;余数的AS CI I码出栈,遇到1 0终止并转到w r it e 5显示结果p op d xe mp d x , e xjz w r it e 5mov b y t e p t r [ e b x ] , d linc e b xjmp w r it e 4w r it e 5 : ; 显示结果mov b y t e p t r [ e b x ] , 0mov e a x , offs e t w r it e b u fc a ll d is p ms gp op e d xp op e c xp op e b xr e tw r it e e nd p( 习题4.24)参考例题4-17,编写实现32位无符号整数输入的子程序,并设计一个主程序验证。 1解答);数据段c ou nt = 1 0a r r a y d w or d c ou nt d u p ( 0 )t e mp d w or d ?r e a d b u f b y t e 3 0 d u p ( 0 )e r r ms g b y t e JI np u t e r r or , e nt e r a g a in! ) , 1 3 , 1 0 , 0ms g l b y t e 1 I np u t t e n u ns ig ne d nu mb e r s , e a c h nu mb e r e nd s w it h e nt e r ke y / , 1 3 , 1 0 , 0ms g 2 b y t e ' Ch e c k t h e nu mb e r s y ou r inp u t t e d :?, 1 3 , 1 0 , 0「代码段,主程序mov e a x , offs e t ms g lc a ll d is p ms gmov e c x , c ou ntmov e b x , offs e t a r r a ya g a in:c a ll r e a dmov e a x , t e mpmov [ e b x ] , e a xa d d e b x , 4d e c e c xjnz a g a inmov e a x , offs e t ms g 2c a ll d is p ms gmov e d x , offs e t a r r a ymov e c x , c ou ntne x t :mov e a x , [ e d x ]c a l 1 d is p u idc a ll d is p c r lfa d d e d x , 4d e c e c xjnz ne x t;代码段,子程序r e a d p r ocp u s h e a xp u s h e c xp u s h e b xp u s h e d xr e a d O:mov e a x , offs e t r e a d b u fc a ll r e a d ms gt e s t e a x , e a xjz r e a d e r rc mp e a x , 1 2ja r e a d e r rmov e d x , offs e t r e a d b u fx or e b x , e b xx or e c x , e c xmov a l, [ e d x ]c mp a l,J + ,jz r e a d lc mp a l, 'jnz r e a d 2jmp r e a d e r rr e a d l:inc e d xmov a l, [ e d x ]t e s t a l, a ljz r e a d 3; 如果为0 , 则说明该字符串已结束r e a d 2 :c mp a l, , O'jb r e a d e r rc mp a l, , 9 *ja r e a d e r rs u b a l, 3 0 himu l e b x , 1 0 ; c b x 用来存储处理过的数据jc r e a d e r rmov z x e a x , a la d d e b x , e a xjnc r e a d lr e a d e r r :mov e a x , offs e t e r r ms gc a ll d is p ms gjmp r e a d Or e a d 3 :mov t e mp , e b xp op e d xp op e b xp op e c xp op e a xr e tr e a d e nd p( 习题4.25)编写一个计算字节校验和的子程序。 所 谓 “ 校验利”是指不记进位的累加,常用于检查信息的正确性主程序提供入口参数,有数据个数和数据缓冲区的首地址子程序回送求和结果这个出口参数 解答)计算字节校验和的通用过程入口参数:D S :E BX = 数组的段地址:偏移地址,E CX =元素个数出口参数:AL =校验和说明:除E AX /E BX /E CX 外,不影响其他寄存器c h e c k s u ms u m :c h e c k s u mp r o cxo r a l , a la d d a l , [ e b x]i n c e b xl o o p s u mr e te n d p累加器清0求和指向下一个字节( 习题4.26)编制3 个子程序把一个32位二进制数用8 位十六进制形式在屏幕上显示出来,分别运用如下3 种参数传递方法,并配合3 个主程序验证它 1) 采用EAX寄存器传递这个32位二进制数( 2 ) 采用temp变量传递这个32位二进制数( 3 ) 采用堆栈方法传递这个32位二进制数( 解答)(1); 数据段w v a rd i s pd h w l :d h w 2:d i s pw o r d 307281AF H; 代码段,主程序m o v e a x, w v a rc a l 1 d i s pm o v a l ,1 H *c a l l d i s p c;代码段,子程序p r o cp u s h e b xp u s h e c xm o v e c x, 8r o l e a x, 4m o v e b x, e a xa n d a l , O f ha d d a l , 30hc m p a l , , 9)j b e d h w 2a d d a l , 7c a l l d i s p cm o v e a x, e b xl o o p d h w lp o p e c xp o p e b xr e te n d p;8 位; 转换为AS CI I 码w v a rt e m pd i s pd h w l :d h w 2:(2); 数据段w o r d 307281AF Hw o r d ?; 代码段,主程序m o v e a x, w v a rm o v t e m p , e a xc a l l d i s pm o v a l , ' H 'c a l l d i s p c;代码段,子程序p r o cp u s h e b xp u s h e c xm o v e c x, 8m o v e a x, t e m pr o l e a x, 4m o v e b x, e a xa n d a l , O f ha d d a l , 30hc m p a l , ’ 9'j b e d h w 2a d d a l , 7c a l l d i s p c;8 位; 转换为A S C H 码;显示一个字符m o v e a x, e b xl o o p d h w lp o p e c xp o p e b xr e td i s pe n d p(3);数据段w v a rw o r d 307281AF H; 代码段,主程序p u s h w v a rc a l l d i s pa d d e s p , 4m o v a l , ' H 'c a l l d i s p c;代码段,子程序d i s pp r o cp u s h e b pm o v e b p , e s pp u s h e b xp u s h e c xm o v e c x, 8 ; 8 位m o v e a x, [ e b p + 8]d h w l :r o l e a x, 4m o v e b x, e a xa n d a l , 0f h ; 转换为 AS CI I 码a d d a l , 30hc m p a l , ' 9'j b e d h w 2a d d a l , 7d h w 2:c a l l d i s p cm o v e a x, e b xl o o p d h w lp o p e c xp o p e b xp o p e b pr e td i s pe n d p( 习题4.27)配合例题4-11的简单加密解密程序,设计一个输入密码的程序,将输入的若干字符经过适当算法得到一个字节量密码。 解答);e x0427. a s mk e ym s g Op a s s we r r o r m s gb u f n u mi n c l u d e i o 32. i n c. d a t ab y t e ?b y t e * E n t e r y o u r p a s s w o r d :J, 0b y t e 50 d u p ( 0)b y t e J P a s s w o r d e r r o r , i n p u t a g a i n ! ?, 13, 10, 0= 255b u f f e rm s g lm s g 2m s g 3s t a r t :b y t e b u f n u m + 1 d u p ( 0) ;b y t e , E n t e r m e s s g e : ' , 0b y t e J E n c r y p t e d m e s s a g e : ' , 0b y t e * O r i g i n a l m e s s g e : ' , 0. c o d e定义键盘输入需要的缓冲区m o v e a x, o f f s e t m s g O;提示输入加密密码c a l l d i s p m s gm o v e a x, o f f s e t p a s s w ; 设置入口参数 E AXc a l l r e a d m s g ; 调用输入字符中子程序输入密码a g a i n O :m o v e c x, e a xd e c e c xxo r e b x, e b xm o v a l , p a s s w [ e b x]i n c e b xxo r a l , p a s s w [ e b x];使用简单的异或方法得到加密关键字l o o p a g a i n Om o v k e y , a l ; 保存加密关键字e n c r y p t :a g a i n :m o v e a x, o f f s e t m s g lc a l 1 d i s p m s gm o v e a x, o f f s e t b u f f e rc a l l r e a d m s gp u s h e a xm o v e c x, e a xxo r e b x, e b xm o v a l , k e yxo r b u f f e r [ e b x] , a li n c e b xd e c e c xj n z e n c r y p tm o v e a x, o f f s e tc a l 1 d i s p m s gm o v e a x, o f f s e tc a l l d i s p m s gc a l l d i s p c r l f;提示输入字符串;设置入口参数E AX调用输入字符串子程序字符个数保存进入堆栈E CX = 实际输入的字符个数,作为循环的次数E BX指向输入字符AL =加密关键字异或加密;等同于指令:l o o p e n c r y p t;处理下一个字符m s g 2b u f f e r ; 显示加密后的密文m o v e a x, o f f s e t m s g Oc a l l d i s p m s gm o v e a x, o f f s e t p a s s w;提示输入解密密码; 设置入口参数E AXc a l 1 r e a d m s g;调用输入字符串子程序输入密码a g a i n l :m o v e c x, e a xd e c e c xxo r e b x, e b xm o v a l , p a s s w [ e b x]i n c e b xxo r a l , p a s s w [ e b x];使用简单的异或方法得到加密关键字l o o p a g a i n lc m p k e y , a l ; 与原加密关键字比较jz n e xt ; 密码相同,则进行解密m o v e a x, o f f s e t e r r o r m s g ; 提示输入解密密码错误c a l 1 d i s p m s gj m p a g a i nn e xt : p o pe c x ; 从堆栈弹出字符个数,作为循环的次数xo re b x, e b x ; E BX 指向输入字符d e c r y p t : m o va l , k e y ; AL =解密关键字xo rb u f f e r [ e b x] , a l ; 异或解密i n ce b xd e ce c xj n zd e c r y p t ; 处理下一个字符m o ve a x, o f f s e t m s g 3c a l l d i s p m s gm o v e a x, o f f s e t b u f f e r ; 显示解密后的明文c a l l d i s p m s g( 习题4.28)设计一个简单的两个整数的加法器程序。 解答);e x0428. a s mi n c l u d e i o 32. i n c. d a t am s g l b y t e 1 E n t e r t h e i n t e g e r s :J, 13, 10, 0m s g 2 b y t e 13, 10, * E n t e r s p a c e t o c o n t i n u e ! E n t e r a n y o t h e r k e y t o e x i t , 13, 10, 0. c o d es t a r t :m o v e a x, o f f s e t m s g lc a l l d i s p m s gc a l 1 r e a d s i dm o v e b x, e a xm o v a l , ' + 'c a l 1 d i s p cc a l l d i s p c r l fc a l l r e a d s i da d d e b x, e a xm o v a l , ' ='c a l l d i s p cm o v e a x, e b xc a l 1 d i s p s i dc a l l d i s p c r l fm o v e a x, o f f s e t m s g 2c a l 1 d i s p m s gc a l l r e a d cc m p a l , 20hj e s t a r te xi t 0e n d s t a r t( 习题4.29)利用十六进制字节显示子程序DISPHB设计一个从低地址到高地址逐个字节显示某个主存区域内容的子程序DISPMEMo其入口参数: EAX=生存偏移地址, ECX=字节个数( 主存区域的长度)。 同时编写一个主程序进行验证 解答);e x0429. a s m i n W i n d o w s Co n s o l ei n c l u d e i o 32. i n c. d a t av a r b y t e ' T h i s i s a t e s t ! ?. c o d es tart: ; 主程序m o v e a x, o f f s e t v a rm o v e c x, s i z e o f v a rc a l l d i s p m e me xi t 0;子程序d i s p m e m p r o cp u s h e b xm o v e b x, e a xd i s p m l : m o v a l , [ e b x]c a l l d i s p h bm o v a l , * 'c a l l d i s p ci n c e b xl o o p d i s p m lp o p e b xr e td i s p m e m e n d pe n d s t a r t( 习题4.30)将例题4-19分别使用子程序模块、子程序库和子程序库包含方法生成最终可执行文件。 习题4. 31)区别如下概念:宏定义、宏调用、宏指令、宏展开、宏汇编 解答)宏定义:就是对宏进行说明,由•对宏汇编伪指令MACRO和 ENDM来完成宏调用:宏定义之后的使用在使用宏指令的位置写下宏名,后跟实体参数宏指令:使用宏时,其形式很像指令,所以称为宏指令宏展开:在汇编时,汇编程序用对应的代码序列替代宏指令宏汇编:指使用宏的方法进行汇编语言程序设计 习题4. 32)直接使用控制台输入和输出函数实现例题4-21的功能( 不使用READMSG和 DISPMSG子程序) 解答)( 习题4. 33)直接使用控制台输出函数实现某个主存区域内容的显示( 习 题 4.29的功能)可以改进显示形式, 例如每行显示16个字节( 128位) , 每行开始先显示首个主存单元的偏移地址,然后用冒号分隔主存内容 解答)( 习题4. 34)如何进行很简单的修改,使得例题4-22程序的消息窗有“0K ” 和 “Cancel” 两个按钮 解答)将 MB_OK常量定义为1 , 即:MB_OK equ 1( 习题4. 35)上机实践例题4-23和例题4-24,并在创建可执行文件的过程中生成汇编语言列表文件 习题4.36)Pentium处理器含有一个64位的时间标记计数器( Time-Stamp Counter) o该计数器每个时钟周期递增( 加 1) ; 在上电和复位后,该计数器清0。 RDTSC” 执行后将在EDX( 高 32位 )和 EAX ( 低 32位 )返回当前的64位时间标记计数器值利用RDTSC指令在某个函数运行前获得时间标记计数器值,然后运行该函数后,立即再次执行RDTSC指令,并将再次获得的时间标记计数器值与之前的计数值相减, 得到的差值就是运行该函数需要的时钟周期数( 乘以时钟周期,等于运行时间)请利用混合编程方法显示某个函数的运行时钟周期数 解答)第 5 章微机总线( 习题5.1)简答题( 解答)①数据总线承担着处理器与存储器、外设之间的数据交换,既可以输入也可以输出,故其是双向的②为减少引脚个数,8086采用了地址总线和数据总线分时复用即数据总线在不同时刻还具有地址总线的功能③ 具有三态能力的引脚当输出呈现高阻状态时. ,相当于连接了一个阻抗很高的外部器件,信号无法正常输出;即放弃对该引脚的控制,与其他部件断开连接④ 处理器的运行速度远远快于存储器和I/O端口 处理器检测到存储器或I/O端口不能按基本的总线周期进行数据交换时,插入一个等待状态Tw等待状态实际上是一个保持总线信号状态不变的时钟周期⑤ 猝发传送是处理器只提供首地址、但可以从后续连续的存储单元中读写多个数据。 ©总线上可能连接多个需要控制总线的主设备, 需要确定当前需要控制总线的主设备,所以需要总线仲裁⑦异步时序是由总线握手( Handshake) 联 络 ( 应答) 信号控制,不是由总线时钟控制故总线时钟信号可有可无⑧ 单总线结构限制了许多需要高速传输速度的部件32位 PC 机采用多种总线并存的系统结构 各种专用局部总线源于处理器芯片总线, 以接近处理器芯片引脚的速度传输数据,它为高速外设提供速度快、性能高的共用通道⑨ 4 个⑩即插即用技术是指3 2 位 P C 机的主板、操作系统和总线设备配合,实现自动配置功能 习题5 . 2 )判断题对错⑤⑩对对©⑨错对③⑧对对②⑦—对错答①⑥( 习题5 . 3 )填空题( 解答)① 0② 读 近 ,写 标③存储器读,存储器读,存储器写④ 4, 2, 1 0 n s⑤ 低 有 效 ,I O R , 0 0 1 0⑥ 寻 址 ,数据传送⑦ 1 2 7 , 1 . 5 M b / s , 1 2 M b / s⑧地力匕,数据—⑨ D / C , W / R⑩ B R D Y , I / O C H R D Y( 习题5 . 4 )处理器有哪4 种最基本的总线操作( 周期)?( 解答)存储器读、存储器写,I / O 读、I / O 写。 习题5 . 5 )8 0 8 6 处理器的输入控制信号有R E S E T , H O L D , N M I 和 1 N T R , 其含义各是什么?当它们有效时,8 0 8 6 C P U 将出现何种反应?( 解答)R E S E T :复位输入信号,高电平有效该引脚有效时,将迫使处理器回到其初始状态:转为无效时,C P U 重新开始工作H O L D :总线请求,是一个高电平有效的输入信号该引脚有效时,表示其他总线主控设备向处理器申请使用原来由处理器控制的总线N M I :不可屏蔽中断请求,是一个利用上升沿有效的输入信号该引脚信号有效时,表示外界向CPU申请不可屏蔽中断I N T R : u j " 屏蔽中断请求,是一个高电平有效的输入信号该引脚信号有效时,表示中断请求设备向处理器申请可屏蔽中断 习题5 . 6 )区别概念:指令周期、总线周期( 机器周期)、时钟周期、T状态 角 星 答 )指令周期:一条指令从取指、译码到最终执行完成的过程总线周期( 机器周期):有数据交换的总线操作时钟周期:处理器的基本工作节拍,由时钟信号产生,一个高电平和一个低电平为一个周期T状态:完成特定操作的一个时钟周期。 由于时间上一个T状态等于一个时钟周期,所以常常将两者混为一谈 习题5.7)总结8086各个T 状态的主要功能 角 翠 答 )T1状态:总线周期的第一个时钟周期主要用于输出存储器地址或I/O地址;T2状态:输出读/ 写控制信号T3状态:锁存地址、处理器提供的控制信号和数据在总线上继续维持有效,且T 3时钟的 前 沿 ( 下降沿)对 READY引脚进行检测READY信号有效,进入T4周期T 4 状态:总线周期的最后一个时钟周期,处理器和存储器或I/O 端口继续进行数据传送,直到完成,并为下一个总线周期做好准备Tw 状态:等待状态处理器在T 3 前沿发现READY信号无效后,插入TwTw状态的引脚信号延续T 3时的状态、维持不变 习题5.8)请解释8086 ( 最小组态)以下引脚信号的含义:CLK, A19/S6-A16/S3, AD15-AD0,ALE, M / I O ,画 和 标 默画它们在具有一个等待状态的存储器读总线周期中的波形示意 解答)CLK: 时钟输入 时钟信号是一个频率稳定的数字信号, 其频率就是处理器的工作频率,工作频率的倒数就是时钟周期的时间长度A19/S6-A16/S3:地址/ 状态分时复用引脚,是一组4 个具有三态能力的输出信号。 这些引脚在访问存储器的第•个时钟周期输出高4 位地址A19〜 A 1 6 ,在访问外设的第一•个时钟周期输出低电平无效;其他时间输出状态信号S6〜 S3AD15〜 AD0: 地止/ 数据分时复用引脚, 共 16个引脚, 用作地址总线时是单向输出信号;用作数据总线时是双向信号,具有三态输出能力ALE:地址锁存允许,是一个三态、输出、高电平有效的信号有效时,表示复用引脚( AD15〜 ADO和 A19/S6~A16/S3)上正在传送地址信号M /记 :访问存储器或者I/O ,是一个三态输出信号,该引脚高电平时,表示处理器将访问存储器,此时地址总线A19〜 A0提供20位的存储器物理地址该引脚低电平时,表示处理器将访问I/O端口,此时地址总线A 15-A 0提 供 16位的I/O地址RD:读控制,也是一个三态、输出低电平有效信号有效时,表示处理器正在从存储单元或I/O端口读取数据WR:写控制,是一个三态、输出低电平有效信号有效时,表示处理器正将数据写到存储单元或I/O端口CLKJHTjT:TyTj—M/IOBHE/S7. A19/S6~A16/S3 _AD15-AD0ALE -RDJ" ) ^H EA1」LAO 2--------S7高阻-s oY输入步蟠 泮LJGLJREADYp图6-1具有一个Tw的存储器读总线周期时序( 习题5 9 )区别如下总线概念:芯片总线、局部总线、系统总线;并行总线、串行总线:地址总线、数据总线、控制总线;ISA总线、PCI总线。 解答)芯片总线:是指大规模集成电路芯片内部,或系统中各种不同器件连接在一起的总线;用于芯片级互连局部总线:位于处理器附件的器件相互连接的总线,相对于芯片总线系统总线:通常是指微机系统的主要总线并行总线:采用并行传输方式的总线串行总线:将多位数据按二进制位的顺序在数据线上逐位传送的总线地址总线:实现地址信息互连和交换的一组导线数据总线:实现数据信息互连和交换的一组导线控制总线:控制协调处理器和内存、外设交互信息的一组导线ISA总线:即 IBM PC/AT总线,以处理器80286引脚形成的总线,分成支持8 位操作的前 62信号和扩展16位操作的后36信号PCI总线:外设部件互连总线,不仅适用于IA-32处理器,也适用其它处理器,支持32位和64位操作,广泛用于32位通用微型计算机中 习题5.10)什么是同步时序、半同步时序和异步时序?( 解答)同步时序:总线操作的各个过程由共用的总线时钟信号控制半同步时序: 总线操作仍由共用的总线时钟信号控制, 但慢速模块可以通过等待信号让快速模块等待异步时序:总线操作需要握手( Handshake)联 络 ( 应答)信号控制,总线时钟信号可有可无 习题5.11)EISA总线的时钟频率是8MHz,每 2 个时钟可以传送一个32位数据, 计算其总线带宽。 解答)( 32X8) + ( 2X8) =16MBps( 习题5.12)PCI总线有什么特点?( 解答)PCI总线与处理器无关,具有32位和64位数据总线,有+ 5 V 和+3.3V 两种设计,采用集中式总线仲裁、支持多处理器系统,通 过 桥 ( Bridge)电路兼容ISA/EISA总线,具有即插即用的自动配置能力等一- 系列优势 习题5.13)PCI总线操作如何插入等待状态?1解答)主设备利用IRDY#信号无效、从设备利用TRDY#信号无效要求对方等待,即插入等待状态 习题5.14)什么是USB总线支持的“ 热插拔”,这个特性有什么意义?( 解答)“ 热插拔”是 在 P C 机正常工作状态进行插入或拔出这个特性可以使用户随时连接USB设备 习题5.15)简述USB总线的主要特征?( 解答)使用方便、扩充能力强支持多种传输速度、适用面广低功耗、低成本、占用系统资源少 习题5.16)USB总线的集线器有什么作用?主机上是否需要集线器?( 解答)集线器是专门用于提供额外USB接入点的USB设备主机需要集线器,被称为根集线器 习题5.17)USB总线协议支持哪几种数据传输方式?简述之。 [ 解答)USB的数据传输有4 种:控制传输——在 USB设备初次安装时, USB系统软件使用控制传输方式设置USB设备参数、发送控制指令、查询状态等批量传输——对于打印机、 扫描仪等设备需要传输大量数据,可以使用批量传输方式连续传输一批数据中断传输——该方式传输的数据量很小, 但需要及时处理,以保证实时性,主要用于键盘、鼠标等设备上同步传输——该方式以稳定的速率发送和接收信息, 保证数据的连续和及时, 用于数据传输正确性要求不高而对实时性要求高的外设,例如麦克风、喇叭、等第6章存储系统( 习题6 . 1 )简答题( 解答)①因为各种存储器件在容量、速度和价格方面存在矛盾速度快,则单位价格高;容量大,单位价格低,但存取速度慢故存储系统不能采用一种存储器件② C ac h e中复制着主存的部分内容当处理器试图读取主存的某个字时,C ac h e控制器首先检查C ac h e中是否已包含有这个字若有,则处理器直接读取C ac h e ,这种情况称为高速命中;若无,则称为高速缺失③标签存储器保存着该数据所在主存的地址信息④ 主 存 块 与C ac h e行之间的对应关系称“ 地址映射" ,C ac h e通过地址映射确定一个主存块应放到哪个C ac h e行组中。 ⑤ 写入策略用于解决写入C ac h e时引起主存和C ac h e内容不一致性的问题⑥存取时间是指从读/ 写命令发出,到数据传输操作完成所经历的时间;存取周期表示两次存储器访问所允许的最小时间间隔存取周期大于等于存取时间⑦虚拟存储器是由操作系统利用辅助存储器、以磁盘文件形式建立的、在主存储器与辅助存储器之间的一个存储器⑧ DRAM芯片容量大、芯片小,高集成度,引脚数量少故DRAM芯片将地址引脚分时复用,即用一组地址引脚传送两批地址第一批地址称行地址,第二批地址称列地址⑨译码电路中只有部分地址线参与译码会造成地址重复,也就是•个存储单元占有多个存储器地址⑩页表项的P位称为存在位( P r e s e n t ),表示该页面是否在物理存储器中 习题6 .2 )判断题【 解答)①错②对③对④对⑤对⑥错⑦错⑧对⑨错⑩对( 习题6 .3 )填空题( 解答)① 8 , 1 0 2 4 , 1 0 2 4 , 1 0 2 4 , 1 0 2 4 , 24 0② 8 K B , 4③随机存取存储器,丢失,只读存储器,读取,不会丢失④ 8 , 1 3 , 8⑤ 2⑥ ( U V- ) E P R O M , F l as h M e m o r y⑦ 5 8 O O O H , 5 F F F F H , 3 2 K B⑧ 3 2 , 4 , 6 4 , 8⑨直接映射,组合相关映射,全相关映射,2路组合相关映射⑩ 0 0 8 2 0 0 0 0 H , 0 2 0 0 0 H( 习题6 .4 )举例说明存储访问的局部性原理。 解答)处理器访问存储器时, 无论是读取指令还是存取数据, 所访问的存储单元在一段时间内都趋向于一个较小的连续区域中,这就是存储访问的局部性原理例如,求平均值的函数l o n g m e a n ( l o n g d [ ] , l o n g n u m ){1 o n g i , t e m p =O;f o r ( i =0 ; i CPU寄存器、高速缓存器集成在CPU芯片上,对用户来说,是透明的,它们用于暂存主存和处理器交互的数据,以减少频繁读取主存而影响处理器速度;主存储器则可和处理器直接交换数据,而辅助存储器必须经过主存存储器,才可与处理器进行数据交换 习题6.6)在半导体存储器件中,什么是SRAM、DRAM和 NVRAM?( 解答)SRAM是静态读写存储器芯片, 它以触发器为基本存储单元,以其两种稳定状态表示逻辑 0 和逻辑1DRAM是动态读写存储器芯片,它以单个MOS管为基本存储单元,以极间电容充放电表示两种逻辑状态,需要不断刷新保持信息正确NVRAM多指带有后备电池的SRAM芯片,这种芯片采用CMOS制造工艺设计以减少用电 习题6.7)SRAM芯片的片选信号有什么用途?对应读写控制的信号是什么?( 解答)片选信号函:片选有效时,才可以对该芯片进行读/ 写操作;无效时,数据引脚呈现高阻状态、与系统数据总线隔离,并可降低内部功耗读控制信号而:在芯片被选中的前提下,若 诙 有 效 ,则芯片将允许地址信号选择的存储单元内的数据输出到数据引脚上写 控制信号而:在芯片被选中的前提下,若 丽 有 效 ,则芯片将数据引脚卜一的数据写入地址信号选择的存储单元内。 习题6.8)DRAM为什么要刷新,存储系统如何进行刷新?( 解答)DRAM以单个MOS管为基本存储单元,以极间电容充放电表示两种逻辑状态由于极间电容的容量很小, 充电电荷自然泄漏会很快导致信息丢失, 所以要不断对它进行刷新操作、即读取原内容、放大再写入存储系统的刷新控制电路提供刷新行地址,将存储DRAM芯片中的某一行选中刷新实际匕 刷新控制电路是将刷新行地址同时送达存储系统中所有DRAM芯片,所有DRAM芯片都在同时进行一行的刷新操作刷新控制电路设置每次行地址增量, 并在一定时间间隔内启动一次刷新操作, 就能够保证所有DRAM芯片的所有存储单元得到及时刷新 习题6.9)什么是掩摸 ROM、OTP-ROM. EPROM、EEPROM Flash ROM?( 解答)掩膜ROM:通过掩膜工艺、将要保存的信息直接制作在芯片当中,以后再也不能更改OTP-ROM:该类芯片出厂时存储的信息为全“ 1” ,允许用户进行一次性编程,此后便不能更改EPROM: 一般指可用紫外光擦除、并可重复编程的ROMEEPROM:也常表达为E2PROM,其擦除和编程( 即擦写)通过加电的方法来进行,可实 现 “ 编程”和 “ 在应用编程”Flash ROM:是一种新型的电擦除可编程ROM芯片,能够很快擦除整个芯片内容。 习题6.10)请给出教材图6-7中 138译码器的所有译码输出引脚对应的地址范围 解答)VD〜 下的地址范围依次是:E0000H-E3FFFH, E4000H〜 E7FFFH, E8000H〜 EBFFFH, ECOOOH-EFFFFH, F0000H-F3FFFH, F4000H〜 F7FFFH, F8000H〜 FBFFFH, FCOOOH 〜 FFFFFH 习题6.11)什么是存储器芯片的全译码和部分译码?各有什么特点?( 解答)全译码:使用全部系统地址总线进行译码 特点是地址唯一, •个存储单元只对应一个存储器地址( 反之亦然),组成的存储系统其地址空间连续部分译码:只使用部分系统地址总线进行译码其特点:有一个没有被使用的地址信号就有两种编码,这两个编码指向同一个存储单元,出现地址重复 习题6.12)区别如下各个主存名称的含义:常规主存,扩展主存,扩充主存;上位主存区UMA和上位主存块U M B ,高端主存区H M A ,影子主存 解答)常规主存:8088和 8086提供20个地址线A19〜 A 0 ,寻 址 1MB的存贮空间,其中,最低 640KB的系统RAM区被称为常规主存或基本主存。 扩展主存:IA-32处理器在1MB之后的主存空间都作为RAM区域使用,被称为扩展主存扩充主存:处理器不可以直接访问,利 用 “ 体交换技术”实现处理器访问上位主存区UMA:在常规主存其后384KB ( A0000H-FFFFFH)主存称为上位主存区UMA上位主存块UMB:上位主存区UMA没有被使用部分,被开辟为上位主存块UMB高端主存区HMA: 在实方式下, 通过控制A20开放, 程序可以访问的IMB之后的64KB区域影子主存:PC机启动后可以将ROM-BIOS映射到RAM中,这部分用作ROM-BIOS,并被操作系统设置为只读的RAM区域 习题6.13)开机后,微机系统常需要检测主存储器是否正常例如,可以先向所有存储单元写入数据 55H ( 或 ( ) 0H)、然后读出看是否还是55H ( 或 OOH);接着再向所有存储单元写入数据AAH ( 或 FFH)、然后读出看是否还是AAH ( 或 FFH)利用两个二进制各位互反的“ 花样” 数据的反复写入、读出和比较就能够识别出有故障的存储单元利用获得的有故障存储单元所在的物理地址, 如果能够分析出该存储单元所在的存储器芯片,就可以实现芯片级的维修。 试利用汇编语言编写一个检测常规主存最高64KB ( 逻辑地址从9000H : 0000H到9000H : FFFFH)的程序,如果发现错误请显示其逻辑地址 解答);代码段m o v a x , 9 0 0 0 hm o v d s , a xm o v a h , 5 5 h;先用5 5 Hp u s h a xa g a i n :m o v b x , 0m o v a l , a ha g a i n l : m o v [ b x ] , a l;写入d e c b xj n z a g a i n la g a i n 2 : m o v a l , [ b x ];读出c m p a l , a h;检测j z n e x t 2d i s p c r l fp u s h a xm o v a x , d sc a l l d i s p h w;显示段地址m o v a l ,1 : 'c a l 1 d i s p cm o v a x , b xc a l l d i s p h w;显示偏移地址p o p a xn e x t 2 :d e c b xj n z a g a i n 2p o p a xc m p a h , O a a h;后用O A A Hj z d o n em o v a h , O a a hj m p a g a i nd o n e :( 习题6.14)什么是LRU替换算法? 80486片内Cache中,如果3 个替换算法位B,B|B0=010,贝 U 将替换哪个Cache行,并给出你的判断过程。 解答)LRU算法是近期最少使用、即选择最长时间未被使用的数据块进行替换的算法B 0 = 0 ,说明最近访问了 L2/L, 行,所以应该替换工或 Li行B| = l , 说明最近访问了L( ,行,所以应该替换L”因为LRU算法是选择最长时间未被访问的Cache行进行替换 习题665)高速缓冲存储器Cache的写入策略是解决什么问题的?有哪两种写入策略, 各自的写入策略是怎样的?( 解答)写入策略用于在写命中时Cache与主存内容保持一致直写式写入策略指处理器对Cache写入的同时,将数据也写入到主存,这样来保证主存和 Cache内容一致它简单可靠回写Cache只有在行替换忖才可能写入主存,写入主存的次数, 会少于处理器实际执行的写入操作数回写Cache的性能要高于直写C ache,但实现结构略为复杂 习题6.16)80486片上8KB Cache的标签存储器为什么只需要21位?( 解答)80486片上Cache共有8KB容量,采用4 路组合地址映射方式对于4GB容量的主存来说,以Cache路为单位,可以分成4GB+2KB = 232-?2“ =22i个 Cache路这样每个Cache行只要设计一个21位的标签存储器,记录该Cache行映射到哪个主存的Cache路。 再结合直接映射的组号就可以明确该Cache行对应哪个主存块 习题667)高速缓存的写入操作有几个很近似的英文词汇,它们分别表示什么含义?( 1) Write Through (2) Write Back(3) Write Around (4) Fetch on Write( 解答)(1) Write Through:写命中时的直写策略2) Write Back:写命中时的回写策略3) Write Around:写未命中时的不写分配法,即绕写法4) Fetch on Write:写未命中时的写分配法,即写时取法 习题6.18)区别如下高速缓存中的概念:( 1 ) 主存数据块Block ( 2 ) 高速缓存行Line( 3 ) 高速缓存组Set ( 4 ) 高速缓存路Way( 解答)( 1 ) 主存数据块Block:高速缓存与主存间的数据传送以数据块( Block)为单位,例如 B 个字主存数据块Block是主存中连续的B 个字数据 2 ) 高速缓存行Line:指高速缓存中包含B 个字的一个单元 3 ) 高速缓存组Set:组合相关映射将多个Cache行作为一个组( S e t) 4 ) 高速缓存路Way:组合相关映射将所有组中同位置Cache行称为一路( W ay)。 习题669)什么是段选择器、描述符、描述符表和描述符表寄存器?( 解答)段选择器:保护方式下的16位段寄存器就是段选择器描述符:是保护方式引入的数据结构,有 8 个字节64位,具有段基地址、访问权限、段界限等字段IA-32处理器利用它来实现存储管理、特权与保护描述符表:描述符表是存放描述符的一个特殊区域段描述符表寄存器:指明描述符表所在主存地址的寄存器 习题6.20)IA-32处理器在保护方式下,段寄存器是什么内容?若 D S=78H ,说明在保护方式其具体的含义 解答)段寄存器是段选择器,包含3 个域,指向一个段描述符D S=78H ,说明当前数据段描述符是全局描述符表中的第0FH 个描述符本次访问数据的特权级别为0 , 最高 习题6.21)采用4KB分页,说明IA-32处理器将线性地址转换为物理地址的过程 解答)通过2 级查表来实现线性地址转换为位物理地址 1) 在CR3中包含着当前任务的页目录的起始地址, 将其加上线性地址最高10位 A31〜A22确定的页目录项的偏移量,便访问到指定的页目录项 2)在此页目录项中包含着指向的页表的起始地址,将其加上线性地址中间的1 0 位A21〜 A12确定的页表项的偏移量,便访问到指定的页表项。 3) 在此页表项中包含着要访问的页面的起始地址, 将其加上线性地址最低12位 A ll〜A0的偏移量,就从这一页中访问到所寻址的物理单元第7章输入输出接口( 习题7.1)简答题( 解答)①外部设备,在工作原理、驱动方式、信息格式、以及工作速度等方面彼此差别很大,与处理器的工作方式也大相径庭所以,外设不能像存储器芯片那样直接与处理器相连,必须经过一个中间电路②数据缓冲用于匹配快速的处理器与相对慢速的外设或两个功能部件速度不匹配的数据交换③处理器向接口芯片相应端口写入特定的数据,用于选择I/O 芯片的工作方式或控制外设工作,该数据称命令字或控制字④ PC机中CMOS RAM不属于主存空间,CMOS RAM有 64个字节容量,以 8 位 I/O接口形式与处理器连接,通过两个I/O地址访问⑤在输入接口中,为避免多个设备同时向总线发送数据,需要安排一个三态缓冲器只有当处理器选通时, 才允许被选中设备将数据送到系统总线, 此时其他输入设备与数据总线隔禺⑥透明锁存器的控制端为有效电平时,输出随输入变化,常称为直通或透明非透明锁存器不论其控制端为低或为高电平,输出状态都不随输入变化⑦如发光二极管、按键和开关等简单设备,它们的工作方式十分简单;相对处理器而言,其状态很少发生变化或变化很慢。 这些设备与处理器交换数据时,可采用无条件传送⑧在查询程序中,当查询超过了规定的时间,设备仍未就绪时,就引发超时错误⑨ 远 调 用 CALL指令利用直接或间接寻址调用另一个代码段的子程序;INT n 指令利用中断向量表( 地址表)的方法调用另一个代码段的中断服务程序,还有保存标志寄存器的功能⑩外部中断是由处理器外部提出中断请求引起的程序中断相对于处理器来说,外部中断是随机产生的,所以是真正意义上的中断 习题7.2)判断题错错⑤⑩错对④⑨对错③⑧对对②⑦I对错答①⑥( 习题7.3)填空题( 解答)① 数 字 量 、开关量、脉冲量② 1/0独立,输入输出( I/O)指令,直接寻址,DX寄存器间接寻址③ I/O端 口 ( 接口,外设),处 理 器 ( 主机),I/O读④ 寄 存 器 ,I/O地址的直接寻址⑤ I/O地址的间接寻址,寄存器⑥直接存储器存取,DMA请求,总线请求,总线响应,高阻,DMAC( DMA控制器)⑦ 除 法 错 ,2⑧ 1, STI, CLI, 0( 9) 1KB, 20H, 4, F010H : 2300H⑩ 1R3, IR3请求的( 习题7.4)一般的I/O接口电路安排有哪三类寄存器?它们各自的作用是什么?( 解答)①数据寄存器保存处理器与外设之间交换的数据。 ②状态寄存器保存外设当前的工作状态信息处理器通过该寄存器掌握外设状态,进行数据交换③控制寄存器保存处理器控制接口电路和外设操作的有关信息处理器向控制寄存器写入控制信息,选择接口电路的不同工作方式和与外设交换数据形式 习题7.5)什么是I/O独立编址和统一编址,各有什么特点?( 解答)独立编址是将I/O端口单独编排地址,独立于存储器地址统一编址是将I/O端口与存储器地址统一编排,共享一个地址空间端口独立编址方式,处理器除要具有存储器访问的指令和引脚外,还需要设计I/O访问的 I/O指令和I/O引脚, 其优点是: 不占用存储器空间: I/O指令使程序中I/O操作一目了然:较小的I/O地址空间使地址译码简单 但 I/O指令功能简单, 寻址方式没有存储器指令丰富统一编址方式,处理器不再区分I/O 口访问和存储器访问其优点是:处理器不用设计I/O指令和引脚,丰富的存储器访问方法同样能够运用于I/O访问缺点是:I/O端口会占用存储器的部分地址空间,通过指令不易辨认I/O操作 习题7.6)简述主机与外设进行数据交换的几种常用方式( 解答)主机与外设进行数据交换的几种常用方式:①无条件传送方式,常用于简单设备,处理器认为它们总是处于就绪状态,随时进行数据传送。 ②程序查询方式:处理器首先查询外设工作状态,在外设就绪时进行数据传送③ 中 断 方 式 :外设在准备就绪的条件下通过请求引脚信号,主动向处理器提出交换数据的请求处理器无其他更紧迫任务,则执行中断服务程序完成一次数据传送④ DMA传送: DMA控制器可接管总线,作为总线的主控设备,通过系统总线来控制存储器和外设直接进行数据交换此种方式适用于需要大量数据高速传送的场合 习题7.7)参看图7 -5 ,编程实现以下功能:当 K0键单独按下时,发光二极管L0〜 L7将依次点亮( LO, LI, L 2 ,……L7), 每个维持200ms;当 K1键单独按下时,发光二极管L0〜 L7将反向依次点亮( L7, L6, L 5 ,……L0), 每个也维持200ms;在其他情况下各发光二极管均不点亮假定有延时200ms的子程序DELAY可直接调用 解答)a g a i n :m o v d x , 8 0 0 0 hi n a l , d xe m p a l , O f e hD 7 - D 0 = 1 1 1 1 1 1 1 0 B ?j z n e x t l单独按下K 0 ,转移到n e x t le m p a l , O f d hD 7 - D 0 = 1 1 1 1 1 1 0 1 B ?j z n e x t 2单独按下K I ,转移到ne x t2j m p a g a i n其它情况不点亮ne x t 1:m ov e x , 8m ov a l , 1从K 0开始ne x t 11: out d x , a l某个L E D电亮c a l l d e l a y延时2 00m ssh l a l , 1rol a l , 1l oop ne x tl lj m p a g a i nne x t2 :m ov e x , 8m ov a l , 8 0h从K 7开始ne x t2 1: out d x , a l某个L E D电亮c a l 1 d e l a y延时2 00m ssh r a l , 1ror a l , 1l oop ne x t2 1j m p a g a i n( 习题7.8)现有一个输入设备,其数据端口地址为FFE0H,状态端口地址为FFE2H。 当状态标志D 0 = l时 ,表明一个字节的输入数据就绪请编写利用查询方式进行数据传送的程序段,要求从该设备读取100个字节保存到BUFFER缓冲区 解答)m ov b x , of f se t b uf f e rm ov e x , 100a g a i n: m ov d x , 0f f e 2 hsta tus: i n a l , d x ;查询一次te st a l , O l hj z sta tusm ov d x , O f f e O hi n a l , d x ;输入一个字节m ov [ b x ] , a li nc b xl oop a g a i n ;循环,输入100个字节( 习题7.9)某个字符输出设备,其数据端口和状态端口的地址均为80H在读取状态时,当标志位D7=0时, 表明该设备闲, 可以接收一个字符 请编写利用查询方式进行数据传送的程序段,要求将存放于缓冲区ADDR处的一串字符( 以0为结束标志)输出给该设备 解答)d one :a g a i n:m ov b x , of f se t a d d rc m p b y te ptr [ b x ] , 0j z d onesta tus: i n a l , 8 0h ;查询te st a l , 8 0hj nz sta tusm ov a l , [ b x ]out 8 0h , a l ;输出一个字节i nc b xj m p a g a i n ;循环( 习题770)以可屏蔽中断为例,说明一次完整的中断过程主要包括哪些环节?( 解答)中断请求:外设通过硬件信号的形式、向处理器引脚发送有效请求信号。 中断响应:在满足一定条件时,处理器进入中断响应总线周期关中断:处理器在响应中断后会自动关闭中断断点保护:处理器在响应中断后将自动保护断点地址中断源识别: 处理器识别出当前究竟是哪个中断源提出了请求, 并明确与之相应的中断服务程序所在主存位置现场保护:对处理器执行程序有影响的工作环境( 主要是寄存器)进行保护中断服务:处理器执行相应的中断服务程序,进行数据传送等处理工作恢复现场:完成中断服务后,恢复处理器原来的工作环境开中断:处理器允许新的可屏蔽中断中断返回:处理器执行中断返回指令,程序返回断点继续执行原来的程序 习题7.11)什么是中断源?为什么要安排中断优先级?什么是中断嵌套?什么情况下程序会发生中断嵌套?( 解答)计算机系统中,凡是能引起中断的事件或原因,被称为中断源处理器随时可能会收到多个中断源提出的中断请求,因此,为每个中断源分配一级中断优先权,根据它们的高低顺序决定响应的先后一个中断处理过程中又有个中断请求、并被响应处理,被称为中断嵌套必须在中断服务程序中打开中断,程序才会发生中断嵌套( 习题7 7 2 )明确如下中断有关的概念:中断源、中断请求、中断响应、关中断、开中断、中断返回、中断识别、中断优先权、中断嵌套、中断处理、中断服务。 解答)中断源:能引起中断的事件或原因中断请求:是外设通过硬件信号的形式、向处理器引脚发送有效请求信号中断响应:中断响应是在满足一定条件时,处理器进入中断响应总线周期关中断:禁止处理器响应可屏蔽中断开中断:允许处理器响应可屏蔽中断中断返回:处理器执行中断返回指令, 将断点地址从堆栈中弹出,程序返回断点继续执行原来的程序中断识别: 处理器识别出当前究竟是哪个中断源提出了请求,并明确与之相应的中断服务程序所在主存位置中断优先权: 为每个中断源分配一级中断优先权,即系统设计者事先为每个中断源确定处理器响应他们的先后顺序中断嵌套:在一个中断处理过程中又有一个中断请求被响应处理,称为中断嵌套中断处理:接到中断请求信号后,随之产生的整个工作过程,称中断处理中断服务:指处理器执行相应的中断服务程序,进行数据传送等处理工作 习题7.13)按照图7-10所示的中断查询接口与相应的流程图,编写用于中断服务的程序段具体要求是,当程序查到中断设备0 有中断请求( 对应数据线D0), 它将调用名为PROCO的子程序: 如此, 依次去查中断设备1〜中 断 设 备 3 ,并分别调用名为PR0C1-PR0C3的子程序。 解答)stipush axpush dxmov dx,4000hstatus: in al, dxtest al,Olhjnz serviceOtest al,02hjnz serviceltest al,04hjnz service2test al,08hjnz service3serviceO:jmp doneservicel:jmp doneservice2:jmp doneservice3:jmp donecall procOcal 1 prodcall proc2cal 1 proc3done: pop dxpop axiret( 习题7.14)什么是DMA读和DMA写?什么是DMA控制器8237A的单字节传送、数据块传送和请求传送?( 解答)DMA读:存储器的数据在DMA控制器控制下被读出传送给外设DMA写:外设的数据在DMA控制器控制下被写入存储器单字节传送方式:每 次 DMA传送时仅传送一个字节传送一个字节之后,DMA控制器释放系统总线,将控制权还给处理器数据块传送: DMA传送启动后就连续地传送数据,直到规定的字节数传送完请求传送:DMA传送由请求信号控制如果请求信号一直有效,就连续传送数据;但当请求信号无效时,DMA传送被暂时中止。 习题7.15)IA-32处理器何时处于开中断状态、何时处于关中断状态?( 解答)在 IA-32处理器中,若 I F = 1 ,则处理器处于开中断状态若 I F = 0 ,则处理器处于关中断状态IF = 0 关中断的情况有:系统复位后,任何一个中 断 ( 包括外部中断和内部中断)被响应后,执行关中断指令CLI后 习题7.16)简述IA-32处理器的中断工作过程 解答)IA-32处理器获得向量号识别出中断源后,中断或异常接着的工作过程如下:( 1) 将标志寄存器EFLAGS压入堆栈, 保护各个标志位; 将被中断指令的逻辑地址( 代码段寄存器和指令指针寄存器内容)压入堆栈,保护断点 2)如果有错误代码,将其压入堆栈( 有些异常产生错误代码,更具体地表明产生异常的原因)实地址方式的异常不返回错误代码 3) 也向量号获得中断服务程序( 中断或异常的处理程序)的段选择器和指令指针,分别传送给代码段寄存器CS和指令指针寄存器EIPo( 4)对于中断,要设置中断允许标志IF 为 0 , 即禁止进一步的可屏蔽中断 5)控制转移至中断服务程序入口地址( 首地址),开始执行中断或异常处理程序中断服务程序最后是中断返回指令IRETo中断返回指令IRET将断点地址和标志寄存器出栈恢复, 如果压入了错误代码还需要相应增量堆栈指针, 于是控制又返回到断点指令继续执行。 习题7 7 7 )IA-32处理器的中断向量表和中断描述符表的作用是什么?( 解答)1A-32处理器的中断向量表和中断描述符表的作用都是获取中断服务程序的入口地址( 称为中断向量),进而控制转移到中断服务程序中 习题7.18)说明如下程序段的功能:climov ax, 0mov es, axmov di,80h*4mov ax, offset intproc ; intproc 是一个过程名cldmov es: [di] , axmov ax,seg intprocmov es:[di+2] , axsti( 角 星 答 )设置80H号中断向量 习题7 7 9 )中断控制器8259A中IRR, IMR和 1SR三个寄存器的作用是什么?( 解答)中断请求寄存器1RR:保存8 条外界中断请求信号IR 0-IR 7的请求状态D i位 为 1 表示 IRi引脚有中断请求;为 0 表示该引脚无请求中断屏蔽寄存器IMR:保存对中断请求信号IR 的屏蔽状态Di位 为 1表示IR i中断被屏 蔽 ( 禁止);为 0 表示允许该中断中断服务寄存器ISR:保存正在被8259A服务着的中断状态D i位 为 1表示IRi中断正在服务中;为 0 表示没有被服务。 习题7.20)下面是IBM PC/XT机 ROM-BIOS中的08号中断服务程序,请说明各个指令的作用1nt08hprocstipush dspush axpush dx......;日时钟计时......;控制软驱马达int Ichmov al, 20hout 20h, alpop axpop dxpop dsiretint08hendp( 解答)int08hproc far;远过程sti;开中断push ds;保护现场push axpush dx......;日时钟计时.......;控制软驱马达int Ich;调用1CH号中断mov al,20h;发送E 0I中断结束命令out 20h,alpop ax ;恢复现场pop dxpop dsiret ;中断返回i nt08h endp( 习题7.21)编写一个程序,将例题7-5的 1NT 80H内部中断服务程序驻留内存然后在调试程序中或其他程序中执行INT 8 0 H ,看能否实现其显示功能 解答);代码段jmp start; 80H内部中断服务程序:显示字符串( 以0 结尾);D S : D X = 缓冲区首地址tsrmsg db 'INT 80H Program Installed ! ', Odh, Oah, 0new80hproc ; 过程定义sti ; 开中断push ax ;push bxpush simov si,offset intmsg保护寄存器newl:mov al,cs:[si] ; 获取欲显示字符cmp al, 0 ;jz new2为 “ 0”结束mov bx,0 ;mov ah,Oehint lOh采用ROM-BIOS调用显示一个字符inc si ;jmp newl显示下一个字符new2:pop si ;pop bx恢复寄存器pop axiret ; 中断返回intmsgdb 'A Instruction Interrupt !',0dh,0ah,0 ; 字符串( 以0 结尾)new80hendp ; 中断服务程序结束;主程序start:mov ax, csmov ds, ax ; 设置04 H中断向量mov dx,offset new80hclimov ax, 2580hint 21hstimov eax, offset tsrmsg ;call dispmsg显示安装信息mov dx,offset start ; 计算驻留内存程序的长度add dx,15shr dx,4 ; 调整为以“ 节” ( 16个字节)为单位mov ax,3100h ;int 21h程序驻留,返回D OS( 习题7.22)完成例题7-2显示当前日期同样的功能,请获得日期数据后转换成ASCII码,保存在缓冲区、利用DISPMSG子程序显示。 〔 解答);e x 0 7 2 2 . a s m i n D O Si n c l u d e i o l 6 . i n c. d a t ad a t e b y t e , T o d a y i s 2 0x x - y y - z z,, 0. c o d em o v e a x , o f f s e t d a t e ;显示s t a r t :m o v e b x , 11m o v a l , 9;A L = 9 ( 准备从9号单元获取年代数据)o u t 70h , a l;从70H的I/O地址输出,选择C M OS RA M的9号单元i n a l , 71h;从71H的I/O地址输入,获取9号单元的内容,保存在ALm o v d l , a ls h r a l , 4;转换高位BC D码为ASC II码a d d a l , 30hm o v d a t e [ e b x ], a l;保存到缓冲区a d d e b x , 1a n d d l , Of h;转换低位BC D码为ASC II码a d d d l , 30hm o v d a t e [ e b x ], d l;保存到缓冲a d d e b x , 2m o v a l , 8;AL = 8 ( 从8号单元获取月份数据)o u t 70h , a li n < i l , 71hm o v d l , a ls h r a l , 4;转换高位BC D码为ASC II码a d d a l , 30hm o v d a t e [ e b x ], a l;保存到缓冲区a d d e b x , 1a n d d l , Of h;转换低位BC D码为A S CH码a d d d l , 30hm o v d a t e [ e b x ], d l;保存到缓冲a d d e b x , 2m o v a l , 7;A L = 7 ( 从7号单元获取日期数据)o u t 70h , a li n a l , 71hm o v d l , a ls h r a l , 4;转换高位B C D码为ASC II码a d d a l , 30hm o v d a t e [ e b x ], a l;保存到缓冲区a d d e b x , 1a n d d l , Of h;转换低位BC D码为ASC II码a d d d l , 3Ohm o v d a t e [ e b x ], d l;保存到缓冲cal 1 di spmsgexit 0end start第8章常用接口技术( 习题8 . 1)简答题( 解答)① 方 式 1 可以通过编程产生一个确定宽度的单稳脉冲,故称工作方式1 为可编程单稳脉冲工作方式。 ②因为计数器是先减1 , 再判断是否为0 , 所以写入实际代表最大计数值③通过控制字的D 7 位来区别:D 7 = l , 该控制字为方式控制字;否则为位控制字@ 8 2 55的三种工作方式均可实现输出数据锁存, 即数据输出后被保存在8 2 55内部, 可以读取出来,只有当8 2 55再输出新一组数据时才改变⑤ M o d e m , 称为调制解调器, 将数字信号转换为适合路上传送的模拟信号( 调制)以及将线路的模拟信号转换为数字信号( 解调)⑥ 因绝大多数设备只使用RS- 2 32 C 标准的其中9个信号,所 以 P C 机上就配置9针连接器⑦两台微机进行短距离通信,可以不使用调制解调器, 直接利用2 32 c 接口连接,被称为零调制解调器( Nu l l M o d e m )连接⑧ UA R T 表示通用异步接收发送器,主要功能是将并行数据转换为串行数据发送,以及实现串行数据转换为并行传送给处理器⑨采用多路开关, 通过微型机控制, 把多个现场信号分时地接通到A/D 转换器上转换,达到共用A/D 转换器以节省硬件的目的⑩处理器输出数据都只在输出指令O U T 执行的极短时间内出现在数据总线上, 慢速的外设不能及时获取,所以主机与D A C 之间必须连接数据锁存器。 习题8. 2)判断题对对⑤⑩对对④⑨对对③⑧对错②⑦—对错答①⑥角力牛( 习题8. 3) 填空题( 解答)① 3, 1 6 , 6 , 低,写入计数初值( 并进入减1 计 数 器 ) ,脉冲输入C L K , 减法计数器,计数器的计数值减为0 ,高② 5 ( = 1 . 5 M H z 4- 30 0 K H z ) , 3③ 24, PA0 - PA7 , PB0 - PB7 , PC0 - PC7④ 1 0 1 1 0 1 1 0 ( = B6 H , B7 H )⑤ OB F⑥ 0 1 H , 1 D H ( = 30 ) , 81 H , 9D H ( = 1 5 8)⑦ Tx D , R x D , G N D⑧ 通信线路控制( CL R ) , 0 0 0 1 1 I 1 1 B ( 1 F H ) , 2F BH⑨ 1 0 1 0 0 0 0 0 , 0 1 1 0 0 0 0 0⑩ 5 3H ( = 5 1 = 5 1 . 2= 2+ 1 0 X25 6 )( 习题8.4)8253芯片每个计数通道与外设接口有哪些信号线,每个信号的用途是什么?( 解答)C LK 时钟输入信号:在计数过程中,此引脚上每输入一个时钟信号( 下降沿),计数器的计数值减1。 GATE门控输入信号:控制计数器工作,可分成电平控制和上升沿控制两种类型OUT计数器输出信号:当一次计数过程结束( 计数值减为0) , OUT引脚上将产生一个输出信号 习题8.5)8253芯片需要几个I/O地址,各用于何种目的?( 解答)4 个,读写计数器0, 1和 2 , 及控制字 习题8.6)试按如下要求分别编写8253的初始化程序, 已知8253的计数器0〜 2 和控制字I/O地址依次为204H〜 207H① 使 计 数 器 1工作在方式0 , 仅用8 位二进制计数,计数初值为128②使计数器0 工作在方式1 , 按 BCD码计数,计数值为3000③ 使计数器2 工作在方式2 , 计数值为02F0H1解答)①m o v al , 5 0 hm o v dx , 20 7 ho ut dx , alm o v al , 1 28 ; = 80 hm o v dx , 20 5 ho ut dx , al②m o v al , 33hm o v dx , 20 7 ho ut dx , alm o v ax , 30 0 0 h ;不是 30 0 0m o v dx , 20 4ho ut dx , alm o v al , aho ut dx , al③m o v al , 0 b 4hm o v dx , 20 7 ho ut dx , alm o v al , 0 2f0 hm o v dx , 20 6 ho ut dx , alm o v al , aho ut dx , al( 习题8.7)利用扬声器控制原理,编写一个简易乐器程序。 当按下1―8数字键时,分别发出连续的中音1 - 7和高音i ( 对应频率依次为524Hz,588Hz, 660Hz, 698Hz, 784Hz, 880Hz, 988Hz 和 1048Hz);当按下其他键时暂停发音;当按下ESC键 ( ASCH码 为 1BH), 程序返回操作系统 解答);数据段tabledw 2277,2138, 1808, 1709, 1522, 1356, 1208, 1139;对应中音1〜 7 和高音i 的定时器记数值;代码段mov al,0b6hout 43h, al;设置定时器2 工作方式again:cal1 readc;等待按键cmp a l,' rjb nextcmp al, * 8*;判断是否为数字1~8ja nextsub al,30h; 1 〜 8 的ASCII码转换为二进制数sub al, 1xor ah,ah;再减1 , 将数字1〜 8 变为0〜 7 , 以便查表shl ax, 1;乘以2mov bx, ax;记数值表是16位数据,无法采用x la t指令mov ax,table[bx];取出对应的记数值out 42h,almov al, ahout 42h, al;设置定时器2 的记数值in al, 61h;打开扬声器声音or al,03hout 61h,al; 使 D1DO=PB1PBO=11B,其他位不变jmp again;连续发声,直到按下另一个键next:push axin al,61h;不是数字1〜8 , 则关闭扬声器声音and al,Ofchout 61h,alpop ax;使 DlDO=PBlPBO=OOb,其他位不变cmp a l, Ibh;判断是否为ESC键 ( 对应ASCII码 Ibh)jne again;不是ESC,继续;否则程序执行结束( 习题8.8)针对8255芯片工作方式1输出时序,说明数据输出的过程。 解答)①中断方式下,处理器响应中断,执行输出OUT指令:输出数据给8255,发出WR信号查询方式下,通过端口 C 的状态确信可以输出数据,处理器执行输出指令;② W E 信号一方面清除IN T R ,另一方面在上升沿使漏有效,通知外设接收数据实质上 砺信号是外设的选通信号;③ W E 信号结束后,数据从端口数据线上输出当外设接收数据后,发出品R 响应;④ 权 信 号 使 砺 无 效 ,上升沿又使INTR有 效 ( 允许中断的情况),发出新的中断请求( 习题8.9)设定8255芯片的端口 A 为方式1输入,端口 B 为方式1输出,则读取口 C 的数据的各位是什么含义?( 解答)PCO:端口 B 的中断请求信号PC1:端口 B 输出缓冲器满信号PC2:端口 B 中断允许控制位PC3:端口 A 的中断请求信号PC4:端口 A 中断允许控制位PC5:端口 A 输入缓冲器满信号PC6/PC7: I/O 信号( 习题8.10)用 8255端口 A 方式与打印机接口示例中,如果改用端口 B , 其他不变,说明应该如何修改接口电路和程序 解答)修改电路:将端口 B 的 PB0-PB7接打印机的数据位DATA0〜DATA7即可。 修改程序:将输出数据端口改为FFFAH即可 习题8.11)用 8255端口 A 方 式 1 与打印机接口,如果改用端口 B , 其他不变,说明如何修改接口电路和程序 解答)修改电路:PA0-PA7 改为 PB0-PB7; PC6 改用 PC2, PC7 改用 PCI, PC3 改用 PC0修改程序:mov dx,Offfehmov al,84hout dx, almov al,04h;使 INTEB (PC2)为 0,out dx, al禁止中断mov ex,counter;打印字节数送exmov bx,offset buffer;取字符串首地址call prints;调用打印子程序printsprocpush axpush dx;保护寄存器p rin tl:mov al,[bx];取一个数据mov dx,Offfahout dx, almov dx, Offfeh;从端口B输出print2:in al, dxtest al, 02hjz print2inc bxloop printl;检 测( PC1)为1否?pop dxpop axretprints endp( 习题8.12)有一工业控制系统,有四个控制点,分别由四个对应的输入端控制,现 用 8255的端口C 实现该系统的控制,如本题图形。 开关K0〜 K3打开则对应发光二极管L0〜 L3亮,表示系统该控制点运行正常;开关闭合则对应发光二极管不亮,说明该控制点出现故障编写8255的初始化程序和这段控制程序 解答);写入方式字mov al, lOOXOOXlb ; =81H ( X表示任意,可以填写为0 , 也可以为1)mov dx,控制口地址 ;可以假设为OFFFEHout dx, al; 加入下 段更好,使 L0〜L3全亮mov al, Ofhmov dx,端口 C地址out dx, al; 控制程序段mov dx,端口 C地址in al, dxmov cl, 4shl al, clout dx, al;可以假设为OFFFCH;可以假设为OFFFCH;读入PCO〜PC3;左移4 位;控制PC4〜PC7图 8 -1 习题8. 12附图( 习题8.13)编写一个程序, 每当在键盘上按下一键时,就显示其接通和断开扫描码,可以利用ESC键退出程序执行 键盘的每个字节代码都引起一次09H号中断, 这样大部分按键将产生两次中断, 按下按键盘发送接通扫描码, 松开按键发送断开扫描码 例如, ESC键是01H和 81H8 3 键标准键盘以后的增加的按键可能有多个。 请问主键盘区和数字小键盘区的两个回车的扫描码分别是什么?( 解答);数据段done byte 0;代码段,主程序mov ax,3509hint 21hpush espush bxclipush dsmov dx,seg new09hmov ds, dxmov dx,offset new09hmov ax,2509hint 21hpop dsin al, 21hstart 1:push axand al,Ofdhout 21h,alsticmp done, 1jne start 1clipop axout 21h, alpop dxpop dsmov ax,2509hint 21hsti;代码段,子程序new09h procstipush axpush bxin al, 60hpush axin al, 61hor al, 80hout 61h, aland al, 7fhout 61h, alpop axcmp al, 1je next3push axshr al, 4cmp al, Oahj b n e x t 1a d d a l , 7n e x t l :a d d a l , 3 0 hm o v b x , 0m o v a h , O e hi n t l O hp o p a xa n d a l , O f hc m p a l , O a hj b n e x t 2a d d a l , 7n e x t 2 :a d d a l , 3 0 hm o v a h , O e hi n t l O hm o v a x , 0 e 2 0 h ;输出两个空格,分隔i n t 1 0 hm o v a x , 0 e 2 0 hi n t l O hj m p n e x t 4n e x t 3 :p u s h d sm o v a x , @ d a t am o v d s , a xm o v d o n e , 1p o p d sn e x t 4 :m o v a l , 2 0 ho u t 2 0 h , a lp o p b xp o p a xi r e tn e w 0 9 h e n d p利用上述程序,可以获得主键盘区的回车键的扫描码是:I C 9 C 。 数字小键盘区的回车键的扫描码是:E D I C E D 9 C o( 习题8 . 1 4 )串行异步通信发送8 位二进制数0 1 0 1 0 1 0 1 : 采用起止式通信协议, 使用奇校验和2 个停止位画出发送该字符时的波形图若 用 1 2 0 0 b p s , 则每秒最多能发送多少个数据?( 角 星 答 )每个字符的位数是:1 个起始位+8个数据位+1个奇校验位+2个停止位= 1 2 位, 采用1 2 0 0 b p s >即每秒1 2 0 0 位的传送速率,则每秒最多能发送1 2 0 0 + 1 2 = 1 0 0 个数据图8 - 2 波形示例图( 习题8 . 1 5 )微机与调制解调器通过2 3 2 c 总线连接时; 常使用哪9个信号线?各自的功能是什么?利用2 3 2 c 进行两个微机直接相连通信时,可采用什么连接方式,画图说明 解答)常用的9 个信号线及其各自的功能:TxD:串行数据发送端RxD:串行数据接收端RTS:发送请求信号,用于通知数据通信设备准备接收数据CTS:清除发送, CTS信号有效响应RTS信号,即允许发送RTS和 CTS是一对用于数据发送的联络信号。 DTR:数据终端准备就绪信号DSR:数据装置准备好信号;DTR和 DSR也可用做数据终端设备与数据通信设备间的联络信号就 葭 信号地,它为所有的信号提供一个公共的参考电平CD:载波检测信号,当本地调制解调器接收到来自对方的载波信号时,就从该引脚向数据终端设备提供有效信号.RI:振铃指示,当调制解调器接收到对方的拨号信号期间,该引脚信号作为铃响的指示、保持有效利用232C进行两个微机直接相连通信时、 可采用教材图8-25所示连接方式 习题8.16)8250的 IIR是只读的,且高5 位总是0 o 试分析XT机系统ROM-BIOS中下段程序的作用如不发生条件转移,则 RS232-BASE字单元将存放什么内容?mov bx,0mov dx,3fahin al, dxtest al, 0f8hjnz F18mov RS232-BASE, 3f8hinc bxinc bxF18: mov dx,2fahin al, dxtest a l, 0f8hjnz F19mov RS232-BASE[bx] ,2f8hinc bxinc bxF19: .......( 解答)ROM-BIOS中该段程序的作用是检测是否存在串行异步通信接口电路。 如果不发生条件转移,说明存在异步通信接口电路,RS232-BASE字单元存放异步通信接口电路的基地址:3F8H和 2F8H 习题8.17)首先采用自循环查询方式在本机上实现例题8-3o 然后购买或制作一个用于零调制解调器连接的RS-232C电缆,修改例题8-3采用正常的查询方式实现两台微机的通信如果在Windows的模拟DOS环境无法运行程序,则应该采用纯DOS启动微机,在实方式下运行读者还可以改进例题8-3的功能,例如每当按下回车键才将刚输入的字符串发送给对方,本机也显示发送的信息 解答)( 习题8.18)说明在模拟输入输出系统中, 传感器、 放大器、 滤波器、多路开关、 采样保持器的作用DAC和 ADC芯片是什么功能的器件?( 解答)传感器:将各种现场的物理量测量出来并转换成电信号放大器:放大器把传感器输出的信号放大到ADC所需的量程范围低通滤波器:滤波器用于降低噪声、滤去高频干扰,以增加信噪比多路开关:对多个模拟信号分时地接通到A/D转换器上转换,达到共用A/D转换器以节省硬件的目的采样保持器:对高速变化的信号,使用采样保持器可保证A /D 转换期间信号不变,保证转换精度D/A转换器:将微机处理后的数字量转换成为模拟量( 电压或电流)。 A/D转换器:将模拟量( 电压或电流)转换成为数字量输入微机处理 习题8.19)假定某8位 ADC输入电压范围是一5V〜 +5V ,求出如下输入电压Vin的数字量编码( 偏移码):① 1.5V ② 2V ③ 3.75V ( 4) -2.5V ⑤ -4.75V 解答)① A7H ② B4H ③ EOH ④ 40H ⑤ 06H( 习题8.20)ADC的转换结束信号起什么作用,可以如何使用该信号,以便读取转换结果?( 解答)当 A/D转换结束,ADC输出•个转换结束信号,通知主机读取结果有多种使用A/D转换结束信号的方法,对应的程序设计方法也不同查询方式:把结束信号作为状态信号经三态缓冲器送到主机系统数据总线的某一位上主机不断查询这个状态位,发现结束信号有效,便读取数据中断方式:把结束信号作为中断请求信号接到主机的中断请求线上AD C转换结束,主动向处理器申请中断处理器响应中断后,在中断服务程序中读取数据DMA传送方式: 如果ADC速度足够快, 可把结束信号作为DMA请求信号, 采用DMA传送方式延时传送方法:不使用结束信号,微机延时到转换结束读取数据8255图8 - 3习题8. 2 1附图( 习题8.21)某控制接口电路如本题图形。 需要控制时,8255A的 PC7输出一个正脉冲信号START启动A/D转换;ADC转换结束在提供一个低脉冲结束信号EOC的同时送出数字量处理器采集该数据,进行处理,产生控制信号现已存在一个处理子程序ADPRCS,其入口参数是在 AL寄存器存入待处理的数字量,出口参数为AL寄存器给出处理后的数字量假定8255端口 A, B, C 及控制端口的地址依次为FFF8H〜 FFFBH,赚 8255的端口 A 为方式1输入、端LJB为方式0 输出编写采用查询方式读取数据,实现上述功能的程序段 解答);8 2 5 5 A 初始化m o v al, 1 0 1 lOOOx bm o v d x , Offfbho ut d x , al;使 PC7 = 0 ( STA RT 为低)m o v al, 0 0 0 0 1 1 1 0 bm o v d x , Offfbho ut d x , al;启动A / D转换m o v al, 0 0 0 0 1 1 1 1 bm o v d x , Offfbho ut d x , al ;使 PC7 = 1 ( STA RT 为高)n o pm o v al, 0 0 0 0 1 1 1 0 bo ut d x , al ;使 PC7 = 0 ( STA RT 为低);杳询是否转换结束m o v d x , Offfahagai n : i n d x , alte st al, 2 0 h;PC5 = 0 ( 转换未结束,继续检测)j z agai n;PC5 = 1 ( 转换结束)m o v d x , 0 fff8 h ;输入数据i n al, d xc all ad p rc s ;处理数据m o v d x , 0 fff9 ho ut d x , al ;输出数据( 习题8 2 2 )图 8-19c矩阵键盘还可以使用反转方法识别按键。 首先,将行线作为控制线接一个输出端口,将列线作为检测线接一个输入端口C PU 通过输出端口将行线( 控制线)全部设置为低电平,然后从输入端口读取列线( 检测线)如果此时有键被按下,则必定会使某列线为 “0” 然后,将行线和列线的作用互换,即将列线作为控制线接输出端口,行线作为检测线接输入端口并且,将刚才读得的列值从列线所接端口输出,再读取行线的输入值,那么,闭合键所在的行线值必定为“0” 这样,当一个键被按下时,必定可以读得一对唯一的行值和列值能够采用反转法识别按键需要一个条件: 连接行线和列线的接口电路必须支持动态改变输入、输出方式图 8-19c使用8255A,其 3 个端口可以编程改变请编写扫描程序 解答)第9章处理器性能提高技术( 习题9 . 1 )简答题( 解答)( 1 )传统上提高计算机性能的方法是采用复杂的、功能强大的指令,即复杂指令集计算机结构CI SC 精简指令集计算机结构RI SC从根本上打破了这个观念, 使用简单指令,更便于硬件实现高性能 2 )分支预测技术是用于解决指令流水线技术中存在的控制相关,即转移指令导致性能降低的问题 3 )浮点数据采用规格化形式可以表达更大、更精确的数据,也避免编码的多样性。 4 )浮点数据编码无法表达任意精度的数据,所以需要舍入但整数编码表达的数据都是精确的数据 5 ) 多媒体指令的一个突出特点是一条指令同时处理多组数据, 即单指令多数据S IM D 习题9 . 2)判断题( 解答)①对②对③错④错⑤错( 习题9 . 3 )填空题C om pl ex In s n i cti on S et C om puter , 复杂指令集计算机,R educed, 精简的,C IS C指令预取( P F)、指令译码1 ( D1 )、指令译码2 ( D 2 )、指令执行( E X )和回写±27 26 , + ( 2 - 2- 23) X 2 ⑵,下溢,上溢3 2, 8 , 23C EH , 7 FH( 习题9 . 4 )通过处理器性能公式,说明影响程序执行时间的三个方面 解答)处理器执行时间=IC X C P I X T其中:IC 为程序的指令条数C P I为执行每条指令所需的平均时钟周期数T为每个时钟周期的时间,也就是时钟频率的倒数( 习题9 . 5 )什么是简单指令和复杂指令,结合R IS C 处理器,说明把指令分为简单和复杂的原因 角 星 答 )简单指令是指计算机基本的、常用的指令,往往其功能也比较简单。 而复杂指令是指功能强大的指令,但往往不常用计算机大部分时间是在执行简单指令,复杂指令的使用频度都比较低对一个C IS C 结构的指令系统而言,只有约2 0 % 的指令被经常使用,其使用量约占整个程序的8 0 % ;而该指令系统中大约8 0 % 的指令却很少使用,其使用量仅占整个程序的2 0 % ;而且使用频度较高的指令通常是那些简单指令 习题9 . 6 )R IS C 技术有哪些方面的主要特色?答①②B)③④⑤解W(/(\( 解答)指令条数较少寻址方式简单面向寄存器操作指令格式规整便于使用先进的流水线技术 习题9 . 7 )什么是指令流水线? 8 0 4 8 6采用哪几级流水线,各级的主要操作分别是什么?( 解答)指令流水线是多条指令重叠执行的一个处理器实现技术( 在一条指令还没有执行结束就开始后续指令)In tel 8 0 4 8 6采用5级指令流水线:①P F步骤—指令预取( P r efetch)处理器总是从高速缓存读取一个C a ch e行,为16个字节,平均包括5条指令② D1步骤——指令译码1 ( D eco de S ta g e 1)指令译码分成了 2个步骤,D1步骤对所有操作码和寻址方式信息进行译码。 ③ D2步骤——指令译码2 ( D eco de S ta g e 2 )D 2步骤将每个操作码扩展为ALU的控制信号,并进行较复杂的存储器地址计算④ EX步骤——指令执行( E x ecute)EX步骤完成ALU操作和C a ch e存取⑤ WB步骤——回 写( W r i te B a ck )WB步骤更新在EX步骤得到的寄存器数据和状标,忐 习题9 .8 )影响流水线效率的主要指令相关有哪三个方面?( 解答)资源冲突、数据相关,控制相关( 习题9 .9 )已知B F 6 00000H是一个单精度规格化浮点格式数据,它表达的实数是什么?( 解答)B F 6 00000H = 1011 1111 0110 00( X) 0000 0( X) 0 0000 ( X) 00 BB F 6 00000H= 1 01111110 11000000000000000000000 B符号位为1,表示负数指数编码是01111110,表示指数=12 6 —12 7 = - 1有效数字部分是 11000000000( X) 0000000000,表示有效数= 1.11 B = 1.7 5o所以,这个实数为:-1.7 5X2」 = -1.7 5X0.5= -0.8 7 5。 习题9 .10)实数真值2 8 .7 5如果用单精度规格化浮点数据格式表达,其编码是什么编程将单精度浮点数据的编码显示出来 解答)2 8 .7 5 = 0001 1100.118 = 1.11001 IB X 24于是,符号位=0指数部分是4 , 8位阶码为10000011 ( = 4 + 1 2 7 = 1 3 1 )有效数字部分是 11001100000000000000000»这样,28.75表示成单精度浮点数为:0 10000011 11001100000000000000000 B=01000001 11100110 00000000 00000000 B=41E60000H程序如下:;数据段f 3 2 d r ea 14 2 8 .7 5 ;单精度浮点数;代码段m o v ea x , dw o r d p tr f 3 2 d ;取 2 8 . 7 5 的浮点格式编码ca l l di sp h d(习题9.11)解释如下浮点格式数据的有关概念:( 1 ) 数据上溢和数据下溢( 2 ) 规格化有限数和非规格化有限数(3) NaN和无穷大[ 解答)(1)数据上溢:当数据比能够表达的最小数还要小、还要接近0 时,就是数据下溢。 数据下溢:当数据比能够表达的最大数还要大时,就是数据上溢2)规格化有限数:使用规格化格式表达的数据它表达的数值是:1.XXX…XX它的最高位恒为1 , 随后都是小数部分;有效数字只需要表达小数部分,隐含一个整数1非规格化有限数:指数编码为全0;有效数字仅表示小数部分、但不能是全0 , 表示的数值是:0.XXX…X X ,用于表达比规格化格式不能表达的更小的实数3)NaN:指数编码是全1、有效数字编码不是全0 的浮点格式编码,被称为非数NaN (Nota Number), 它不是实数无穷大:指数编码为全1 , 有效数字编码为全0 的浮点格式编码,用于表达大于规格化浮点数所能表达的最大数的真值习题9.12)什么是紧缩整型数据和紧缩浮点数据?扩展有SSE3指令的Pentium 4 支持哪些紧缩数据类型?(解答)紧缩整型数据是指多个8、16、32或 64位的整型数据组合形成一个整体紧缩浮点数据是指多个单精度或双精度浮点数据组合形成一个整体SSE3指令的Pentium 4 支持128位紧缩数据类型,具体有:紧缩字节、字、双字、4 字整型数据;紧缩单精度浮点数据;紧缩双精度浮点数据 习题9.13)SIMD是什么?举例说明MMX指令如何利用这个结构特点?( 解答)SIMD 表示单指令多数据( Single Instructor) Multiple D ata)。 例如,PADDB— •条指令可以实现8 组整型字节数据的求和,得到独立的8 个结果( 习题9.14)什么是环绕运算和饱和运算给出如下结果:( 1 ) 环绕加:7F38H+1707H( 2 ) 环绕减:1707H-7F38H( 3 ) 无符号饱和加:7F38H+1707H( 4 ) 无符号饱和减:1707H—7F38H( 5 ) 有符号饱和加:7F38H+1707H( 6 ) 有符号饱和减:1707H—7F38H( 解答)环绕运算:通常的算术运算,即当无符号数据的运算结果超过其数据类型界限时,它进行正常进位借位但是,每个进位或借位并不能反映出来饱和运算:指运算结果超过其数据界限时,其结果被最大或最小值所替代 1 ) 环绕加:7F38H+1707H=963FH( 2 ) 环绕减:1707H-7F38H=87CFH( 3 ) 无符号饱和加:7F38H+1707H=963FH( 4 ) 无符号饱和减:1707H—7F38H=OOOOH ( 饱和)( 5 ) 有符号饱和加:7F38H+1707H=7FFFH ( 饱和)( 6 ) 有符号饱和减:1707H-7F38H=87CFH( 习题9.15)简单说明如下名词( 概念) 的含义:( 1) Load-Store 结构( 2 ) 超级指令流水线( 3 ) 指令流水线的时空图( 4 ) 指令相关( 5 ) 就近舍入( 解答)(1) Load-Store结构: 处理器内部设置较多的通用寄存器, 使多数操作( 算术逻辑运算)都在寄存器与寄存器之间,只 有 “ 取 数 Load” 和 “ 存 数 Store” 指令访问存储器。 或者说,访问存储器只能通过Load和 Store指令实现 2 ) 超级指令流水线:将指令流水线的步骤( 阶段) 化分得更多,并加倍内部时钟频率,使紧接着的2 个步骤可以重叠一部分执行,使得每个时钟可以完成多条指令的执行,进而提高指令流水线的性能 3 ) 指令流水线的时空图:描绘流水线操作的时间空间图、简称时空图,其横坐标表示时间,纵坐标是指令处理的各个阶段、表示空间 4 ) 指令相关:指令流水线中,指令之间存在相互依赖关系,使得下一条指令无法在设计的单位时间内执行的情况 5 ) 就近舍入:浮点数据的舍入方法之一类似“ 四舍五入”原则舍入结果最接近准确值如果上下两个值一样接近,就取偶数结果( 最低位为0 ) 第10章并行处理技术( 习题1 0 .1 )简答题( 1 ) 英特尔所谓的微结构对应计算机层次结构的哪个层次?( 2 ) 新一代IA-32处理器将指令译码为微操作有什么特别的作用?( 3 ) 乱序执行是什么含义?( 4) Flynn分类法以什么内容为分类依据?( 5)为什么说动态超标量技术为软件提供了免费“ 性能午餐”?( 解答)( 1)微结构对应计算机层次结构的控制层 2) lA-32处理器将指令译码为微操作可以将复杂指令转换为简单指令, 便于硬件实现。 3)乱序执行是指令的执行不一定是传统的串行顺序方式,可能会出现后面指令先执行的情况 4)以并行操作的指令流个数和数据流个数为分类依据 5)因为动态超标量技术采用硬件实现性能提高,即使软件没有改进也能提高性能 习题10.2)判断题( 1)在 Pentium中,只要两条指令不存在数据相关,就能配对并行执行 2)指令流水线运用了时间重叠思想提高并行性 3)数据相关可以用寄存器重命名技术消除 4) Intel 64结构支持16个 64位整数通用寄存器 5) Intel Core微结构支持超线程技术 解答)①错②对③错④对⑤错( 习题10.3)填空题( 1)有两种性质的并行性,同 一 个 时 刻 发 生 的 并 行 性 称 ,同一段时间内发生的并行性称 2) Pentium处理器中,某时刻执行一条转移指令,它在BTB的历史位为1 0 ,则预测分支;如果确实发生分支,则该历史位成为;而如果预测错误,则该历史位成为如果某个转移指令的实际执行情况是分支“ 发生一不发生一发生一不发生一发生一不发生……”,则利用Pentium的分支预测机构,它的准确度约为百分之 o( 3)基 于 IA-64结构的安腾处理器使用了 技术,一 个 128位的指令束包括条指令,还有指示指令并行性的模板域。 4) Intel 64结构新增8 个通用寄存器,名称为:原来的8 个通用寄存器被扩展为64位,名称为 5)多核处理器属于多处理器系统,对应Flynn分类法的 系统 解答)① 同 时 性 ,并发性②发生转移,11, 01, 50③ VILW ( EPIC) , 3④ R8-R15, RAX〜 RSP⑤ MIMD( 习题10.4)对比 Intel 80486指令流水线和Pentium超标量指令流水线,指出它们的异同 解答)Pentium的超标量整数指令流水线的各个阶段类似Intel 80486,仍分成了 5 个步骤,但是其后3 个步骤可以在它的2 个流 水 线 ( U 流水线和V 流水线)同时进行.( 习题10.5)Pentium超标量指令流水线为什么限制复杂指令、存在数据相关的指令和转移指令等不能实现配对执行?( 解答)因为Pentium的两条指令流水线U 和 V 并不是完全相同的,例如V 流水线只能执行简单指令,所以不可能实现复杂指令的配对执行存在数据相关的指令, 需要执行完前一条指令才能得到后一条指令需要的操作数, 所以也无法同时进行执行存在转移指令, 需要执行完前一条指令才能决定是否执行后一条指令, 所以也不能配对执行。 习题10.6)什么是Pentium的动态分支预测和Pentium II的静态分支预测?对于如下两个程序片断,分别指出Pentium处理器第一次执行转移指令时动态分支预测的结果和Pentium II的静态分支预测的结果 1)单分支结构m o v e c x , 1 2c m p e a x , 7j n e E A X _ 7m o v e c x , 1 7E A X _ 7 :( 2)循环结构l o o p x : a d d l i s t [ e a x * 4 ] , 5d e c e a xj n z l o o p x( 解答)动态分支预测:Pentium维持一个分支目标缓冲器B T B ,用它记录最近使用的转移指令的有关情况,并动态预测当前转移指令是否发生分支;在预测正确时就可以无延迟的执行,如果预测错误,则产生3〜 4 个时钟的延迟静态分支预测:解决对于分支目标缓冲器BTB中 ( 动态分支预测)没有记录的转移指令的分支预测问题预测无条件转移指令发生分支 预测向前分支的条件转移指令不发生分支预测向后分支的条件转移指令发生分支 1) Pentium动态分支预测:不分支。 Pentium II静态分支预测:不分支( 2) Pentium动态分支预测:不分支Pentium II静态分支预测:分支( 习题10.7)说明NelBurst微结构的踪迹Cache为什么优于P6微结构的L1指令Cache? Core微结构的双核处理器共享L2 Cache为什么优于Pentium D 独立使用L2 Cache?( 解答)踪迹Cache存储已译码指令即微操作存储已译码指令使得IA-32指令的译码从主要执行循环中分离出来指令只被译码一次,并被放置于踪迹C ache,然后就象常规指令Cache一样重复使用P6微结构的L1指令Cache仍然是存储原始指令代码的指令C ache,取指后还需要译码Core微结构中, 两个处理器共享L2 Cache,可以充分利用Cache空间为两个处理器共用每个处理器各有独立的L2 C ache,则 Cache只能为对应的处理器服务 习题10.8)简单说明如下名词( 概念)的含义:( 1)超标量技术( 2 )指令级并行( 3 )乱序执行( 4 )寄存器重命名( 5 )推测执行( 6 ) V L I W( 7 ) E P I C( 8 )超线程技术( 9 ) S I M D( 1 0 )多核处理器( 解答)( 1 )超标量技术:指提高标量指令的执行性能而设计的一种处理器技术。 处理器采用多条指令流水线,可以实现一个时钟周期完成多条指令的执行 2 )指令级并行:指令是处理器执行的基本单位指令级并行是指发掘指令之间的并行执行能力,也就是提高处理器内部操作的并行程度 3 )乱序执行:多条指令进入处理器执行单元,指令执行的顺序不必一定按照程序顺序、可能是乱序的,即乱序执行 4 )寄存器重命名:对于使用相同寄存器名引起的假数据相关,只要更改寄存器名,就可以消除指令相关的技术 5 )推测执行:处理器采用分支预测技术推测指令分支路径,并按照推测结果发送和执行指令,这就是推测执行6) V L I W :超长指令字,一种利用软件编译器方法提高指令并行执行能力的技术7) E P I C :显式并行计算,源于V L I W技术,64位I ta n i um系列处理器主要采用的提高性能的技术 8 ) 超线程技术:它使一个物理处理器看似有两个逻辑处理器,每个逻辑处理器维持一套完整的结构状态,共享几乎物理处理器上所有执行资源9) S I M D :单指令多数据,指一条指令可以同时对多组数据进行操作(执行)1 0 )多核处理器: 在一个物理封装内制作了两个或多个处理器执行核心形成的处理器。 习题1 0 . 9)简单总结新一代I A - 32处理器的结构特点:(1 ) P en ti um的超标量指令流水线(2 ) P en ti um I I的动态执行结构(3) P en ti um 4的超线程技术( 4 )多核处理器结构(解答)(1 ) P en ti um的超标量指令流水线:利用资源重复的思想,P en ti um处理器采用超标量技术, 设计了 2个可以并行操作的执行单元, 形成了 2条指令流水线 这样, 在一定条件下,P en ti um允许在一个时钟周期中同时运行2条整数指令,或者运行一条浮点指令(但浮点交换指令可以与另一条浮点指令配对同时执行)2 ) P en ti um "的动态执行结构:包含3个组成部分:顺序发送前端、乱序核心和顺序退出单元,它们之间通过重排序缓冲区R O B (R e- O r der B uf f er )建立联系,具有采用3路超标量、1 2级超级流水线3) P en ti um 4的超线程技术:超线程技术为I A - 32结构引入了同时多线程概念它使一个物理处理器看似有两个逻辑处理器 操作系统和用户程序像传统多处理器系统一样在逻辑处理器上调度线程或进程。 两个逻辑处理器的指令可以在共享的执行资源上同时保持和执行( 4 ) 多核处理器结构:在一个物理封装内制作了两个或多个处理器执行核心,使多个处理器耦合得更加紧密,同时共享系统总线、主存等资源,可以有效地执行多线程的应用程序习题 10.10)追踪处理器技术最新发展,选择某个方面,做一篇新技术发展的论文 。












