微机原理与接口技术(钱晓捷版)课后习题答案
更新时间:2024-06-05 05:41:01 阅读量: 综合文库 文档下载
“微机原理与接口技术”习题解答
第1章 微型计算机系统
〔习题1.1〕简答题
〔解答〕
① 处理器每个单位时间可以处理的二进制数据位数称计算机字长。 ② 总线信号分成三组,分别是数据总线、地址总线和控制总线。 ③ PC机主存采用DRAM组成。
④ 高速缓冲存储器Cache是处理器与主存之间速度很快但容量较小的存储器。
⑤ ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。
⑥ 中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。
⑦ 主板芯片组是主板的核心部件,它提供主板上的关键逻辑电路。 ⑧ MASM是微软开发的宏汇编程序。
⑨ 指令的处理过程。处理器的“取指—译码—执行周期” 是指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。
⑩ 机器语言层,即指令集结构。
(学生很多认为是:汇编语言层。前4章主要涉及汇编语言,但本书还有很多处理器原理等内容) 〔习题1.2〕判断题
① 错 ② 错 ③ 对 ④ 错 ⑤ 对 ⑥ 错 ⑦ 错 ⑧ 对 ⑨ 错 ⑩ 错 〔 〔解答〕
① Central Processing Unit,中央处理单元,处理器 ② 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和SSE3,最新的奔腾4处理器还支持64位指令集。
题外话:大家可以通过阅读相关资料、查询互联网获得更加详细的发展情况。可以考虑组织成一篇或多篇论文。 〔习题1.7〕
区别如下概念:助记符、汇编语言、汇编语言程序和汇编程序。 〔解答〕
助记符:人们采用便于记忆、并能描述指令功能的符号来表示机器指令操作码,该符号称为指令助记符。
汇编语言:用助记符表示的指令以及使用它们编写程序的规则就形成汇编语言。 汇编语言程序:用汇编语言书写的程序就是汇编语言程序,或称汇编语言源程序。 汇编程序:汇编语言源程序要翻译成机器语言程序才可以由处理器执行。这个翻译的过程称为“汇编”,完成汇编工作的程序就是汇编程序(Assembler)。 〔习题1.8〕
区别如下概念:路径、绝对路径、相对路径、当前目录。系统磁盘上存在某个可执行文件,但在DOS环境输入其文件名却提示没有这个文件,是什么原因? 〔解答〕
路径:操作系统以目录形式管理磁盘上的文件,文件所在的分区和目录就是该文件的路径。
绝对路径:从根目录到文件所在目录的完整路径称为“绝对路径”。是保证文件唯一性的标示方法。
相对路径:从系统当前目录到文件所在目录的路径称为相对路径。
- -2
当前目录:用户当前所在的目录就是当前目录。
指明的路径不正确,或者执行了另外一个同名的文件。 〔习题1.9〕
什么是摩尔定律?它能永久成立吗? 〔解答〕
每18个月,集成电路的性能将提高一倍,而其价格将降低一半。(1965年,Intel公司的创始人之一摩尔预言:集成电路上的晶体管密度每年将翻倍。现在这个预言通常表达为:每隔18个月硅片密度(晶体管容量)将翻倍;也常被表达为:每18个月,集成电路的性能将提高一倍,而其价格将降低一半。)
不能。由于电子器件的物理极限在悄然逼近,摩尔定律不会永远持续。 〔习题1.10〕
冯·诺依曼计算机的基本设计思想是什么? 〔解答〕
采用二进制形式表示数据和指令。指令由操作码和地址码组成。
将程序和数据存放在存储器中,计算机在工作时从存储器取出指令加以执行,自动完成计算任务。这就是“存储程序”和“程序控制”(简称存储程序控制)的概念。
指令的执行是顺序的,即一般按照指令在存储器中存放的顺序执行,程序分支由转移指令实现。
计算机由存储器、运算器、控制器、输入设备和输出设备五大基本部件组成,并规定了5部分的基本功能。 〔习题1.11〕
计算机系统通常划分为哪几个层次?普通计算机用户和软件开发人员对计算机系统的认识一样吗? 〔解答〕
最上层是用户层。
第5层是高级语言层。 第4层是汇编语言层。 第3层是操作系统层。 第2层是机器语言层。 第1层是控制层。
第0层是数字电路层。
普通计算机用户和软件人员对计算机系统的认识并不一样。普通计算机用户看到的计算机,也就是我们最熟悉的计算机,属于用户层,而软件人员看到的属于高级语言层或是汇编语言层。 〔习题1.12〕
什么是系列机和兼容机?你怎样理解计算机中的“兼容”特性?例如,你可以用PC机为例,谈谈你对软件兼容(或兼容性)的认识,说明为什么PC机具有如此强大的生命力?
〔解答〕
系列机是指在一个厂家生产的具有相同计算机结构,但具有不同组成和实现的一系列(Family)不同档次、不同型号的机器。
兼容机是指不同厂家生产的具有相同计算机结构(不同的组成和实现)的计算机。
- -3
兼容是一个广泛的概念,包括软件兼容、硬件兼容、系统兼容等。其中软件兼容是指同一个软件可以不加修改地运行于体系结构相同的各档机器,结果一样但运行时间可能不同。软件兼容可从机器性能和推出时间分成向上(向下)和向前(向后)兼容。例如32位PC机就陆续增加了对浮点处理指令、多媒体指令等的支持。在保证向后兼容的前提下,不断改进其组成和实现,延续计算机结构的生命,才使得PC机具有如此强大的生命力。 〔习题1.13〕
英特尔公司最新Intel 80x86处理器是什么?请通过查阅相关资料(如英特尔公司网站),说明其主要特点和采用的新技术。 〔解答〕
酷睿2多核处理器。 〔习题1.14〕
说明高级语言、汇编语言、机器语言三者的区别,谈谈你对汇编语言的认识。 〔解答〕
高级语言与具体的计算机硬件无关,其表达方式接近于所描述的问题,易为人们接受和掌握,用高级语言编写程序要比低级语言容易得多,并大大简化了程序的编制和调试,使编程效率得到大幅度的提高。而汇编语言是为了便于理解与记忆,将机器指令用助记符代替而形成的一种语言。汇编语言的语句通常与机器指令对应,因此,汇编语言与具体的计算机有关,属于低级语言。它比机器语言直观,容易理解和记忆,用汇编语言编写的程序也比机器语言易阅读、易排错。机器语言的每一条机器指令都是二进制形式的指令代码,计算机硬件可以直接识别。高级语言程序通常也需要翻译成汇编语言程序,再进一步翻译成机器语言代码。 〔习题1.15〕
为了更好地进行编程实践,请进入Windows操作系统下的控制台环境(或MS-DOS模拟环境),练习常用命令。
第2章 处理器结构
〔习题2.1〕简答题
〔解答〕
① ALU是算术逻辑运算单元,负责处理器所能进行的各种运算,主要是算术运算和逻辑运算。
② 取指是指从主存取出指令代码通过总线传输到处理器内部指令寄存器的过程。8086分成总线接口单元和指令执行单元,可以独立操作。在执行单元执行一条指令的同时,总线接口单元可以读取下一条指令,等到执行时不需要进行取指了,所以称为预取。
③ Pentium采用分离的Cache结构,一个用做指令Cache,一个用做数据Cache。 ④ 堆栈的存取原则是先进后出(也称为后进先出)操作方式存取数据。 ⑤ 标志寄存器主要保存反映指令执行结果和控制指令执行形式的有关状态。 ⑥ 执行了一条加法指令后,发现ZF=1,表明运算结果为0。 ⑦ 没有。
⑧ 汇编语言的标识符大小写不敏感,即表示字母大小写不同、但表示同一个符号。 ⑨ 不会。
⑩ 指令的操作数需要通过存储器地址或I/O地址,才能查找到数据本身,故称数据寻址方式。
- -4
〔习题2.2〕判断题 〔解答〕
① 错 ⑥ 对
② 对 ⑦ 对 ③ 对 ⑧ 错 ④ 对 ⑨ 对 ⑤ 错 ⑩ 对
〔习题2.3〕填空题
〔解答〕
① 32,DX,DH ② 16
③ 段地址,偏移地址,EIP,IP ④ 00100110,0
⑤ 73C00H,73800H
⑥ EBX,ECX,ESI,EDI,EBP,ESP ⑦ 实地址,64KB
⑧ ASM,目标模块,FLAT
⑨ 立即数寻址、寄存器寻址和存储器寻址 ⑩ DS,SS 〔习题2.4〕
处理器内部具有哪3个基本部分?8086分为哪两大功能部件?其各自的主要功能是什么?
〔解答〕
处理器内部有ALU、寄存器和指令处理三个基本单元。 8086有两大功能部件:总线接口单元和执行单元。 总线接口单元:管理着8086与系统总线的接口,负责处理器对存储器和外设进行访问。8086所有对外操作必须通过BIU和这些总线进行。
执行单元EU:负责指令译码、数据运算和指令执行。 〔习题2.5〕
8086怎样实现了最简单的指令流水线? 〔解答〕
8086中,指令的读取是在BIU单元,而指令的执行是在EU单元。因为BIU和EU两个单元相互独立、分别完成各自操作,所以可以并行操作。也就是说,在EU单元对一个指令进行译码执行时,BIU单元可以同时对后续指令进行读取;这就是最简单的指令流水线技术。 〔习题2.6〕
什么是标志?什么是IA-32处理器的状态标志、控制标志和系统标志?说明状态标志在标志寄存器EFLAGS的位置和含义。 〔解答〕
标志:用于反映指令执行结果或控制指令执行形式的一个或多个二进制数位。例如,有些指令执行后会影响有关标志位;有些指令的执行要利用相关标志。
状态标志:用来记录程序运行结果的状态信息。 控制标志:DF标志,控制字符串操作的地址方向。
- -5
系统标志:用于控制处理器执行指令的方式。
状态标志在标志寄存器EFLAGS中的位置和含义如下:
31 …… 11 OF 10 9 8 7 SF 6 ZF 5 4 AF 3 2 PF 1 0 CF 〔习题2.7〕
举例说明CF和OF标志的差异。 〔解答〕
进位标志CF表示无符号数运算结果是否超出范围,超出范围后加上进位或借位,运算结果仍然正确;溢出标志OF表示有符号数运算结果是否超出范围,如果超出范围,运算结果已经不正确。
例1:3AH + 7CH=B6H
无符号数运算:58+124=182,范围内,无进位。 有符号数运算:58+124=182,范围外,有溢出。 例2:AAH + 7CH=①26H
无符号数运算:170+124=294,范围外,有进位。 有符号数运算:-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处理器有代码段、数据段、堆栈段三类基本段。
代码段:存放程序的指令代码。程序的指令代码必须安排在代码段,否则将无法正常执行。
数据段:存放当前运行程序所用的数据。程序中的数据默认是存放在数据段,也可以存放在其他逻辑段中。
- -6
堆栈段:主存中堆栈所在的区域。程序使用的堆栈一定在堆栈段。 〔习题2.10〕
什么是平展存储模型、段式存储模型和实地址存储模型? 〔解答〕
平展存储模型下,对程序来说存储器是一个连续的地址空间,称为线性地址空间。程序需要的代码、数据和堆栈都包含在这个地址空间中。
段式存储模型下,对程序来说存储器由一组独立的地址空间组成,独立的地址空间称为段。通常,代码、数据和堆栈位于分开的段中。
实地址存储模型是8086处理器的存储模型。它是段式存储模型的特例,其线性地址空间最大为1MB容量,由最大为64KB的多个段组成。 〔习题2.11〕
什么是实地址方式、保护方式和虚拟8086方式?它们分别使用什么存储模型? 〔解答〕
实地址方式:与8086具有相同的基本结构,只能寻址1MB物理存储器空间,逻辑段最大不超过64KB;但可以使用32位寄存器、32位操作数和32位寻址方式;相当于可以进行32位处理的快速8086。实地址工作方式只能支持实地址存储模型。
保护方式:具有强大的段页式存储管理和特权与保护能力,使用全部32条地址总线,可寻址4GB物理存储器。保护方式通过描述符实现分段存储管理,每个逻辑段可达4GB。处理器工作在保护方式时,可以使用平展或段式存储模型。
虚拟8086方式:在保护方式下运行的类似实方式的运行环境,只能在1MB存储空间下使用“16位段”。 处理器工作在虚拟8086方式时,只能使用实地址存储模型。 〔习题2.12〕
汇编语句有哪两种,每个语句由哪4个部分组成? 〔解答〕
汇编语句有两种:执行性语句(处理器指令)、说明性语句(伪指令)。 每个语句有:标号、指令助记符、操作数或参数、注释4个部分组成。 〔习题2.13〕
汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。 〔解答〕
汇编语言程序的开发有4个步骤:
编辑:用文本编辑器形成一个以ASM为扩展名的源程序文件。 汇编:用汇编程序将ASM文件转换为OBJ模块文件。
连接:用连接程序将一个或多个目标文件链接成一个EXE或COM可执行文件。 调试:用调试程序排除错误,生成正确的可执行文件。 〔习题2.14〕
MASM汇编语言中,下面哪些是程序员可以使用的正确的标识符。 FFH,DS,0xvab,Again,next,@data,h_ascii,6364b,.exit,small 〔解答〕
FFH,Again,next,h_ascii 〔习题2.15〕
给出IA-32处理器的32位寻址方式和16位寻址方式的组成公式,并说明各部分作用。
- -7
〔解答〕
① 32位存储器寻址方式的组成公式
32位有效地址 = 基址寄存器+(变址寄存器×比例)+位移量 其中的4个组成部分是:
·基址寄存器??任何8个32位通用寄存器之一;
·变址寄存器??除ESP之外的任何32位通用寄存器之一;
·比例??可以是1,2,4或8(因为操作数的长度可以是1,2,4或8字节); ·位移量??可以是8或32位有符号值。 ② 16位存储器寻址方式的组成公式
16位有效地址 = 基址寄存器+变址寄存器+位移量
其中基址寄存器只能是BX或BP,变址寄存器只能是SI或DI,位移量是8或16位有符号值。 〔习题2.16〕
说明下列指令中源操作数的寻址方式?假设VARD是一个双字变量。 (1)mov edx,1234h (2)mov edx,vard (3)mov edx,ebx (4)mov edx,[ebx]
(5)mov edx,[ebx+1234h] (6)mov edx,vard[ebx] (7)mov edx,[ebx+edi]
(8)mov edx,[ebx+edi+1234h] (9)mov edx,vard[esi+edi] (10)mov edx,[ebp*4] 〔解答〕
① 立即数 ② 直接 ③ 寄存器
④ 寄存器间接 ⑤ 寄存器相对 ⑥ 寄存器相对 ⑦ 基址变址
⑧ 相对基址变址 ⑨ 相对基址变址 ⑩ 带比例寻址 〔习题2.17〕
使用本书配套的软件包(或者按照本书说明)创建MASM开发环境,通过编辑例题2-1和例题2-2程序、汇编连接生成可执行程序和列表文件,掌握汇编语言的开发。
第3章 数据处理
〔习题3.1〕简答题 〔解答〕
- -8
① 没有。使用二进制8位表达无符号整数,257没有对应的编码。 ② 字符“'F'”的ASCII码就是数值46H,所以没有区别。
③ 汇编程序在汇编过程中对数值表达式计算,得到一个确定的数值,故称数值表达式为常量。
④ 不能。数值500大于一个字节所能表达的数据量,所以不能为字节变量赋值。 ⑤ 源、目标寄存器位数不同,不能用该指令进行数据交换。
⑥ 前者在指令执行时获得偏移地址,是正确的;但后者的OFFSET只能在汇编阶段获得偏移地址,但此时寄存器内容是不可知的,所以无法获得偏移地址。
⑦ INC,DEC,NEG和NOT指令的操作数既是源操作数也是目的操作数。 ⑧ 大小写字母转换利用它们的ASCII码相差20H。
⑨ 加减法不区别无符号数和有符号数,但根据运算结果分别设置标志寄存器的CF和OF标志,可利用CF和OF进行区别。
⑩ 逻辑与运算规则类似二进制的乘法,所以称其为逻辑乘。 〔习题3.2〕判断题 〔解答〕
① 对 ⑥ 对
② 对 ⑦ 错 ③ 对 ⑧ 错 ④ 错 ⑨ 对 ⑤ 错 ⑩ 对
〔习题3.3〕填空题
〔解答〕
① BYTE,OFFSET ② 97,61,小写字母a
③ 0DH(13),0AH(10) ④ 8843H
⑤ DWORD,4,WORD PTR XYZ ⑥ 3
⑦ 78894111 ⑧ 0,0,0
⑨ 0123456788765432H,83H ⑩ 4 〔习题3.4〕
下列十六进制数表示无符号整数,请转换为十进制形式的真值: ① FFH ② 0H ③ 5EH ④ EFH 〔解答〕
① 255 ② 0 ③ 94 ④ 239 〔习题3.5〕
将下列十进制数真值转换为压缩BCD码: ① 12 ② 24 ③ 68 ④ 99 〔解答〕
- -9
① 12H ② 24H ③ 68H ④ 99H 〔习题3.6〕
将下列压缩BCD码转换为十进制数:
① 10010001 ② 10001001 ③ 00110110 ④ 10010000 〔解答〕
① 91 ② 89 ③ 36 ④ 90 〔习题3.7〕
将下列十进制数用8位二进制补码表示: ① 0 ② 127 ③-127 ④ -57 〔解答〕
① 00000000 ② 01111111 ③ 10000001 ④ 11000111 〔习题3.8〕
进行十六进制数据的加减运算,并说明是否有进位或借位: ① 1234H+7802H ② F034H+5AB0H ③ C051H-1234H ④ 9876H-ABCDH 〔解答〕
① 1234H+7802H=8A36H,无进位 ② F034H+5AB0H=4AF4H,有进位 ③ C051H-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对应的ASCII码依次是:61~7AH。 ASCII码0DH和0AH分别对应的是回车和换行字符。 〔习题3.10〕
设置一个数据段,按照如下要求定义变量或符号常量:
- -10
① my1b为字符串变量:Personal Computer ② my2b为用十进制数表示的字节变量:20 ③ my3b为用十六进制数表示的字节变量:20 ④ my4b为用二进制数表示的字节变量:20 ⑤ my5w为20个未赋值的字变量 ⑥ my6c为100的常量
⑦ my7c表示字符串:Personal Computer 〔解答〕
my1b my2b my3b my4b my5w my6c my7c
byte 'Personal Computer' byte 20 byte 14h
byte 00010100b word 20 dup(?) = 100
equ
〔习题3.11〕
定义常量NUM,其值为5;数据段中定义字数组变量DATALIST,它的头5个字单元中依次存放-10,2,5和4,最后1个单元初值不定。 〔解答〕
num equ 5
datalist byte -10,2,5,4,?
〔习题3.12〕
从低地址开始以字节为单位,用十六进制形式给出下列语句依次分配的数值:
byte 'ABC',10,10h,'EF',3 dup(-1,?,3 dup(4)) word 10h,-5,3 dup(?)
〔解答〕
41 42 43 0A 10 45 46 FF 00 04 04 04 FF 00 04 04 04 FF 00 04 04 04 10 00 FB FF 00 00 00 00 00 00 〔习题3.13〕
设在某个程序中有如下片段,请写出每条传送指令执行后寄存器EAX的内容:
varw varb vard buff mess
; 数据段 org 100h
word 1234h,5678h byte 3,4
dword 12345678h byte 10 dup(?) byte 'hello' ; 代码段
mov eax,offset mess
mov eax,type buff+type mess+type vard
mov eax,sizeof varw+sizeof buff+sizeof mess mov eax,lengthof varw+lengthof vard
〔解答〕
① EAX=0114H ② EAX=0006H
- -11
③ EAX=0013H ④ EAX=0003H 〔习题3.14〕
按照如下输出格式,在屏幕上显示ASCII表: | 0 1 2 3 4 5 6 7 8 9 A B C D E F ---+-------------------------------- 20 | ! “ # ... 30 | 0 1 2 3 ... 40 | @ A B C ... 50 | P Q R S ... 60 | ‘ a b c ... 70 | p q r s ...
表格最上一行的数字是对应列ASCII代码值的低4位(用十六进制形式),而表格左边的数字对应行ASCII代码值的高4位(用十六进制形式)。编程在数据段直接构造这样的表格、填写相应ASCII代码值(不是字符本身),然后使用字符串显示子程序DISPMSG实现显示。 〔解答〕
include io32.inc .data table byte ' |0 1 2 3 4 5 6 7 8 9 A B C D E F',13,10 byte '---+-------------------------------',13,10 byte
|',20h,20h,21h,20h,22h,20h,23h,20h,24h,20h,25h,20h,26h,20h,27h,20h,28h,20h,29h,20h byte 2ah,20h,2bh,20h,2ch,20h,2dh,20h,2eh,20h,2fh,20h,13,10 byte
|',30h,20h,31h,20h,32h,20h,33h,20h,34h,20h,35h,20h,36h,20h,37h,20h,38h,20h,39h,20h byte 3ah,20h,3bh,20h,3ch,20h,3dh,20h,3eh,20h,3fh,20h,13,10 byte
|',40h,20h,41h,20h,42h,20h,43h,20h,44h,20h,45h,20h,46h,20h,47h,20h,48h,20h,49h,20h byte 4ah,20h,4bh,20h,4ch,20h,4dh,20h,4eh,20h,4fh,20h,13,10 byte
|',50h,20h,51h,20h,52h,20h,53h,20h,54h,20h,55h,20h,56h,20h,57h,20h,58h,20h,59h,20h byte 5ah,20h,5bh,20h,5ch,20h,5dh,20h,5eh,20h,5fh,20h,13,10 byte
|',60h,20h,61h,20h,62h,20h,63h,20h,64h,20h,65h,20h,66h,20h,67h,20h,68h,20h,69h,20h byte 6ah,20h,6bh,20h,6ch,20h,6dh,20h,6eh,20h,6fh,20h,13,10 byte
|',70h,20h,71h,20h,72h,20h,73h,20h,74h,20h,75h,20h,76h,20h,77h,20h,78h,20h,79h,20h byte 7ah,20h,7bh,20h,7ch,20h,7dh,20h,7eh,20h,7fh,20h,13,10 byte 0 .code start: mov eax,offset table call dispmsg exit 0 end start
'20
'30
'40
'50
'60
'70
〔习题3.15〕
数据段有如下定义,IA-32处理器将以小端方式保存在主存:
- -12
var dword 12345678h
现以字节为单位按地址从低到高的顺序,写出这个变量内容。并说明如下指令的执行结果:
mov eax,var mov bx,var mov cx,var+2 mov dl,var mov dh,var+3
; EAX=__________ ; BX=__________ ; CX=__________ ; DL=__________ ; DH=__________
可以编程使用十六进制字节显示子程序DSIPHB顺序显示各个字节进行验证,还可以使用十六进制双字显示子程序DSIPHD显示该数据进行对比。 〔解答〕
小端方式采用“低对低、高对高”,即低字节数据存放在低地址存储单元、高字节数据存放在高地址存储单元。以字节为单位按地址从低到高的顺序,var变量的内容:78H、56H、34H、12H。
; EAX=12345678H ; BX=5678H ; CX=1234H ; DL=78H ; DH=12H
〔习题3.16〕
使用若干MOV指令实现交互指令“XCHG EBX,[EDI]”功能。 〔解答〕
push eax mov eax,ebx mov ebx,[edi] mov [edi],eax pop eax
; 可以没有
; 可以没有
〔习题3.17〕
假设当前ESP=0012FFB0H,说明下面每条指令后,ESP等于多少?
push eax push dx
push dword ptr 0f79h pop eax
pop word ptr [bx] pop ebx
〔解答〕
ESP=0012FFACH ESP=0012FFAAH ESP=0012FFA6H ESP=0012FFAAH ESP=0012FFACH ESP=0012FFB0H 〔习题3.18〕
已知数字0~9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H;请为如下程序的每条指令加上注释,说明每条指令的功能和执行结果。
- -13
table ; 数据段
byte 18h,34h,05h,06h,09h,0ah,0ch,11h,12h,14h ; 代码段
mov ebx,offset table mov al,8 xlat
为了验证你的判断,不妨使用本书的I/O子程序库提供的子程序DISPHB显示换码后AL的值。如果不使用XLAT指令,应如何修改? 〔解答〕
table
; 数据段
byte 18h,34h,05h,06h,09h,0ah,0ch,11h,12h,14h ; 定义格雷码表 ; 代码段
mov ebx,offset table ; EBX=格雷码表首地址 mov al,8 ; AL=8 xlat ; AL=12H(8的格雷码) mov ebx,offset table mov eax,0 mov al,8 mov al,[eax+ebx]
; EBX=格雷码表首地址 ; AL=8
; AL=12H(8的格雷码)
不使用XLAT指令:
〔习题3.19〕
请分别用一条汇编语言指令完成如下功能:
(1)把EBX寄存器和EDX寄存器的内容相加,结果存入EDX寄存器。
(2)用寄存器EBX和ESI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。
(3)用EBX和位移量0B2H的寄存器相对寻址方式把存储器中的一个双字和ECX寄存器的内容相加,并把结果送回存储器中。
(4)将32位变量VARD与数3412H相加,并把结果送回该存储单元中。 (5)把数0A0H与EAX寄存器的内容相加,并把结果送回EAX中。 〔解答〕
① add edx,ebx
② add al,[ebx+esi] ③ add [bx+0b2h],cx ④ add varw,3412h ⑤ add eax,0a0h
〔习题3.20〕
分别执行如下程序片断,说明每条指令的执行结果:
(
〔解答〕
(1)
; EAX=80H
; EAX=83H,CF=0,SF=0 ; EAX=103H,CF=0,OF=0 ; EAX=106H,CF=0,ZF=0
(2)
; EAX=100
- -14
; EAX=300,CF=0
(3)
; EAX=100
; EAX=44,CF=1(包含256的进位含义:256+44=300)
(4)
mov al,7fh sub al,8 sub al,80h sbb al,3
; AL=7FH
; AL=77H,CF=0,SF=0 ; AL=F7H,CF=1,OF=1 ; AL=F3H,CF=0,ZF=0
〔习题3.21〕
给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:
mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al
; AL=89H ; AL=12H ; AL=0AFH ; AL=0AFH ; AL=00H ; AL=0FFH ; AL=00H
CF ZF 1 0 0 0 1 0 0 1 0 0 0 1
SF 0 1 1 0 1 0
OF 1 0 0 0 0 0
PF 1 1 1 1 1 1
〔解答〕
〔习题3.22〕
有两个64位无符号整数存放在变量buffer1和buffer2中,定义数据、编写代码完成EDX.EAX←buffer1-buffer2功能。 〔解答〕
buffer1 buffer2
; 数据段
qword 67883000h qword 67762000h ; 代码段
mov eax,dword ptr buffer1 mov edx,dword ptr buffer1+4 sub eax,dword ptr buffer2 sbb edx,dword ptr buffer2+4
〔习题3.23〕
分别执行如下程序片断,说明每条指令的执行结果: 〔解答〕
(1)
; ESI=9CH ; ESI=80H ; ESI=FFH ; ESI=01H
- -15
(2)
; EAX=1010B(可以有前导0,下同) ; EAX=0010B,CF=1 ; EAX=0100B,CF=0 ; EAX=0000B,CF=0
(3)
; EAX=1011B(可以有前导0,下同) ; EAX=101100B,CF=0 ; EAX=10110B,CF=0 ; EAX=10111B,CF=0
(4)
; EAX=0,CF=0,OF=0 ; ZF=1,SF=0,PF=1
〔习题3.24〕
3.24 给出下列各条指令执行后AX的结果,以及状态标志CF、OF、SF、ZF、PF的状态。
mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax
test ax,0f0f0h mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax
test ax,0f0f0h
; AX=1470H ; AX=1470H ; AX=1470H ; AX=0000H ; AX=FFFFH ; AX=0F0F0H
CF OF 0 0 0 0 0 0 0 0 0 0
SF 0 0 0 0 1
ZF 0 0 1 1 0
PF 0 0 1 1 1
〔解答〕
〔习题3.25〕
逻辑运算指令怎么实现复位、置位和求反功能? 〔解答〕
AND指令同“0”与实现复位,OR指令同“1”或实现置位,XOR同“1”异或实现求反。 〔习题3.26〕
说明如下程序段的功能:
next:
mov ecx,16 mov bx,ax shr ax,1 rcr edx,1 shr bx,1 rcr edx,1 loop next mov eax,edx
〔解答〕
将AX的每一位依次重复一次,所得的32位结果保存于EAX中。
- -16
〔习题3.27〕
编程将一个64位数据逻辑左移3位,假设这个数据已经保存在EDX.EAX寄存器对中。 〔解答〕
again:
; 代码段 mov ecx,3 shl eax,1 rcl edx,1 loop again
〔习题3.28〕
编程将一个压缩BCD码变量(例如92H)转换为对应的ASCII码,然后调用DISPC子程序(在输入输出子程序库中)显示。 〔解答〕
bcd
; 数据段 byte 92h ; 代码段 mov al,bcd shr al,4 add al,30h call dispc mov al,bcd and al,0fh add al,30h call dispc
〔习题3.29〕
以MOVS指令为例,说明串操作指令的寻址特点,并用MOV和ADD等指令实现MOVSD的功能(假设DF=0)。 〔解答〕
MOVS指令的功能是:
ES:[EDI]←DS:[ESI];ESI←ESI±1/2/4,EDI←EDI±1/2/4 由此可看出串操作指令的寻址特点:
源操作数用寄存器ESI间接寻址,默认在DS指向的数据段,但可以改变;目的操作数用寄存器EDI间接寻址,只能在ES指向的附加数据段;每执行一次串操作,源指针ESI和目的指针EDI将自动修改:±1(字节),±2(字)或±4(双字)。指针的增量和减量控制由DF标志确定,DF=0,进行增量;DF=1,进行减量。
push eax
mov eax,[esi] mov es:[edi],eax add esi,4 add edi,4
〔习题3.30〕
说明如下程序执行后的显示结果:
msg
; 数据段
byte 'WELLDONE',0 ; 代码段
mov ecx,(lengthof msg)-1
- -17
again: mov ebx,offset msg mov al,[ebx] add al,20h mov [ebx],al add ebx,1 loop again
mov eax,offset msg call dispmsg
如果将其中语句“mov ebx,offset msg”改为“xor ebx,ebx”,则利用EBX间接寻址的两个语句如何修改成EBX寄存器相对寻址,就可以实现同样功能? 〔解答〕
显示结果:welldone EBX寄存器相对寻址:
mov al,msg[ebx] mov msg[ebx],al
〔习题3.31〕
下面程序的功能是将数组ARRAY1的每个元素加固定值(8000H),将和保存在数组ARRAY2。在空白处填入适当的语句或语句的一部分。
array1 array2
again:
; 数据段
dword 1,2,3,4,5,6,7,8,9,10 dword 10 dup(?) ; 代码段
mov ecx,lengthof array1 mov ebx,0
mov eax,array1[ebx*4] add eax,8000h
mov ______________ add ebx,__________ loop again
mov array2[ebx*4],eax add ebx,1
〔解答〕
〔习题3.32〕
上机实现本章的例题程序,编程实现本章的习题程序。
第4章 汇编语言程序设计
〔习题4.1〕简答题
〔解答〕
① 当同一个程序被操作系统安排到不同的存储区域执行时,指令间的位移没有改变,目标地址采用相对寻址可方便操作系统的灵活调度。
② 数据通信时,数据的某一位用做传输数据的奇偶校验位,数据中包括校验位在内的“1”的个数恒为奇数,就是奇校验;恒为偶数,就是偶校验。
③ 无符号数和有符号数的操作影响两组不同的标志状态位,故判断两个无符号数和有符号数的大小关系要利用不同的标志位组合,所以有对应的两组指令。
④ 双分支结构中两个分支体之间的JMP指令,用于实现结束前一个分支回到共同的
- -18
出口作用。
⑤ 完整的子程序注释可方便程序员调用该子程序,子程序注释包括子程序名、子程序功能、入口参数和出口参数、调用注意事项和其他说明等。
⑥ 子程序保持堆栈平衡,才能保证执行RET指令时当前栈顶的内容是正确的返回地址。主程序也要保持堆栈平衡,这样才能释放传递参数占用的堆栈空间,否则多次调用该子程序可能就致使堆栈溢出。
⑦ “传值”是传递参数的一个拷贝,被调用程序改变这个参数不影响调用程序;“传址”时,被调用程序可能修改通过地址引用的变量内容。
⑧ INCLUDE语句包含的是文本文件、是源程序文件的一部分;INCLUDELIB语句包含的是子程序库文件。
⑨ 取长补短。
⑩ Windows程序在运行时需要加载其配套的动态链接库DLL文件,当其没有被搜索到时就会提示不存在。 〔习题4.2〕判断题 〔解答〕
① 对 ⑥ 对
② 错 ⑦ 对
③ 错 ⑧ 错
④ 错 ⑨ 对
⑤ 错 ⑩ 错
〔习题4.3〕填空题
〔解答〕
① 相对寻址,间接寻址,直接寻址,间接寻址 ② 1256H,3280H ③ 3721H,1 ④ EAH
⑤ 循环初始,循环控制 ⑥ REPT1标号的地址 ⑦ TEST ENDP,ENDM ⑧ EBP
⑨ PUBLIC,EXTERN ⑩ 38H 0DH 0AH 〔习题4.4〕
为了验证例题4-1程序的执行路径,可以在每个标号前后增加显示功能。例如使得程序运行后显示数码1234。 〔解答〕
labl1:
labl2:
jmp labl1 nop
mov eax,'?' call dispc mov eax,'1' call dispc
jmp near ptr labl2 nop
mov eax,'?' call dispc mov eax,'2'
; 相对寻址
; 相对近转移
- -19
labl3:
labl4: call dispc
mov eax,offset labl3 jmp eax ; 寄存器间接寻址 nop
mov eax,'?' call dispc mov eax,'3' call dispc
mov eax,offset labl4 mov nvar,eax jmp nvar ; 存储器间接寻址 nop
mov eax,'?' call dispc mov eax,'4' call dispc
〔习题4.5〕
使用“SHR EAX,2”将EAX中的D1位移入CF标志,然后用JC/JNC指令替代JZ/JNZ指令完成例题4-3的功能。 〔解答〕
mov eax,56h shr eax,2 jnc nom ...
; 假设一个数据 ; D1位移入CF标志
; D1=0条件成立,转移 ; 余同原程序
〔习题4.6〕
执行如下程序片断后,CMP指令分别使得5个状态标志CF、ZF、SF、OF和PF为0还是为1?它会使得哪些条件转移指令指令Jcc的条件成立、发生转移?
mov eax,20h cmp eax,80h
〔解答〕
CF=1 ZF=0 SF=1 OF=0 PF=1
可以使得条件成立、发生转移的指令有:JC JS JP JNZ JNO 〔习题4.7〕
将例题4-4程序修改为实现偶校验。建议进一步增加显示有关提示信息的功能,使得程序具有更加良好的交互性。 〔解答〕
include io32.inc .data
msg1 byte 'Please input a character: ',0
msg2 byte 'The ASCII code of the charater you entered is: ',0 msg3 byte 'The code with even parity is: ',0 .code start: mov eax,offset msg1 call dispmsg call readc
- -20
〔习题4.25〕
编写一个计算字节校验和的子程序。所谓“校验和”是指不记进位的累加,常用于检查信息的正确性。主程序提供入口参数,有数据个数和数据缓冲区的首地址。子程序回送求和结果这个出口参数。 〔解答〕
; 计算字节校验和的通用过程 ; 入口参数:DS:EBX=数组的段地址:偏移地址,ECX=元素个数 ; 出口参数:AL=校验和 ; 说明:除EAX/EBX/ECX外,不影响其他寄存器 checksum proc xor al,al ; 累加器清0 sum: add al,[ebx] ; 求和 inc ebx ; 指向下一个字节 loop sum ret checksum endp
〔习题4.26〕
编制3个子程序把一个32位二进制数用8位十六进制形式在屏幕上显示出来,分别运用如下3种参数传递方法,并配合3个主程序验证它。
(1)采用EAX寄存器传递这个32位二进制数 (2)采用temp变量传递这个32位二进制数 (3)采用堆栈方法传递这个32位二进制数 〔解答〕
(1)
wvar
disp
dhw1:
dhw2:
; 数据段
word 307281AFH ; 代码段,主程序 mov eax,wvar call disp mov al,'H' call dispc
; 代码段,子程序 proc
push ebx push ecx mov ecx,8 ; 8位 rol eax,4 mov ebx,eax and al,0fh ; 转换为ASCII码 add al,30h cmp al,'9' jbe dhw2 add al,7 call dispc mov eax,ebx loop dhw1 pop ecx
- -31
disp pop ebx ret endp
(2)
wvar temp ; 数据段
word 307281AFH word ?
; 代码段,主程序 mov eax,wvar mov temp,eax call disp mov al,'H' call dispc
; 代码段,子程序 disp proc
push ebx push ecx mov ecx,8
mov eax,temp dhw1: rol eax,4 mov ebx,eax and al,0fh add al,30h cmp al,'9' jbe dhw2
add al,7
dhw2: call dispc ; mov eax,ebx loop dhw1 pop ecx pop ebx
ret disp endp
(3)
; 数据段
wvar word 307281AFH ; 代码段,主程序 push wvar call disp add esp,4 mov al,'H' call dispc
; 代码段,子程序 disp proc
push ebp mov ebp,esp push ebx push ecx
mov ecx,8
; 8位 ; 转换为ASCII码 显示一个字符 ; 8位
-32
-
dhw1:
dhw2:
disp mov eax,[ebp+8] rol eax,4 mov ebx,eax and al,0fh add al,30h cmp al,'9' jbe dhw2 add al,7 call dispc mov eax,ebx loop dhw1 pop ecx pop ebx pop ebp ret endp
; 转换为ASCII码
〔习题4.27〕
配合例题4-11的简单加密解密程序,设计一个输入密码的程序,将输入的若干字符经过适当算法得到一个字节量密码。 〔解答〕
;ex0427.asm include io32.inc .data key byte ? msg0 byte 'Enter your password:',0 passw byte 50 dup(0)
errormsg byte 'Password error, input again!',13,10,0 bufnum = 255
buffer byte bufnum+1 dup(0) ; 定义键盘输入需要的缓冲区 msg1 byte 'Enter messge: ',0 msg2 byte 'Encrypted message: ',0 msg3 byte 'Original messge: ',0 .code start: mov eax,offset msg0 ; 提示输入加密密码 call dispmsg mov eax,offset passw ; 设置入口参数EAX call readmsg ; 调用输入字符串子程序输入密码 mov ecx,eax dec ecx xor ebx,ebx mov al,passw[ebx] again0: inc ebx xor al,passw[ebx] ;使用简单的异或方法得到加密关键字 loop again0 mov key,al ; 保存加密关键字 mov eax,offset msg1 ; 提示输入字符串 call dispmsg
- -33
mov eax,offset buffer ; 设置入口参数EAX call readmsg ; 调用输入字符串子程序 push eax ; 字符个数保存进入堆栈 mov ecx,eax ; ECX=实际输入的字符个数,作为循环的次数 xor ebx,ebx ; EBX指向输入字符 encrypt: mov al,key ; AL=加密关键字 xor buffer[ebx],al ; 异或加密 inc ebx dec ecx ; 等同于指令:loop encrypt jnz encrypt ; 处理下一个字符 mov eax,offset msg2 call dispmsg mov eax,offset buffer ; 显示加密后的密文 call dispmsg call dispcrlf ;
again: mov eax,offset msg0 ; 提示输入解密密码 call dispmsg mov eax,offset passw ; 设置入口参数EAX call readmsg ; 调用输入字符串子程序输入密码 mov ecx,eax dec ecx xor ebx,ebx mov al,passw[ebx] again1: inc ebx xor al,passw[ebx] ;使用简单的异或方法得到加密关键字 loop again1 cmp key,al ; 与原加密关键字比较 jz next ; 密码相同,则进行解密 mov eax,offset errormsg ; 提示输入解密密码错误 call dispmsg jmp again
next: pop ecx ; 从堆栈弹出字符个数,作为循环的次数 xor ebx,ebx ; EBX指向输入字符 decrypt: mov al,key ; AL=解密关键字 xor buffer[ebx],al ; 异或解密 inc ebx dec ecx jnz decrypt ; 处理下一个字符 mov eax,offset msg3 call dispmsg mov eax,offset buffer ; 显示解密后的明文 call dispmsg
〔习题4.28〕
设计一个简单的两个整数的加法器程序。 〔解答〕
;ex0428.asm include io32.inc
- -34
msg1 msg2
start:
.data
byte 'Enter the integers:',13,10,0
byte 13,10,'Enter space to continue! Enter any other key to exit!',13,10,0 .code
mov eax,offset msg1 call dispmsg call readsid
mov ebx,eax mov al,'+' call dispc call dispcrlf call readsid add ebx,eax mov al,'=' call dispc mov eax,ebx call dispsid call dispcrlf mov eax,offset msg2 call dispmsg call readc cmp al,20h je start exit 0 end start
〔习题4.29〕
利用十六进制字节显示子程序DISPHB设计一个从低地址到高地址逐个字节显示某个主存区域内容的子程序DISPMEM。其入口参数:EAX=主存偏移地址,ECX=字节个数(主存区域的长度)。同时编写一个主程序进行验证。 〔解答〕
;ex0429.asm in Windows Console include io32.inc .data var byte 'This is a test!' .code start: ; 主程序 mov eax,offset var mov ecx,sizeof var call dispmem exit 0 ; 子程序 dispmem proc push ebx mov ebx,eax
- -35
dispm1:
dispmem mov al,[ebx] call disphb mov al,' ' call dispc inc ebx
loop dispm1 pop ebx ret endp
end start
〔习题4.30〕
将例题4-19分别使用子程序模块、子程序库和子程序库包含方法生成最终可执行文件。 〔习题4. 31〕
区别如下概念:宏定义、宏调用、宏指令、宏展开、宏汇编。 〔解答〕
宏定义:就是对宏进行说明,由一对宏汇编伪指令MACRO和ENDM来完成。 宏调用:宏定义之后的使用。在使用宏指令的位置写下宏名,后跟实体参数。 宏指令:使用宏时,其形式很像指令,所以称为宏指令。
宏展开:在汇编时,汇编程序用对应的代码序列替代宏指令。 宏汇编:指使用宏的方法进行汇编语言程序设计。 〔习题4. 32〕
直接使用控制台输入和输出函数实现例题4-21的功能(不使用READMSG和DISPMSG子程序)。 〔解答〕
〔习题4. 33〕
直接使用控制台输出函数实现某个主存区域内容的显示(习题4.29的功能)。可以改进显示形式,例如每行显示16个字节(128位),每行开始先显示首个主存单元的偏移地址,然后用冒号分隔主存内容。 〔解答〕
〔习题4. 34〕
如何进行很简单的修改,使得例题4-22程序的消息窗有“OK”和“Cancel”两个按钮。 〔解答〕
将MB_OK常量定义为1,即:
MB_OK
equ 1
〔习题4. 35〕
上机实践例题4-23和例题4-24,并在创建可执行文件的过程中生成汇编语言列表文件。 〔习题4.36〕
Pentium处理器含有一个64位的时间标记计数器(Time-Stamp Counter)。该计数器每个时钟周期递增(加1);在上电和复位后,该计数器清0。指令“RDTSC”执行后将在EDX(高32位)和EAX(低32位)返回当前的64位时间标记计数器值。利用RDTSC指
- -36
令在某个函数运行前获得时间标记计数器值,然后运行该函数后,立即再次执行RDTSC指令,并将再次获得的时间标记计数器值与之前的计数值相减,得到的差值就是运行该函数需要的时钟周期数(乘以时钟周期,等于运行时间)。请利用混合编程方法显示某个函数的运行时钟周期数。 〔解答〕
第5章 微机总线
〔习题5.1〕简答题
〔解答〕
① 数据总线承担着处理器与存储器、外设之间的数据交换,既可以输入也可以输出,故其是双向的。
② 为减少引脚个数,8086采用了地址总线和数据总线分时复用。即数据总线在不同时刻还具有地址总线的功能。
③ 具有三态能力的引脚当输出呈现高阻状态时,相当于连接了一个阻抗很高的外部器件,信号无法正常输出;即放弃对该引脚的控制,与其他部件断开连接。
④ 处理器的运行速度远远快于存储器和I/O端口。处理器检测到存储器或I/O端口不能按基本的总线周期进行数据交换时,插入一个等待状态Tw。等待状态实际上是一个保持总线信号状态不变的时钟周期。
⑤ 猝发传送是处理器只提供首地址、但可以从后续连续的存储单元中读写多个数据。 ⑥ 总线上可能连接多个需要控制总线的主设备,需要确定当前需要控制总线的主设备,所以需要总线仲裁。
⑦ 异步时序是由总线握手(Handshake)联络(应答)信号控制,不是由总线时钟控制。故总线时钟信号可有可无。
⑧ 单总线结构限制了许多需要高速传输速度的部件。32位PC机采用多种总线并存的系统结构。各种专用局部总线源于处理器芯片总线,以接近处理器芯片引脚的速度传输数据,它为高速外设提供速度快、性能高的共用通道。
⑨ 4个。
⑩ 即插即用技术是指32位PC机的主板、操作系统和总线设备配合,实现自动配置功能。
〔习题5.2〕判断题 〔解答〕
① 对 ⑥ 错
② 对 ⑦ 对
③ 错 ⑧ 对
④ 对 ⑨ 对
⑤ 对 ⑩ 错
〔习题5.3〕填空题
〔解答〕
① 0
② 读RD,写WR
③ 存储器读,存储器读,存储器写 ④ 4,2,10ns
⑤ 低有效,IOR,0010 ⑥ 寻址,数据传送
- -37
⑦ 127,1.5Mb/s,12Mb/s ⑧ 地址,数据 ⑨ D/C,W/R ⑩ BRDY,I/O CH RDY 〔习题5.4〕
处理器有哪4种最基本的总线操作(周期)? 〔解答〕
存储器读、存储器写,I/O读、I/O写。 〔习题5.5〕
8086处理器的输入控制信号有RESET,HOLD,NMI和INTR,其含义各是什么?当它们有效时,8086 CPU将出现何种反应? 〔解答〕
RESET:复位输入信号,高电平有效。该引脚有效时,将迫使处理器回到其初始状态;转为无效时,CPU重新开始工作。
HOLD:总线请求,是一个高电平有效的输入信号。该引脚有效时,表示其他总线主控设备向处理器申请使用原来由处理器控制的总线。
NMI:不可屏蔽中断请求,是一个利用上升沿有效的输入信号。该引脚信号有效时,表示外界向CPU申请不可屏蔽中断。
INTR:可屏蔽中断请求,是一个高电平有效的输入信号。该引脚信号有效时,表示中断请求设备向处理器申请可屏蔽中断。 〔习题5.6〕
区别概念:指令周期、总线周期(机器周期)、时钟周期、T状态。 〔解答〕
指令周期:一条指令从取指、译码到最终执行完成的过程。 总线周期(机器周期):有数据交换的总线操作。
时钟周期:处理器的基本工作节拍,由时钟信号产生,一个高电平和一个低电平为一个周期。
T状态:完成特定操作的一个时钟周期。由于时间上一个T状态等于一个时钟周期,所以常常将两者混为一谈。 〔习题5.7〕
总结8086各个T状态的主要功能。 〔解答〕
T1状态:总线周期的第一个时钟周期主要用于输出存储器地址或I/O地址; T2状态:输出读/写控制信号。
T3状态:锁存地址、处理器提供的控制信号和数据在总线上继续维持有效,且T3时钟的前沿(下降沿)对READY引脚进行检测。READY信号有效,进入T4周期。
T4状态:总线周期的最后一个时钟周期,处理器和存储器或I/O端口继续进行数据传送,直到完成,并为下一个总线周期做好准备。
Tw状态:等待状态。处理器在T3前沿发现READY信号无效后,插入Tw。Tw状态的引脚信号延续T3时的状态、维持不变。
- -38
〔习题5.8〕
请解释8086(最小组态)以下引脚信号的含义:CLK,A19/S6~A16/S3,AD15~AD0,ALE,M/IO,RD和WR。默画它们在具有一个等待状态的存储器读总线周期中的波形示意。 〔解答〕
CLK:时钟输入。时钟信号是一个频率稳定的数字信号,其频率就是处理器的工作频率,工作频率的倒数就是时钟周期的时间长度。
A19/S6~A16/S3:地址/状态分时复用引脚,是一组4个具有三态能力的输出信号。这些引脚在访问存储器的第一个时钟周期输出高4位地址A19~A16,在访问外设的第一个时钟周期输出低电平无效;其他时间输出状态信号S6~S3。
AD15~AD0:地址/数据分时复用引脚,共16个引脚,用作地址总线时是单向输出信号;用作数据总线时是双向信号,具有三态输出能力。
ALE:地址锁存允许,是一个三态、输出、高电平有效的信号。有效时,表示复用引脚(AD15~AD0和A19/S6~A16/S3)上正在传送地址信号。
M/IO:访问存储器或者I/O,是一个三态输出信号,该引脚高电平时,表示处理器将访问存储器,此时地址总线A19~A0提供20位的存储器物理地址。该引脚低电平时,表示处理器将访问I/O端口,此时地址总线A15~A0提供16位的I/O地址。
RD:读控制,也是一个三态、输出低电平有效信号。有效时,表示处理器正在从存储单元或I/O端口读取数据。
WR:写控制,是一个三态、输出低电平有效信号。有效时,表示处理器正将数据写到存储单元或I/O端口。
T1 CLK M/IOBHE/S7, A19/S6~A16/S3
BHEA19~A06 T2 T3 Tw T4 S7~S0 高阻 高阻 AD15~AD0 A15~A0 输入数据 ALE RD READY
图6-1 具有一个Tw的存储器读总线周期时序
〔习题5.9〕
区别如下总线概念:芯片总线、局部总线、系统总线;并行总线、串行总线;地址总线、数据总线、控制总线;ISA总线、PCI总线。 〔解答〕
芯片总线:是指大规模集成电路芯片内部,或系统中各种不同器件连接在一起的总线;用于芯片级互连。
局部总线:位于处理器附件的器件相互连接的总线,相对于芯片总线。 系统总线:通常是指微机系统的主要总线。
- -39
并行总线:采用并行传输方式的总线。
串行总线:将多位数据按二进制位的顺序在数据线上逐位传送的总线。 地址总线:实现地址信息互连和交换的一组导线。 数据总线:实现数据信息互连和交换的一组导线。
控制总线:控制协调处理器和内存、外设交互信息的一组导线。
ISA总线:即IBM PC/AT总线,以处理器80286引脚形成的总线,分成支持8位操作的前62信号和扩展16位操作的后36信号。
PCI总线:外设部件互连总线,不仅适用于IA-32处理器,也适用其它处理器,支持32位和64位操作,广泛用于32位通用微型计算机中。 〔习题5.10〕
什么是同步时序、半同步时序和异步时序? 〔解答〕
同步时序:总线操作的各个过程由共用的总线时钟信号控制。
半同步时序:总线操作仍由共用的总线时钟信号控制,但慢速模块可以通过等待信号让快速模块等待。
异步时序:总线操作需要握手(Handshake)联络(应答)信号控制,总线时钟信号可有可无。 〔习题5.11〕
EISA总线的时钟频率是8MHz,每2个时钟可以传送一个32位数据,计算其总线带宽。
〔解答〕
(32×8)÷(2×8)=16MBps 〔习题5.12〕
PCI总线有什么特点? 〔解答〕
PCI总线与处理器无关,具有32位和64位数据总线,有+5V和+3.3V两种设计,采用集中式总线仲裁、支持多处理器系统,通过桥(Bridge)电路兼容ISA/EISA总线,具有即插即用的自动配置能力等一系列优势。 〔习题5.13〕
PCI总线操作如何插入等待状态? 〔解答〕
主设备利用IRDY#信号无效、从设备利用TRDY#信号无效要求对方等待,即插入等待状态。 〔习题5.14〕
什么是USB总线支持的“热插拔”,这个特性有什么意义? 〔解答〕
“热插拔”是在PC机正常工作状态进行插入或拔出。这个特性可以使用户随时连接USB设备。 〔习题5.15〕
简述USB总线的主要特征? 〔解答〕
- -40
正在阅读:
reach的定义09-22
在线式气体检测仪价格 固定式高精度TVOC气体探测器生产厂家04-30
我的拖延症作文800字06-23
word 版2010年普通高等学校招生全国统一考试 英语(江苏卷) 含答案10-30
家乡的古桥作文600字05-21
高分子物理典型计算题01-15
2015年国家电工考试题09-29
软件产业统计报表制度11-25
一次难忘的荒漠徒步作文600字06-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 课后
- 微机
- 习题
- 接口
- 原理
- 答案
- 技术
- 钱晓捷
- XXX井钻井工程设计 - 图文
- 保利酒店测量方案 - 图文
- 施工作业通航安全与防污染措施计划书
- 16春西南交《大学英语Ⅱ》在线作业一 答案
- 百度之夜:如何解决网站移动化的痛点?
- 目前医疗外包市场分析
- 最新-园林绿化工程项目管理措施 精品
- 浅谈词块教学法在小学英语词汇教学中的运用0522
- 广东省深圳市2015届高三第二次调研考试语文试题
- Java SE面向对象部分-15.面向对象高级(03)
- 计量经济学论文
- 通达2号专项方案
- 护理学研究_自考笔记+自考资料
- 发展党员档案材料收集归档规定
- 基于PLC的火灾报警器设计
- 全国2010年10月高等教育高等数学(工本)自考试题
- 平面设计大师教程,插画设计 - 图文
- 某学府花园项目修建性规划设计合同
- 有关制动鼓
- 15秋西电《人员评测理论与方法》在线作业 答案