微机原理及应用A试题库及答案修改版 - 图文

更新时间:2024-04-24 03:11:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

微机原理及应用试题库 第一章 微型计算机系统 ................................................................................................................. 1 1.1选择题................................................................................................................................. 1 1.2判断题................................................................................................................................. 2 1.3填空题................................................................................................................................. 2 1.4简答题................................................................................................................................. 3 第二章 处理器结构 ......................................................................................................................... 4 2.1选择题................................................................................................................................. 4 2.2名词解释题 ......................................................................................................................... 4 2.3判断 .................................................................................................................................... 5 2.4填空题................................................................................................................................. 6 2.5简答题................................................................................................................................. 6 第三章 数据处理 ............................................................................................................................. 8 3.1.选择 ................................................................................................................................... 8 3.2.名词解释............................................................................................................................. 9 3.3.判断 ................................................................................................................................... 9 3.4.填空 ................................................................................................................................... 9 3.5.简答题............................................................................................................................... 10 第四章 指令系统 ........................................................................................................................... 12 4.1.选择 .................................................................................................................................. 12 4.2.名词解释........................................................................................................................... 13 4.3.判断 .................................................................................................................................. 13 4.4.填空 .................................................................................................................................. 13 4.5.简答题............................................................................................................................... 14 第五章 汇编语言程序设计 ........................................................................................................... 16 5.1.选择 .................................................................................................................................. 16 5.2.名词解释........................................................................................................................... 17 5.3.判断 .................................................................................................................................. 17 5.4.填空 .................................................................................................................................. 17 5.5.简答题............................................................................................................................... 18 5.6.应用题............................................................................................................................... 20 第六章 微机总线 ........................................................................................................................... 40 6.1.选择 .................................................................................................................................. 40 6.2.名词解释........................................................................................................................... 41 6.3.判断 .................................................................................................................................. 41 6.4.填空 .................................................................................................................................. 41 6.5.简答题............................................................................................................................... 42 1

第七章 存储系统 ........................................................................................................................... 44 7.1.选择 .................................................................................................................................. 44 7.2.名词解释........................................................................................................................... 44 7,3.判断 .................................................................................................................................. 45 7.4.填空 .................................................................................................................................. 46 7.5.简答题............................................................................................................................... 46 第八章 无条件与查询传送方式 ................................................................................................... 49 8.1.选择 .................................................................................................................................. 49 8.2.名词解释........................................................................................................................... 50 8.3.判断 .................................................................................................................................. 50 8.4.填空 .................................................................................................................................. 50 8.5.简答题............................................................................................................................... 51 第九章 中断与DMA传送方式 ................................................................................................... 53 9.1.选择 .................................................................................................................................. 53 9.2.名词解释........................................................................................................................... 53 9.3.判断 .................................................................................................................................. 54 9.4.填空 .................................................................................................................................. 54 9.5.简答题............................................................................................................................... 55 第十章 常用接口技术 ................................................................................................................... 57 10.1.选择 ................................................................................................................................ 57 10.2名词解释......................................................................................................................... 58 10.3判断 ................................................................................................................................ 58 10.4填空 ................................................................................................................................ 58 10.5简答题 ............................................................................................................................ 59 10.6应用题 ............................................................................................................................ 60 组卷方案 题型 选择 判断 填空 简答题 名词解释 应用题 题数 10 10 10 5 2 2 满分 10×1.5=15 10×1=10 10*2=20 5*4=20 5*2=10 10+15=25 2,6,7 5,10 1,2;3,4;6,7;8,9;5,10; 3,4;8,9; 1~10 单出章节 合出章节 2

第一章 微型计算机系统 1.1选择题 1.计算机的发展阶段通常是按计算机所采用的( )来划分的。 A.内存容量 B.电子器件 C.程序设计 D.操作系统 2. 一个完整的计算机系统通常应包括( )。 A、系统软件和应用软件 B、计算机及其外部设备 C、硬件系统和软件系统 D、系统硬件和系统软件 3. PC机硬件系统从逻辑上看主要由CPU、内存储器、外存储器、输入设备、输出设备 以及( )组成。 A.运算器 B.键盘 C.显示器 D.总线 4. 以下叙述正确的是( )。 A. 微机的字长可以是8、16、24、32位 B. 微机的字长可以是8、16、32、64位 C. 微机的字长可以是8、16、24、32K D. 字长是指计算机处理数据的精度 5. BIOS是“基本输入输出系统”,在现代的微机系统中,BIOS中代码( )。 A.是不能升级的 B. 是可以升级的 C.更换BIOS芯片后才可以升级 D. 以上说法都不正确 6. 以下有关CPU的说法不正确的是( )。 A. CPU也称作运算控制单元 B. CPU也称作微处理器 C. CPU是微型机的核心部件。 D. CPU也称作运算处理单元 7. 冯?诺依曼计算机的基本思想主要是指( )。 A. 二进制编码和存储程序控制 B. 二进制数和存储器 C. CPU和存储器 D. 存储器和输入输出设备 8. 冯?诺依曼计算机的硬件由( )大基本部件组成。 A. 3 B. 4 C. 5 D. 6 9. 冯?诺依曼计算机的硬件由( )等大基本部件组成。 A. 运算器、控制器、存储器和输入输出设备 B. 寄存器、运算器、控制器、存储器 C. 寄存器、CPU和存储器 D. 存储器和输入输出设备 10. 在现代的微机系统中,描述CPU主频常用的单位是( )。 A. Hz B. KHz C. MHz D. GHz 11. 在现代的微机系统中,描述内存容量常用的单位是( )。 A. B B. KB C. MB D. GB 12. 微型计算机和各个外部设备之间用( )连接起来,再配上软件,就构成了微机系统。 A. 系统总线 B.通信总线 C.数据总线 D.片内总线 13. 所谓微机的字长是指( )。 A. CPU内部数据总线的位数。B. CPU外部数据总线的位数。 C. CPU地址总线的位数。 D. CPU中运算器一次能处理二进制数的最大位数。 14. ( )是以CPU为核心,加上存储器,I/O接口和系统总线构成的. A.微处理器 B.微型计算机 C.微型计算机系统 D.计算机. 1

15. 微型计算机是以超大规模集成电路为主要部件,以集成了控制器和( )的微处理器为 核心,所构造出的计算机 A.存贮器 B.寄存器 C.运算器 D.计数器 16. 存储器是计算机系统的记忆设备,它用来( ) A.存放数据 B.存放程序 C.存放数据和程序 D.存放微程序 17. 通常所说的32位计算机是指( )。 A.CPU字长为32位 B.通用寄存器数目为32个 C.可处理的数据长度为32位 D.地址总线的宽度为32位 1.2判断题 1. 软件与硬件的等价性原理说明软硬件在功能、性能和成本等方面是等价的。F 2. IA-64结构是IA-32结构的64位扩展,也就是Intel 64结构。F 3. 8086的数据总线为16位,也就是说8086的数据总线的个数、或说条数、位数是16。F 4. 微机主存只要使用RAM芯片就可以了。F 5. 处理器并不直接连接外设,而是通过I/O接口电路与外设连接。T 6. 处理器是微机的控制中心,内部只包括5大功能部件的控制器。F 7. Windows的模拟DOS环境与控制台环境是一样的。F 8. 16位IBM PC/AT机采用ISA系统总线。T 9. IA-32处理器吸取了RISC技术特长。RISC是指复杂指令集计算机。F精简指令集计算机 10. 处理器进行读操作,就是把数据从处理器内部读出传送给主存或外设。F 11. IA-32处理器上不能运行Linux。F 12. IA-32处理器地址总线是双向的。T 13. BIOS是“基本输入输出系统”,在现代的微机系统中,BIOS是不能升级的。F 14. 汇编语言就是机器语言的符号化。F 15. 汇编语言程序就是汇编程序。F 1.3填空题 1. .CPU是英文Central processing unit的缩写,中文译为中央处理单元。 2. Intel 8086支持1MB容量主存空间,80486支持4GB容量主存空间。 3. .二进制16位共有216个编码组合,如果一位对应处理器一个地址信号,16位地址信号共能寻址64KB容量主存空间。 4. DOS主要支持两种可执行文件,它们的扩展名分别是EXE和COM。 5. 关于总线的英文缩写ISA原文是industry standard architecture, PCI原文是peripheral component interconnection。 6. Windows的文件夹对应的专业术语是 目录 ,英文是 file 。 7. Pentium系列处理器的多媒体指令有 MMX ,SSE,SSE2和 SSE3 类指令。 8.Pentium处理器采用 64 位数据总线, 32 位地址总线与主存相连。 9.最初由IBM公司采用Intel 8088处理器和DOS操作系统推出PC机。 10. 当前32位PC机主要采用 PCI 总线连接I/O接口电路卡,键盘、鼠标等则采用 PS/2 (USB) 总线连接。 11. 描述CPU的主要技术参数有_字长_ ,时钟频率,集成度等。 12. 系统总线一般可分为地址总线,数据总线 和控制总线。 13. 在计算机系统的层次结构中,汇编语言位于第 4 层,而高级语言位于第 5 层。 14. 在计算机系统的层次结构中,操作系统位于第 3 层,而机器语言位于第 2 层。 2

15. 在计算机系统的层次结构中,数字电路位于第 0 层,而用户位于第 6 层。 1.4简答题 1. 计算机字长指的是什么? 答: 处理器单位时间处理二进制数据的位数。 2. 简述微型计算机系统的硬件组成及各部分作用。 答: 1、微处理器:处理器及其支持的电路构成了微机系统的控制中心,对系统的各个部 件进行统一的协调和控制; 2、存储器:存放程序和数据; 3、 I/O设备和I/O接口:实现用户和微机的交互; 4、系统总线:多部件相互连接、传递信息的公共通道; 3. ROM-BIOS是什么? 答: 基本输入输出系统,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。 4. 什么是通用微处理器、单片机? 答:1、通用为处理器:适合较广的应用领域的微处理器,如装在PC机、笔记本电脑等的微处理器; 2、单片机:通常用于控制领域的微处理器芯片,期内部除CPU外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。 5. 什么是DSP芯片、嵌入式系统? 答:1、DSP:数字信号处理器,更适合于处理高速的数字信号,内部集成有高速乘法器,可进行快速乘法加法运算; 2、嵌入式系统:利用微处理器,数字信号处理器或通用微处理器,结合具体应用构成的控制系统。 6. 冯?诺依曼计算机的基本设计思想是什么? 答:采用二进制表达数据和指令,将数据和指令事先保存在存储器中;按顺序执行程序来控制计算机工作 7. 计算机系统通常划分为哪几个层次?普通计算机用户和软件开发人员对计算机系统的认 识一样吗? 答:1、最上层是用户层;第五层是高级语言层;第四层是汇编语言层;第三层是操作系统层;第二层是机器语言层;第一层是控制层;第零层是数字电路层; 2、不一样,普通计算机用户看到的计算机属于用户层,而软件人员看到的属于高级语言层或是汇编语言层。 8. 什么是系列机和兼容机? 答:系列机:同一厂家生产的具有相同计算机结构,但具有不同组成和实现的一系列不同档次不同型号的机器; 兼容机:不同厂家生产的具有相同计算机结构的计算机。 3

第二章 处理器结构 2.1选择题 1. 一条计算机指令中规定其执行动作的部分称为( )。 A. 源地址码 B. 操作码 C. 目标地址码 D. 数据码 2. 标志寄存器中的溢出标志OF=1时表示的含义,下列说法中正确的是( )。 A. 表示运算结果溢出 B. 表示最高位有进位 C. 两个符号位相同的操作数的运算结果的符号位与参与运算的操作数符号位相反 D. 以上说法都不对 3. VAR是数据段中定义的字变量,指令MOV VAR[EBX][EDI],AX中目的操作数的寻址方式是( )。 A.寄存器相对寻址 B.直接寻址 C.相对基址变址寻址 D.间接寻址 4. VAR是数据段中定义的字变量,指令MOV AX,VAR[EBX]中源的操作数的寻址方式是( )。 A.寄存器相对寻址 B.直接寻址 C.相对基址变址寻址 D.间接寻址 5. VAR是数据段中定义的字变量,指令MOV AX,VAR中源的操作数的寻址方式是( )。 A.寄存器相对寻址B.直接寻址C.相对基址变址寻址 D.寄存器间接寻址 6. 下列80X6CPU标志寄存器的标志位中,不属于状态标志位的是( ) A.OF B.IF C.AF D.PF 7. 下列80X6CPU标志寄存器的标志位中,不属于状态标志位的是( ) A.OF B.TF C.AF D.PF 8. 计算机能直接识别、理解和执行的程序是 ( )。 A汇编语言程序 B.机器语言程序 C.高级语言程序 D.数据库语言程序 9. 寄存器( )不能被分割为高字节和低字节。 A.AX B. DX C.BX D. CS 10. VAR是数据段中定义的字变量,指令MOV EBX,OFFSET VAR源操作数的寻址方式是( )。 A.直接寻址 B.寄存器间接寻址 C.立即数寻址 D.存贮器寻址 11. 当使用EBP寄存器作基址寻址时,默认在( )段内寻址。 A.代码 B.堆栈 C.数据 D.附加 12. 当使用EDI寄存器作基址寻址时,默认在( )段内寻址。 A.代码 B.堆栈 C.数据 D.附加 13. 运算器由很多部件组成,其核心部分是( )。 A.数据总线 B.算术逻辑单元 C.累加器 D.多路开关 14. IA-32处理器在保护模式下可以直接访问最大物理地址空间是( )。 A. 1MB B. 64KB C. 4GB D. 4TB 15. IA-32处理器在复位后自动进入( )方式。 A. 保护 B. 实地址 C. 系统管理 D. 虚拟8086 2.2名词解释题 1. ALU:Arithmetic Logic Unit 算术逻辑单元,是计算机的运算器,负责处理器所能进行的各种运算,主要是算术运算和逻辑运算。 4

2. Offset address 偏移地址以段基地址为起点,段内位置可以用距离该起点的位移量表示。 3. Addressing mode 寻址方式对理解处理器工作原理和指令功能,以及进行汇编语言程序设计都至关重要。 4. Bus Interface Unit BIU 总线接口单元负责处理器对存储器和外设进行访问。 5. Code Prefetch Unit 指令预取单元,利用总线的空闲时间通过总线接口单元按顺序与取指令,放在指令预取队列中。 6. Instruction Decode Unit 指令译码单元,从指令预取队列中取来指令,译码成微指令代码,经译码后的指令存放在指令队列中。 7. Protected mode保护方式,IA-32处理器在保护方式下能发挥其全部功能,充分利用其强大的段页式存储管理以及特权与保护能力 8. Real-address mode实地址方式通电复位后IA-32橱余实地址方式,实现了与8086相同的程序设计环境,但有所扩展。 9. System management mode 系统管理方式,为操作系统和核心程序提供节能管理和系统安全管理机制。 10. Virtual-8086 mode 虚拟8086方式并不是处理器的一种工作方式,只是提供了一种在保护方式下类似于实地址方式的运行环境。 11. General purpose registers 通用寄存器一般指处理器最长使用的证书通用寄存器,可用于保存整数数据、地址等。 12.Flat Memory Model 平展存储模式,平展存储模式下,对程序来说存储器是一个连续的地址空间 13. Indirect Addressing 间接寻址,有效地址存放在寄存器中,利用寄存器间接寻址,可以方便的对数组的元素或字符串的字符进行操作。 14. Accumulator 累加器,是专门存放算术或逻辑运算的一个操作数和运算结果的寄存器 15. Instruction pointer 指令指针,用于记录将要执行指令的主存地址,标志寄存器用于保存指令执行的辅助信息。等同于PC的功能。 2.3判断 1. 程序计数器PC或指令指针EIP寄存器属于通用寄存器。F 2. 处理器的指令译码是将指令代码翻译成它代表的功能的过程,与数字电路的译码器是不 同的概念。T 3. EAX也被称为累加器,因为它使用最频繁。T 4. 处理器的传送指令MOV属于汇编语言的执行性语句。T 5. 汇编语言的语句由明显的4部分组成,不需要分隔符区别。F 6. 80减90(80-90)需要借位,所以执行结束后,进位标志CF=1。T 7. MASM汇编语言的注释用分号开始,但不能用中文分号。T 8. IA-32处理器在实地址方式下,不能使用32位寄存器。F 9. 存储器寻址方式的操作数当然在主存了。T 10. 保护方式下,段基地址加偏移地址就是线性地址或物理地址。T 11. IA-32处理器中的8个32位通用寄存器 T 12. 寄存器变量的存取速度远高于内存变量。T 13. 指令中的目的操作数可以采用立即寻址方式。F 14. 指令中的源操作数与目的操作数的寻址方式不能同为内存寻址方式。T 15. 不能用EBX作为基址指针访问堆栈段中的数据。F 5

2.4填空题 1. 寄存器EDX是 32 位的,其中低16位的名称是 DX ,还可以分成两个8位的 通用 寄存器,其中D8~D15部分可以用名称 DH 表示。 2. IA-32处理器的段寄存器是 16 位的,指令指针EIP是 32 位的。 3. 逻辑地址由 段基地址 和 偏移地址 两部分组成。 4. 进行8位二进制数加法:10111010+01101100,8位结果是 [1]00100110 ,标志CF= 1 。 5. 在实地址工作方式下,逻辑地址“7380H∶400H”表示的物理地址是 73C00H ,并且该段起始于 73800 物理地址。 6. IA-32处理器有8个32位通用寄存器,其中EAX, EBX , ECX 和EDX,可以分成16位和8位操作。 7. IA-32处理器复位后,首先进入是 实地址 工作方式。该工作方式分段最大不超过 64KB 。 8. MASM要求汇编语言源程序文件的扩展名是 .ASM ,汇编产生扩展名为OBJ的文件被称为 目标模块文件 。 9. 除外设数据外的数据寻址方式有3类,分别被称为立即数寻址、 寄存器寻址 和 存储器寻址 。 10. 用EBX做基地址指针,默认采用 DS 段寄存器指向的数据段;如果采用EBP或ESP作为基地址指针,则默认使用 SS 段寄存器指向堆栈段。 11. 代码段中下一条要执行的指令由 CS 寄存器和___EIP__寄存器指示。 12. IA-32处理器有8个32位通用寄存器,其中ESI, EDI , EBP 和ESP,不可以分解成16位和8位操作。 13. IA-32处理器在保护模式MASM采用 平展或段式 存储模型,而在实地址模式下则采用 实地址 存储模型。 14. 除I/O指令外,具有双操作数的指令中,目的操作数只能采用 寄存器 寻址方式或 存储器 寻址方式。 15. 计算机存储信息的最小单位是 byte ,1个字节等于 8 个二进制位。 2.5简答题 1. 举例说明CF和OF标志的差异。 答:进位标志CF表示无符号数运算结果是否超出范围,超出范围后加上进位或借位,运算结果仍然正确;溢出标志OF表示有符号数运算结果是否超出范围,如果超出范围,运算结果已经不正确。 2. IA-32处理器有哪三类基本段,各是什么用途? 答:代码段:存放程序的指令代码。程序的指令代码必须安排在代码段,否则将无法正常执行。 数据段:存放当前运行程序所用的数据。程序中的数据默认是存放在数据段,也可以存放在其他逻辑段中。 堆栈段:主存中堆栈所在的区域。程序使用的堆栈一定在堆栈段。 3. 什么是实地址方式、保护方式和虚拟8086方式?它们分别使用什么存储模型? 答:实地址方式:与8086具有相同的基本结构,只能寻址1MB物理存储器空间,逻辑段最大不超过64KB;但可以使用32位寄存器、32位操作数和32位寻址方式;相当于可以进行32位处理的快速8086。实地址工作方式只能支持实地址存储模型。 保护方式:具有强大的段页式存储管理和特权与保护能力,使用全部32条地址总线,可寻址4GB物理存储器。保护方式通过描述符实现分段存储管理,每个逻辑段可达6

4GB。处理器工作在保护方式时,可以使用平展或段式存储模型。 虚拟8086方式:在保护方式下运行的类似实方式的运行环境,只能在1MB存储空间下使用“16位段”。 处理器工作在虚拟8086方式时,只能使用实地址存储模型。 4. 什么是平展存储模型、段式存储模型和实地址存储模型? 答:平展存储模型下,对程序来说存储器是一个连续的地址空间,称为线性地址空间。程序需要的代码、数据和堆栈都包含在这个地址空间中。 段式存储模型下,对程序来说存储器由一组独立的地址空间组成,独立的地址空间称为段。通常,代码、数据和堆栈位于分开的段中。 实地址存储模型是8086处理器的存储模型。它是段式存储模型的特例,其线性地址空间最大为1MB容量,由最大为64KB的多个段组成。 5. 汇编语句有哪两种,每个语句由哪4个部分组成? 答:汇编语句有两种:执行性语句(处理器指令)、说明性语句(伪指令)。 每个语句有:标号、指令助记符、操作数或参数、注释4个部分组成。 6. 给出IA-32处理器的32位寻址方式的组成公式,并说明各部分作用。 答:32位存储器寻址方式的组成公式 32位有效地址 = 基址寄存器+(变址寄存器×比例)+位移量 其中的4个组成部分是: ·基址寄存器??任何8个32位通用寄存器之一; ·变址寄存器??除ESP之外的任何32位通用寄存器之一; ·比例??可以是1,2,4或8(因为操作数的长度可以是1,2,4或8字节); ·位移量??可以是8或32位有符号值。 7. Pentium的片上Cache采用统一结构还是分离结构? 答:Pentium芯片中有两个8KB容量的Cache,一个用于高速缓冲指令的指令Cache,另一个用于高速缓冲数据的数据Cache,即分离的Cache结构。 8. 为什么将查找操作数的方法称为数据寻“址”方式? 答:主存和外设在汇编语言中被抽象为存储器的地址或I/O地址,而寄存器虽然以名称表达,但机器代码中同样用地址编码区别寄存器,所以指令的操作数需要通过地址指示。这样,通过地址才能查到数据本身,这就是数据寻址方式。7

第三章 数据处理 3.1.选择 1. BUF DWORD 10h DUP( 3 DUP( 2,5 ) ,3 ,4 ,5)语句为变量BUF分配的内存空间的字节数是( )。 A. 50h B. 90h C. 240h D. 120h 2. BUF DW 10H DUP(3 DUP(2,?),1,2 DUP(?),100)为变量BUF分配的内存空间的字节数是( )。 A. 160 B. 22 C. 80 D. 320 3. 类型操作符PTR用于( )。 A. 定义内存变量的类型 B. 重新指定内存变量的类型 C. 定义寄存器变量的类 D. 重新指定寄存器变量的类型 4. 用来定义双字变量的伪指令是( )。 A. DB B. DW C. DD D. DQ 5. 用来定义字变量的伪指令是( )。 A. DB B. DW C. DD D. DQ 6. 用来定义字节变量的伪指令是( )。 A. BYTE B. WORD C. DWORD D. QWORD 7. 执行AND指令后,OF和CF标志位的值是( )。 A. OF=CF=0 B. OF=0,CF=1 C. OF=1,CF=0 D. OF=1,CF=1 8. 执行INC指令除对于SF、ZF有影响外,还要影响的标志位是( )。 A. AF,PF,CF B. OF,AF,CF C. OF,PF,CF D. OF,AF,PF 9. 执行DEC指令除对于SF、ZF有影响外,还要影响的标志位是( )。 A. AF,PF,CF B. OF,AF,CF C. OF,PF,CF D. OF,AF,PF 10. 执行指令 XOR EAX,EAX 后则 ( ) A.AL=1, ZF=1 B.AL=0, ZF=0 C.AL=1, ZF=0 D.AL=0, ZF=1 11. 下列指令执行后,不影响标志位的指令是( )。 A.ADD EAX,1 B.DEC DX C.XOR CX,AX D.LEA EDX,MSG 12. 能够表示指令存放地址的是( ) A 符号名 B 变量名 C 标号 D 常量名 13. 8位二进制无符号数所能表示的数值范围是( )。 A.0 ~ 255 B.0 ~ 256 C.0 ~ 128 D.0 ~ 127 14. 16位二进制补码所能表示的带符号数的数值范围是( )。 A.0 ~ 65535 B.0 ~ 65536 C.-32768 ~ +32767 D.-65536 ~ +66536 8

15. 8位二进制补码所能表示的带符号数的数值范围是( )。 A.0 ~ 255 B.0 ~ 256 C.-128 ~ +127 D.-128 ~ +128 3.2.名词解释 1. Two's Complement 二进制补码:对于正数补码等于原码,对于负数的补码等于对应的反码(除符号位其余按位取反)加1. 2. Nested Procedure Calls 嵌套程序调用:在调用程序中继续调用其他程序,若调用的是本身则为递归调用。 3. Conditional Jump 条件转移:根据条件如标志位等决定转移,若条件成立则发生跳转。 4. Extended ASCII 扩充美国信息交换标准码 5. Integer constants 整数常量 6. Jumps Based on Signed Comparisons 无符号数条件转移比较 7. Little Endian Order 小端方式:存储方式按低字节存放在低地址端高字节存放在高地址端。 8. Intrinsic Data Types 内部数据类型 3.3.判断 1. 对一个正整数,它的原码、反码和补码都一样,也都与无符号数的编码一样。T 2. 常用的BCD码为8421 BCD码,其中的8表示D3位的权重。T 3. IA-32处理器采用小端方式存储多字节数据。T 4. 空操作NOP指令其实根本没有指令。F 5. 堆栈的操作原则是“先进后出”,所以堆栈段的数据除PUSH和POP指令外,不允许其他方法读写。F 6. 虽然ADD指令和SUB指令执行后会影响标志状态,但执行前的标志并不影响它们的执行 果。T 7. 指令“INC ECX”和“ADD ECX,1”的实现功能完全一样,可以互相替换。F 8. 无符号数在前面加零扩展,数值不变;有符号数前面进行符号扩展,位数加长一位、数 值增加一倍。F 9. 逻辑运算没有进位或溢出问题,此时CF和OF没有作用,所以逻辑运算指令如AND、OR等将CF和OF设置为0。T 10. CMP指令是目的操作数减去源操作数,CMPS指令是源操作数减去目的操作数T 11. 指令“DEC ECX”和“SUB ECX,1”的实现功能完全一样,可以互相替换。F 12. 指令“TEST”和“AND”的实现功能完全一样,可以互相替换。F 13. 指令“CMP EAX, ECX”和“SUB EAX, ECX”的实现功能完全一样,可以互相替换。F 14. CPU在实施加减运算时不区分有符号数和无符号数。T 15. VAR是数据段中定义的字变量,指令MOV AL,VAR是正确的。T 3.4.填空 1. (1)定义字节变量的伪指令助记符是 BYTE ,获取变量名所具有的偏移地址的操作符是 OFFSET 。 2. (2)计算机中有一个“01100001”编码。如果把它认为是无符号数,它是10进制数 97 ;如果它是某个ASCII码,则代表字符_ a _。 9

3. C语言用“\\n”表示让光标回到下一行首位,在汇编语言中需要输出两个控制字符:一个 是回车,其ASCII码是 0DH ,它将光标移动到当前所在行的首位;另一个是换行,其ASCII码是 0AH ,它将光标移到下一行。 4. 数据段有语句“H8843 DWORD 99008843H”,代码段指令“MOV CX, WORD PTR H8843”执 行后,CX= 8843H ;代码段指令“MOV CL, BYTE PTR H8843”执行后,CX=_8843H _。 5. 数据段有语句“XYZ DWORD ?”,则XYZ的类型是 DWORD ,用“TYPE XYZ”会得到数值为 4 。 6. 数据段有语句“ABC BYTE 3 DUP (1,2,3)”,代码段指令“MOV CL, ABC+3”执行后,CL= 4 ; “MOV CL, ABC+8”执行后,CL= 9 。 7. 数据段有语句“ABC BYTE 3 DUP (1,2,3)”,代码段指令“MOV AX, WORD PTR ABC”执行后,AX= 0001H ; “MOV EAX, DWORD PTR ABC”执行后,EAX= 00000001H 。 8. 顺序执行指令“XOR EAX, EAX”和“SUB EAX, EAX”后,EAX= 0 ,OF= 0 。 9. 顺序执行指令“XOR EAX, EAX”和“DEC EAX”后,EAX= FFFFFFFFH ,CF= 1 。 10. 欲将EDX内的无符号数除以16,使用指令“SHR EDX, 4 ”; 欲将EAX内的有符号数除以16,使用指令“ IDIV 16 ”。 11. 已知:X补=10101100B,Y补=11000110B,则:[X+Y]补= [1]01110010 ,[X-Y]补= 11100110 。 12. 设字长为八位,有x= -1,y=124,则有:[x+y]补= 123 , [x-y] 补= -125 。 13. 已知:寄存器AX=7836H,指令:ADD AX,9A5EH执行后,AX= 1295H CF= 1 。 14. 已知:寄存器AX=7836H,指令:ADD AX,9A5EH执行后,OF= 0 ,SF= 1 。 15. \~\的ASCII码值是 30H~39H ,\~\的ASCII码值是 41H~5AH 。 3.5.简答题 1. 使用二进制8位表达无符号整数,257有对应的编码吗? 答:没有。使用二进制8位表达无符号整数的范围为0~255,因此257没有对应的编码。 2. 字符“'F'”和数值46H作为MOV指令的源操作数有区别吗? 答:字符“'F'”的ASCII码就是数值46H,所以没有区别。 3. 为什么可以把指令“MOV AX, (34+67H)*3”中的数值表达式看成是常量? 答:汇编程序在汇编过程中对数值表达式计算,得到一个确定的数值,故称数值表达式为常量。 4. 数值500,能够作为字节变量的初值吗? 答:不能。数值500大于一个字节所能表达的数据量,所以不能为字节变量赋值。 5. 为什么说“XCHG EDX,CX”是一条错误的指令? 答:源、目标寄存器位数不同,不能用该指令进行数据交换。 6. 都是获取偏移地址,为什么指令“LEA EBX, [ESI]”正确,而指令“MOV EBX, OFFSET[ESI]”就错误? 答:前者在指令执行时获得偏移地址,是正确的;但后者的OFFSET只能在汇编阶段获得偏移地址,但此时寄存器内容是不可知的,所以无法获得偏移地址。 7. INC,DEC,NEG和NOT都是单操作数指令,这个操作数应该是源操作数还是目的操作数? 答:INC,DEC,NEG和NOT指令的操作数既是源操作数也是目的操作数。 8. 大小写字母转换的规律是什么?给出转换的公式。 答:大小写字母转换利用它们的ASCII码相差20H。假设用AX存放所要转换的字母: 大写转小写:ADD AX 20H; 小写转大写:SUB AX 20H 10

11

第四章 指令系统 4.1.选择 1. 11. 计算机内的“溢出”是指其运算的结果 ( )。 A.无穷大或无穷小 B.超出了内存单元所能存储的数值范围 C.超出了寄存器能存储数值的范围 D.超出了该指令所指定的结果能存储的数值范围 2. 计算机内的“溢出”是指其运算的结果 ( )。 A.无穷大或无穷小 B.超出了内存单元所能存储的数值范围 C.超出了寄存器能存储数值的范围 D.超出了该指令所指定的结果能存储的数值范围 3. 16位二进制无符号数的数值范围是( )。 A.0 ~ 65535 B.0 ~ 65536 C.0~ 32767 D.0 ~ 32768 4. 最大的10位无符号二进制整数转换成十进制数是 。 A. 51 B. 512 C. 1023 D. 1024 5. ADD 指令不能影响标志寄存器的( )位。 A.ZF B. SF C.CF D. TF 6. INC 指令不能影响标志寄存器的( )位。 A.ZF B. SF C.CF D. DF 7. DEC 指令不能影响标志寄存器的( )位。 A.ZF B. SF C.CF D. IF 8. 在执行DIV或IDIV指令发生错误时会产生( )中断。 A.线路故障 B.内部 C.外部 D.单步 9. 在执行ADD或SUB指令发生溢出错误时( )。 A.不产生任何中断 B. 会产生内部中断 C. 会产生外部中断 D. 会产生单步中断 10. 完成同指令XCHG AX,BX相同功能的指令或指令序列是( )。 A. MOV AX,BX B. MOV BX,AX C. PUSH AX D. MOV CX,AX POP BX MOV AX,BX MOV BX,CX 11. 顺序执行PUSH EAX和POP EBX两条指令,其功能等同于( ) A.MOV EAX, EBX B.MOV EBX, EAX C.XCHG EAX, EBX D.XCHG EBX, EAX 12. 目前在微机中最普遍采用的字符的编码是( )。 A.BCD码 B.ASCII码 C.余三码 D.格雷码 13. 已知X、Y的补码分别为11101011B、00001010B,求X+Y的补码等于( )。 A. 10100001B B. 11011111B C. 11110101B D. 溢出 14. 计算机中( )不能直接表示有符号数。 A.原码 B.补码 C.反码 D.BCD码 15. 下列字母中,ASCII码值最小的是( ) 。 12

A. K B. Y C. a D. i 16. 当执行完下列指令序列后,标志位CF和SF的值为( )。 MOV AL,0C4H ADD AL,9DH A. 0,0 B. 0,1 C. 1,0 D. 1,1 4.2.名词解释 1. Program flow control instructions : 程序流程控制指令 2. OFFSET Operator: 在汇编阶段取得变量的偏移地址。 3. Loop Counter: 循环计数器,一般用ECX作计数器,在LOOP循环中每次减1。 4. Pseudo Code: 伪代码,又称虚拟代码,是高层次描述算法的一种。 5. Single Dimension Array:一位数组 6. Conditional Loop Instructions:条件循环指令利,用条件转移指令决定是否进行循环。 7. Arithmetic instructions:算数指令 8. Jumps Based on Unsigned Comparisons:无条件转移比较 4.3.判断 1. VAR是数据段中定义的字变量,指令MOV AX,VAR+2是正确的。T 2. VAR1和VAR2是数据段中定义的字变量,指令MOV AX, VAR1-VAR2是正确的。T 3. VAR1和VAR2是数据段中定义的字变量,指令MOV AX, VAR1+VAR2是正确的。F 4. 执行乘法指令IMUL src时,运算结果不会产生溢出。T 5. 执行乘法指令IMUL REG,src时,运算结果不会产生溢出。F 6. 定义符号常量时,使用“=”与“EQU”没有区别。F 7. 地址操作符OFFSET可以获取任何寻址方式的内存变量的有效地址。F 8. 指令“SHL”与“SAL”的功能是等价的。T 9. 指令“SHR”与“SAR”的功能是等价的。F 10. 指令“LOOP Lable ”与“DEC ECX JNZ Lable”的功能是等价的。F 11. 32位机不能完成64位整数加法运算。F 12. 只有补码才能表示有符号数。F 13. 指令“LEA”可以获取任何寻址方式的内存变量的有效地址。T 14. 指令“LEA”可以实现求两个寄存器与一个立即数三个数之和的功能。T 15. 堆栈内部中的数据是无法修改的。F 4.4.填空 1. 顺序执行指令“XOR EAX, EAX”和“SUB EAX, 1”后,EAX= 0 ,CF= 0 。 2. 数据段有语句“BUF DWORD 10h DUP( 3 DUP( 2,? ) ,3 ,4 ,5)”,则用“LENGTHOF BUF”会得到数值为 144 ,用“SIZEOF BUF”会得到数值为 576 _。 3. 已知AL=01100001B,执行指令“AND AL,5FH”后,AL= 41H ;如果AL的内容是某个ASCII码,则代表字符 A 。 4. 已知AL=01000001B,执行指令“OR AL,20H”后,AL= 61H _;如果AL的内容是某个ASCII码,则代表字符 a 。 5. 设字长为八位,-128补= 80 _H, -1补= FF H。 13

6. 已知:寄存器AX=7836H,指令:TEST AX,9A5EH执行后,OF= 0 ,SF= 0 。 7. 已知:寄存器AX=7836H,指令:CMP AX,9A5EH执行后,AX= DDD8 H ,OF= 0 _。 8. 要测试AX的第五位是否为1,使用指令 AND AX FF1F H ;若要将AL的第五位置为1,使用指令 OR AL 1O H 。(说明:最低位为第0位。) 9. 已知:寄存器AX=9A5EH,指令: NEG AX执行后,OF= 0 ,SF= 0 。 10. 已知:寄存器EAX=65536,EBX=32768,指令:DIV EBX执行后,EAX=2。则指令:DIV EBX执行前EDX的值应为 0 ,指令:DIV EBX执行后EDX=__0__。 11. 已知:寄存器AL=-1,指令:MOVSX BX,AL执行后,BX= __FFFF__H;指令:MOVZX CX,AL执行后,CX= __00FF__H。 12. 顺序执行指令序列“XOR EAX,EAX ,DEC EAX , ADC EAX,0”后,CF=_0_,ZF=_0_。 13. 顺序执行指令序列“XOR EAX,EAX ,SUB EAX,1 ,ADC EAX,0”后,CF=_1_,ZF=_1__。 14. 已知:寄存器AL=10,BL=-10,指令:MUL BL执行后,AX=__01B4__H;而若将指令改为:IMUL BL 则执行后AX=__1064__H; 15. 若要将AX的第五位和第九位置为0,使用指令__AND AX ,FEEF H__;若要将AX的第五位和第九位置反,使用指令___OR AX ,0110 H___。(说明:最低位为第0位。) 4.5.简答题 1. 乘除法运算针对无符号数和有符号数,有两种不同的指令。只有一种指令的加减法如何区别无符号数和有符号数运算? 答:加减法不区别无符号数和有符号数,但根据运算结果分别设置标志寄存器的CF和是SF标志,可利用CF和SF进行区别。 2. 逻辑与运算为什么也称为逻辑乘? 答:逻辑与运算规则是:1^1=1,其他均为0,逻辑与运算规则类似二进制的乘法,所以称其为逻辑乘。 3. 简述逻辑运算指令怎么实现复位、置位和求反功能? 答:实现复位指令:AND AX 0 ;将AX里的数值为0 实现置位指令:OR AX FFFF ;给预置位置为1再与要比较的数作OR运算 实现求反指令:XOR AX FFFF ;将目的操作数与全1作异或运算。 4. 在处理一维数组时,通常可以采用哪些寻址方式?各自的特点是什么? 答:立即数寻址:指令需要的操作数紧跟在操作码之后作为机器指令代码的一部分并随着处理器的取指操作从主存进入指令寄存器。 特点:速度快不需要转换地址,但寻址范围小; 寄存器寻址:指令的操作数存放在处理器的寄存器中。 特点:寻址方式简单快捷,是最常使用的寻址方式; 存储器寻址:寻址主存中存储的操作数就称为存储器寻址。 特点:需要至少两次访存,寻址方式多,地址范围大。 5. 通常在什么情况下需要使用MOVSX、MOVZX指令? 答:对无符号数,在前面加零实现零位扩展。对应指令MOVZX;对有符号数进行符号扩展,即用一个操作数的符号位(最高位)形成另一个操作数,对应指令MOVSX。 6. 通常在什么情况下需要使用PTR类型操作符?举例说明。 答:如在指令“MOV EAX,DWORD PTR ARRAY”,EAX是双字,变量ARRAY被定义为字量,两者类型不同,MOV指令不允许不同类型的数据传送,利用PTR改变ARRAY的类型,将其传送给EAX. 7. ESP是通用寄存器,是否可以随意的修改ESP的值? 14

答:不可以,堆栈段的范围由堆栈执政寄存器ESP的初值确定,这个位置就是堆栈的底部(不再变化),因此不能随意改变ESP的值。修改可能会导致栈里内容丢失,引起异常。 8. 大小写字母转换的规律是什么?给出转换的公式。 答:大小写字母转换利用它们的ASCII码相差20H。 SUB BL 20H:实现小写字母转换为大写; ADD BL 20H:实现大写字母转换为小写。 9. ESP是通用寄存器,是否可以随意的修改ESP的值? 答:不可以,堆栈段的范围由堆栈执政寄存器ESP的初值确定,这个位置就是堆栈的底部(不再变化),因此不能随意改变ESP的值。修改可能会导致栈里内容丢失,引起异常。 15

第五章 汇编语言程序设计 5.1.选择 1. 循环指令LOOP终止循环的条件是( )。 A.ECX=0 B. ECX=0,且ZF=0 C ECX≠0,且ZF=0 D. ECX≠0,或ZF=1 2. 循环指令LOOPNZ终止循环的条件是( )。 A.ECX=0,或ZF=1 B. ECX=0,且ZF=0 C.ECX≠0,且ZF=0 D. ECX≠0,或ZF=1 3. LOOP指令执行时,隐含计数器是( )。 A. ESP B.EBX C. ECX D.EDI 4. 当A>B时转移的条件转移指令为(A、B为无符号数)( )。 A. JA B. JAE C. JG D. JGE 5. 当A>=B时转移的条件转移指令为(A、B为 有符号数)( )。 A. JA B. JAE C. JG D. JGE 6. 条件转移指令JC Label的测试条件是( )。 A. ZF = 1 B. SF = 1 C. OF = 1 D. CF = 1 7. 若主程序通过堆栈向子程序传递了3个参数,子程序返回主程序时,在子程序中清除堆栈中3个参数正确的RET指令是( )。 A. RET 3*1 B. RET 3*2 C. RET 3*3 D. RET 3*4 8. 主程序通过堆栈向子程序传递了3个参数,子程序调用结束后,在主程序中清除堆栈中3个参数正确的指令是( )。 A. ADD ESP, 3*2 B. ADD ESP, 3*4 C. ADD EBP, 3*2 D. ADD EBP, 3*4 9. 条件转移指令JZ Label的测试条件是( )。 A. ZF = 1 B. SF = 1 C. OF = 1 D. CF = 1 10. 利用堆栈传递子程序参数的方法是固定的,若主程序通过堆栈向子程序传递了3个参数,则在子程序中, 主程序中最后一个被压入栈中的参数可以用( )的形式来访问。 A. [EBP-4] B. [EBP-8] C. [EBP+4] D. [EBP+8] 11. 通过堆栈传递参数,在子程序中使用EBP间址取得参数的原因是( )。 A. EBP没有被占用 B. EBP间址速度较快 C. EBP间址默认的段是堆栈段 D. EBP是基址指针 12. 通过寄存器传递参数比通过堆栈传递参数的优点是( )。 A. 能传递更多得参数 B. 存取效率高 C. 能确保正确调用 D. 没有副作用 13. 利用堆栈传递子程序参数的方法是固定的,在子程序中, 修改参数( )可以改变子程序的返回地址。 A. [EBP-4] B. [EBP-8] C. [EBP+4] D. [EBP+8] 14. 在用LOOP Label 指令构成的循环中,若ECX的初值为-10,则循环体将被执行( )次。 A. 10 B. 0 C. 100 D. >100 15. 在用LOOP Label 指令构成的循环中,若ECX的初值为10,在LOOP Label 指令前有一条“SUB ECX,2” 指令,则循环体将被执行( )次。 16

A. 10 B. 5 C. 4 D. >10000 5.2.名词解释 5.3.判断 1. 指令指针或者还包括代码段寄存器值的改变将引起程序流程的改变。T 2. JMP指令对应高级语言的GOTO语句,所以不能使用。F 3. 因为条件转移指令Jcc要利用标志作为条件,所以也影响标志。F 4. JA和JG指令的条件都是“大于”,所以是同一个指令的两个助记符。F 5. 控制循环是否结束只能在一次循环结束之后进行。F 6. 介绍LOOP指令时,常说它相当于DEC ECX和JNZ两条指令。但考虑对状态标志的影响, 它们有差别。LOOP指令不影响标志,而DEC指令却会影响除CF之外的其他状态标志。T 7. CALL指令用在调用程序中,如果被调用程序中也有CALL指令,说明出现了嵌套。T 8. 子程序需要保护寄存器,包括保护传递入口参数和出口参数的通用寄存器。F 9. 利用寄存器在主子程序间传递参数,其实质就是利用全局变量来传递参数。T 10. 子程序采用堆栈传递参数时,只能在主程序中修改ESP方可保持堆栈的平衡。F 11. 汇编语言中不允许递归调用子程序。F 12. 与高级语言中的自定义函数不同,汇编语言中的子程序不能将计算的结果返给主程序F 13. 汇编语言中,子程序嵌套调用就是递归调用。F 14. 在LOOP指令构成的循环结构中,允许修改ECX的值。T 15. 指令CALL或RET的执行,不改变程序执行的流程。F 16. 在软件中只使用一次的功能编写成子程序完全没有必要。F 17. 在执行CALL指令时,硬件自动将断点地址压入堆栈中。T 18. 在高级语言中,若多重循环出现\交叉”的错误,编译系统通常会给出提示来。若汇编 语言程序中也出现\交叉”错误时,汇编程序也会给出提示来。F 5.4.填空 1. JMP指令根据目标地址的寻址方式,可以分成三种类型:相对寻址、直接寻址 和间接寻址。 2. 假设在平展存储模型下,EBX=1256H,双字变量TABLE的偏移地址是20A1H,线性地址32F7H处存放3280H,执行指令“JMP EBX” 后EIP= 1256H _,执行指令“JMP TABLE*EBX+”后EIP= 3280H。 3. “CMP EAX,3721H”指令之后是JZ指令,发生转移的条件是EAX=_3721H_,此时ZF=_1__。 4. JMP指令根据目标地址的寻址方式,可以分成三种类型:相对寻址、_间接寻址 和直接寻址,通常 相对寻址 方式使用的最多。 5. 循环结构程序一般有三个部分组成,它们是_循环初始_, 循环体 和 循环控制__部分。 6. 条件转移指令 JE Label的测试标志位是__ZF__,条件转移指令 JNO Label的测试标志位是_OF__。 7. 过程定义开始是“TEST PROC”语句,则过程定义结束的语句是__TEST ENDP__。宏定义开始是“DISP MACRO”语句,则宏定义结束的语句是_ENDM_。 8. 利用堆栈传递子程序参数的方法是固定的,在子程序中通常是利用寄存器__EBP__来访问栈中的参数,采用的寻址方式是 间接寻址。 17

9. 调用程序和子程序之间的信息传送称为__参数__,而当传递的信息很大时通常通过 堆栈 来进行传递。 10. 在LOOP Label 指令构成的循环中,若ECX的初值为0,则循环体将被执行__232_次;若ECX的初值为—100,则循环体将被执行(232-100)__次。 11. 只要堆栈空间允许,子程序嵌套调用的层次无限制_,子程序也可调用本身,这称为递归调用_。 12. 通常在子程序的开始部分要保护_子程序中用到的__寄存器,但用做出口参数的通用寄存器则_ _不能保护和恢复 _。 13. 通常在子程序中的参数分为两种类型,分别称为__值参__和 形参 。 14. 通常在子程序中至少要有一条_返回__指令用于返回主程序,而汇编程序在汇编时并不检测__返回_指令是否存在。 15. 在主程序中,采用“JMP subName” 指令可以__转到_ 子程序subName, 但子程序结束后 返回地址不确定 。 5.5.简答题 1. 是什么特点决定了目标地址的相对寻址方式应用最多? 答:当同一个程序被操作系统安排到不同的存储区域执行时,指令间的位移没有改变,目标地址采用相对寻址可方便操作系统的灵活调度。 2. 将下面C语言程序的代码片段转换为功能等价的汇编语言代码片段,其中sign与sinteger均为双字变量。 if ( sinteger = 0) sign = 0; else if ( siteger > 0) sign = 1; else sign = -1; 答: .data ;数据段 定义两个双字变量(此处可以省略) sign dword ? sintegter dword ? .code ;代码段 cmp sinteger , 0 jne outjudge ;若不大于则跳转 mov sign , 0 ; sinteger = = 0 outjudge: cmp sinteger , 0 jl injudge ;若小于则跳转(将sinteger看作有符号数) ;若看作无符号数用jb来判断 mov sign , 1 ; sinteger > 0 injudge: mov sign , -1 ; sinteger < 0 done: ; 结束 3. 将下面C语言程序的代码片段转换为功能等价的汇编语言代码片段,其中ch1与caps均为字节变量。 18

; 2. for i=1 to n-1 do ; 2.1 if maxa[i] then min=a[i] ; 合理分配寄存器:采用loop循环,ecx=lengthof array -1 ; max=eax=a[0],min=ebx=a[0]; ; esi=1,做下标,采用带比例因子的相对寻址处理数组。 .686 .model flat,stdcall option casemap:none includelib msvcrt.lib printf PROTO C : dword,:vararg .data array dword 12,4,-168,122,33,56,78,99,345,-66,-5 max dword ? min dword ? fmtStr byte ' max=%d min=%d',13,10,0 ;格式描述串 .code main proc mov ecx,lengthof array -1 mov eax,array[0] ;eax:max mov ebx,eax ;ebx:min mov esi,1 ;数组下标 again: cmp eax,array[esi*4] jge small ;if max= small: cmp ebx,array[esi*4] jle next mov ebx,array[esi*4] next: inc esi loop again mov max,eax mov min,ebx invoke printf,offset fmtStr,eax,ebx ret ;return to Windows main endp ;end of main end main ;end of assembly 5. 编程写一个完整的程序统计msg中的空格的个数与小写字母的个数,并分别将它们存入space单元与char单元中。数据段的定义如下: .data msg byte 'I love XUT !',13,10,0 space dword ? 24

lowercase dword ? ; Win32 Console Application ; 统计msg串中的空格的个数与小写字母的个数, ; 并分别将它们存入space单元与lowercase单元中。 ; 目的:学习简单的关于分支与数组处理的算法。 ; 学习 if ('a'<= a[i])&&(a[i]<='z') lowercase++;中 ; 逻辑与表达式在汇编语言中的实现。 ; 算法描述 ; 1. space=lowercase=0; ; 2. for i=0 to n-1 do ; 2.1 if a[i]==' ' then space++; ; 2.2 if 'a'<= a[i] <='z' then lowercase++; ; 合理分配寄存器:采用loop循环,ecx=lengthof msg-1 ; space=eax=0,lowercase=ebx=0,esi=offset msg,做指针 .686 .model flat,stdcall option casemap:none includelib msvcrt.lib printf PROTO C : dword,:vararg .data msg byte 'I love XUT !',13,10,0 space dword ? lowercase dword ? fmtStr byte ' space=%d lowercase=%d',13,10,0 ;格式描述串 .code main proc mov ecx,lengthof msg-1 xor eax,eax ;space=eax=0 mov ebx,eax ;lowercase=ebx=0 mov esi,offset msg ;指向msg首地址 again: mov dl,[esi] cmp dl,' ' jnz letter ;if a[i]==' ' then space++; inc eax ;注意:转换成汇编语言时,测试的是不是空格时则转去测试字母。 letter: cmp dl,'a' jb next ;注意:测试的是a[i]<'a'。 cmp dl,'z' ja next ;注意:测试的是a[i]>'z'。 inc ebx ;lowercase++ next: inc esi ;指向下一个字符 25

loop again mov space,eax mov lowercase,ebx invoke printf,offset fmtStr,eax,ebx ret ;return to Windows main endp ;end of main end main ;end of assembly 6. 编程写一个完整的程序,将字符串msg中所有的小写字母转换为大写字母。数据段的定义如下: .data msg byte 'I love XUT !',13,10,0 ; Win32 Console Application ; 将字符串msg中所有的小写字母转换为大写字母 ; 目的:学习简单的关于分支与数组处理的算法。 ; 学习 if ('a'<= a[i])&&(a[i]<='z') a[i]=a[i]-0x20;中 ; 逻辑与表达式在汇编语言中的实现。 ; 算法描述 ; 1. for i=0 to n-1 do ; if 'a'<= a[i] <='z' then a[i]=a[i]-20H; ; 小写字母与大写字母的ASCII码的差值为20H, 也可以用 ; a[i]=a[i]&0x5f ; 合理分配寄存器:采用loop循环,ecx=lengthof msg-1 ; esi=offset msg,做指针。 .686 .model flat,stdcall option casemap:none includelib msvcrt.lib printf PROTO C : dword,:vararg .data msg byte 'I love XUT !',13,10,0 fmtStr byte 'msg: %s',13,10,0 ;格式描述串 .code main proc mov ecx,lengthof msg-1 mov esi,offset msg ; 指向msg首地址 again: mov dl,[esi] cmp dl,'a' jb next ; 注意:测试的是a[i]<'a'。 cmp dl,'z' ja next ; 注意:测试的是a[i]>'z'。 26

sub dl,20h ; and dl,5fh mov [esi],dl next: inc esi ; 指向下一个字符 loop again invoke printf,offset fmtStr,offset msg ret ;return to Windows main endp ;end of main end main ;end of assembly 7. array是一无符号数数组,数据段的定义如下。要求:编程写一个完整的程序求出数组元素中偶数的和,并将它存入esum单元中。 .data array dword 12,34,123,78,43,234,79,86,98,20 esum dword ? ; Win32 Console Application ; 求数组中所有偶数元素的和。 ; 目的:学习简单的关于分支与数组处理的算法。 ; 算法描述 ; 1. esum=0; ; 2. for i=0 to n-1 do ; if a[i] is evennunber then esum=esum+a[i]; ; 判断偶数,采用 test 指令测试最低位。 ; 合理分配寄存器:采用loop循环,ecx=lengthof array ; esum=eax=0,esi=0,做下标,采用带比例因子的相对寻址处理数组。 .686 .model flat,stdcall option casemap:none includelib msvcrt.lib printf PROTO C : dword,:vararg .data array dword 12,34,123,78,43,234,79,86,98,20 esum dword ? fmtStr byte ' esum=%d',13,10,0 ;格式描述串 .code main proc mov ecx,lengthof array xor eax,eax ;esum=eax=0 mov esi,eax ;数组下标 again: mov ebx,array[esi*4] test ebx,1 jnz next ;if a[i] is evennunber then esum=esum+a[i]; 27

add eax,ebx ;注意:转换成汇编语言时,测试的是不是偶数时则取下一个数测试。 next: inc esi loop again mov esum,eax invoke printf,offset fmtStr,esum ret ;return to Windows main endp ;end of main end main ;end of assembly 8. “回文串”是一个正读和反读都一样的字符串,比如“eye”、“level”、“noon”等。请写一个程序测试一字符串是否是“回文”, 是“回文”则显示“Y”,否则显示“N”。 显示一个字符的子程序为:dispc,入口参数:AL=要显示个字符的SACII码。 ; Win32 Console Application palindrome ; 测试一字符串是否是“回文”, 是“回文”则显示“Y”,否则显示“N”。 ; 算法描述: ; left,right分别指向串的第一个和最后一个元素,采用首尾比较。 ; 1. left=0,right=n-1 ,flag='Y' ; ; 2. while lefta[right--] then ; { flag= 'N'; break;} ; 3. printf flag ; 合理分配寄存器:left=esi,right=edi ,flag=al='Y' ; 采用相对寻址处理数组。 include io32.inc .data msg byte 'level',0 count equ lengthof msg .code main proc mov esi,0 ;left指针 mov edi,count-2 ;right指针,串长不包括结束标志0 mov al,'Y' ; flag=al='Y' .while (esi

call dispcrlf ret ;return to Windows main endp ;end of main end main ;end of assembly 9. 回文是指正读和反读都一样的数或文本。例如:11、121、12321等,编写程序,求10到10000之间所有回文数并输出。显示一个无符号数的子程序为:dispuid,入口参数:EAX=要显示无符号数的值。 ; Win32 Console Application ; 求10到10000之间所有回文数并输出。 ; 目的:学习如何利用条件转移指令构造条件循环结构,多重循环的构造方法。 ; 算法思想:采用div指令把一个整数N的每一位分离出来,注意, ; 此时得到的是N的各个位的逆序序列。然后,将这个逆序序列再组合成一个新的整数M, ; 若M=N,则N是回文数。 ; 算法描述 ; 1. ecx=10 to 1000 do ; 1.1 eax=ecx被除数;ebx=10除数;esi=0新生成的数的初值。 ; 1.2 while eax<>0 do ; 1.2.1 edx=0;div ebx;esi=esi*10+edx ; 1.3 if ecx=esi then print esi include io32.inc .code main proc mov ecx,10 mov ebx,ecx ;ebx=10除数 .repeat xor esi,esi ;esi=0,是新生成的数的初值 mov eax,ecx ;eax被除数 .while (eax!=0) xor edx,edx ;edx被除数的高32位 div ebx imul esi,10 add esi,edx ;逆序生成新数,esi=esi*10+edx .endw cmp esi,ecx jne next mov eax,ecx call dispuid call dispcrlf next: inc ecx .until (ecx>10000) ret ;return to Windows 29

main endp ;end of main end main ;end of assembly 10. 编程写一个名为Prime的子程序,用于测试一个整数是否是素数,主子程序间的参数传递通过堆栈完成。调用Prime子程序求出2~100之间的所有素数,并将它们存入Parray数组中,素数的个数存入变量Pcounter中。 ; Win32 Console Application ; 利用子程序求2~100之间的所有素数。 ; 目的:学习子程序的构造与参数的传递方法。 include io32.inc .data Prime dword 100 dup(?) Pcounter dword ? flag byte ? .code main proc xor esi,esi ;esi素数个数计数器,兼做Prime下标。 mov ecx,2 ;循环控制变量 .while (ecx<=100) push offset flag ;flag的地址进栈,传地址 push ecx ;ecx进栈,传值 call prime cmp flag,1 jne next mov Prime[esi*4],ecx inc esi mov eax,ecx call dispuid ;输出,用于验证。可以删掉 call dispcrlf ;输出,用于验证。可以删掉 next: inc ecx .endw mov Pcounter,esi ret ;return to Windows main endp ;end of main prime proc ; function: 判断一个无符号整数x是否是素数 ; Receives: 从栈获取无符号整数x及标志变量flag的地址 ; Returns: if x is prime number then flag=1 else flag=0 ; 注意:[ebp+8]是最后一个压入栈中的参数! ; 以[ebp+8]为基准,从栈中获取其它的参数。 ; 算法描述: ; 1.flag=1; 30

; 2. for i=x/2 downto 2 do ; if x mod i=0 then {flag=0;break;} ; 注意合理的分配使用寄存器,ecx=i,兼做除数。 ; edx,eax做被除数,ebx=flag的地址,edi=x,用于暂存x push ebp mov ebp,esp ; 建立访问栈参数的指针基准 push eax ; 保护子程序中要使用的寄存器 push ebx push ecx push edx push edi mov ebx,[ebp+12] ;变量flag的地址 mov byte ptr [ebx],1 ;flag=1 mov eax,[ebp+8] ;eax=x mov edi,eax ;edi=x,用于暂存x mov ecx,eax shr ecx,1 ;ecx=x/2 .while (ecx>=2) mov eax,edi ;eax=x,注意:此句极易漏掉!导致逻辑错误。 xor edx,edx ;被除数送edx,eax,32位除法 div ecx ;div指令执行后eax=商,edx=余数 or edx,edx ;cmp edx,0 jnz next ;if eax mod ecx<>0 then goto next mov byte ptr [ebx],0 ;flag=0 jmp restore next: dec ecx .endw restore: pop edi ; 恢复子程序中使用过的寄存器 pop edx pop ecx pop ebx pop eax pop ebp ret 2*4 ;清理栈中的参数 prime endp end main ;end of assembly 11. 编程写一个名为Gcd的求两个数最大公约数子程序,主子程序间的参数传递通过堆栈完成。调用Gcd子程序求出三个双自变量:dvar1、dvar2与dvar3的最大公约数并输出。显示一个无符号数的子程序为:dispuid,入口参数:EAX=要显示无符号数的值。 ; Win32 Console Application ; 利用子程序求3个无符号整数的最大公约数。 ; 目的:学习子程序的构造与参数的传递方法。 31

.686 .model flat,stdcall option casemap:none includelib msvcrt.lib printf PROTO C : dword,:vararg .data dvar1 dword 2012 dvar2 dword 128 dvar3 dword 456 dgcd dword ? ;存放2个无符号整数的最大公约数 fmtStr byte ' gcd(%d,%d,%d)=%d',13,10,0 .code main proc push dvar1 push dvar2 ;参数dvar1,dvar2进栈,传值 push offset dgcd ;dgcd的地址进栈,传地址 call Gcd ;dgcd=dvar1,dvar2的最大公约数 push dvar3 push dgcd ;参数dvar3,dgcd进栈,传值 push offset dgcd ;dgcd的地址进栈,传地址 call Gcd invoke printf,offset fmtStr,dvar1,dvar2,dvar3,dgcd ret ;return to Windows main endp ;end of main Gcd proc ; function: 求2个无符号整数的最大公约数。 ; Receives: 从栈中获取无符号整数a,b及 ; 存放最大公约数变量gcd的地址 ; Returns: gcd=无符号整数a,b的最大公约数。 ; 注意:[ebp+8]是最后一个压入栈中的参数! ; 以[ebp+8]为基准,从栈中获取其它的参数。 ; 算法思想:采用欧几里得算法。gcd(a,0)=a; ; gcd(a,b)=gcd(b,a mod b) ; 算法描述: ; 1. while b<>0 do ; { r=a mod b;a=b;b=r;} ; 2. gcd=a; ; 注意合理的分配使用寄存器,edx,eax做被除数 ; ebx=gcd的地址,eax=a,ecx=b push ebp mov ebp,esp ; 建立访问栈参数的指针基准 push eax ; 保护子程序中要使用的寄存器 push ebx push ecx 32

push edx mov ebx,[ebp+8] ;ebx=变量gcd的地址 mov ecx,[ebp+12] ;ecx=b mov eax,[ebp+16] ;eax=a .while (ecx!=0) xor edx,edx ;被除数送edx,eax,32位除法 div ecx ;div指令执行后eax=商,edx=余数 mov eax,ecx ;a=b mov ecx,edx ;b=r,edx=余数 .endw mov [ebx],eax ;gcd=最大公约数 restore: pop edx ; 恢复子程序中使用过的寄存器 pop ecx pop ebx pop eax pop ebp ret 3*4 ;清理栈中的参数 Gcd endp ;end of Gcd end main ;end of assembly 12. 在一个已知长度的字符串中查找是否包含“BUG”子字符串。如果存在,显示“Y”,否 则显示“N”。 显示一个字符的子程序为:dispc,入口参数:AL=要显示个字符的SACII码。 ; Win32 Console Application ; 串模式匹配算法,求子串在源串中第一次出现的起始位置。 ; 若子串在源串中出现则显示“Y”,否则显示“N”。 ; 算法思想:采用人工串匹配的方法,就是从左向右扫描, ; 当源串没有结束时,从源串的第i个字符开始与子串进行比较, ; 若相等,则继续比较后续字符,否则从源串的第i+1 ; 个字符开始重新与字串进行比较。这种算法的效率非常低, ; 一种朴素串模式匹配算法改进的算法称为KMP算法。 ; 算法描述: ; 1. i=j=0; 数组下标从0开始,sStr为源串,tStr为子串 ; 2. while (i

; 采用相对寻址处理数组。 ; Q:若将此算法改为子程序,如何修改? Include io32.inc .data sStr byte 'If you find any error in the program, you can DEBUG it.' tStr byte 'BUG' sLen equ sizeof sStr tLen equ sizeof tStr .code main proc xor esi,esi ;i=esi mov edi,eax ;j=edi .while (esi

; 算法描述: ; 1. scanP=tailP=sLen-2; 数组下标从0开始 ; 2. while (scanP>=0) do ; if sStr[scanP]==' ' then ; for moveP=scanP+1 to tailP do ; sStr[moveP-1]=sStr[moveP]; ; tailP--; ; else ; scanP++; ; 3. print sStr; ; 合理分配寄存器:tailP=edi,scanP=esi ,moveP=ebx ; 采用相对寻址处理数组。 ; Q:若将此算法改为子程序,如何修改? Include io32.inc .data sStr byte ' I Love XAUT ! ',0dh,0ah,0 .code main proc lea eax,sStr ; 显示处理前的字符串 call dispmsg mov mov .while cmp jnz edi,lengthof sStr-2 ;尾指针tailP esi,edi ;从右向左扫描工作指针scanP sdword ptr esi>=0 ;sdword ptr esi指示将esi按有符号数处理 sStr[esi],20h ; 检测是否是空格 next lea ebx,[esi+1] ;移动字符工作指针moveP=scanP+1 .while ebx<=edi ;循环移动开始 mov al,sStr[ebx] mov sStr[ebx-1],al ;字符向前移一个位置 inc ebx .endw dec edi ;尾指针tailP向前移一个位置 next:dec esi ;向左扫描工作指针scanP向前移一个位置 .endw mov byte ptr sStr[edi+1],0 ;串结束标志 lea eax,sStr ;显示处理后的字符串 call dispmsg ret ;return to Windows main endp ;end of main end main ;end of assembly 14. 编写一子程序,将一个32位二进制数用8位十六进制形式在屏幕上显示出来。采用堆栈方法传递这个32位二进制数,并写主程序验证它。显示一个字符的子程序为:dispc,入口参数:AL=要显示个字符的SACII码。 35

; Win32 Console Application ; 将一个32位二进制数转换为8位十六进制, ; 并在屏幕上显示出来的子程序。 ; 目的:学习子程序的构造与参数的传递方法。 include io32.inc .data dvar dword 1234abc8h ;table byte '0123456789abcdef' ;采用查表法进行转换 .code main proc push dvar ;堆栈传递参数 call btoh ret ;return to Windows main endp ;end of main btoh proc ; function: 将一个32位二进制数转换为8位十六进制, ; 并在屏幕上显示出来。 ; Receives: 堆栈中获取要转换为十六进制的32位数 ; Returns: 无。 ; 算法思想:采用循环左移,一次移动4位。 ; 利用最低4位的值查表,转换为十六进制的数ASCII码。 ; 算法描述: ; 1. ecx=8; ; 2. while ecx>0 ; { ror eax,4; ; ebx=eax; ; eax=eax and 0fh; ; al=table[eax]; ; print al; ; eax=ebx; ; ecx--;} push ebp mov ebp,esp ; 建立访问栈参数的指针基准 push ebx ; 保护子程序中要使用的寄存器 push ecx mov ecx,8 mov eax,[ebp+8] again: rol eax,4 ;eax的最高的4位移动到最低的4位 mov ebx,eax and eax,0fh ;保留eax的最低的4位 36

mov al,table[eax] call dispc mov eax,ebx loop again call dispcrlf restore: pop ecx ; 恢复子程序中使用过的寄存器 pop ebx pop ebp ret 1*4 table byte '0123456789abcdef' ;采用查表法进行转换 btoh endp ;end of Bubble end main ;end of assembly 15. 编程写一个名为Bubble的冒泡排序子程序,主子程序间的参数传递通过堆栈完成;并写主程序验证它。显示一个无符号数的子程序为:dispuid,入口参数:EAX=要显示无符号数的值。 ; Win32 Console Application ; 冒泡排序子程序。 ; 目的:学习子程序的构造与参数的传递方法。 include io32.inc .data array dword 12,4,168,122,-33,56,78,99,345,66,-5 count equ lengthof array .code main proc push offset array ;array的首地址进栈,传地址 push count ;数组元素的个数进栈,传值 call Bubble xor esi,esi ;以下的while循环用于验证。可以删掉 .while (esi

; 注意:[ebp+8]是最后一个压入栈中的参数! ; 以[ebp+8]为基准,从栈中获取其它的参数。 ; Bubble Sort的思想:从第一个元素开始, ; 相邻的两个元素依次进行比较,若关系不对则交换。 ; 这样较小的数就向上移动,而较大的数则向下移动, ; 这就是冒泡排序的由来。经过N-1次比较, ; 最大的数被移动到最后一个位置, ; 这个过程称之为一趟扫描。 ; 显然,经过N-1趟扫描,排序过程就结束了; ; 并且每趟扫描的比较次数比前一趟减少一次。 ; 算法描述: ; 1. ecx=n-1; ; 2. while ecx>0 ; { esi=array;数组的首地址 ; ebx=ecx; ; while ebx>0 ; { if [esi]>[esi+4] then ; swap [esi],[esi+4] ; ; esi=esi+4;ebx--; ; } ; ecx--;} ; push ebp mov ebp,esp ; 建立访问栈参数的指针基准 push eax ; 保护子程序中要使用的寄存器 push ebx push ecx push esi push edi mov esi,[ebp+12] ;array的首地址 mov edi,esi mov ecx,[ebp+8] ;数组元素的个数 dec ecx again: mov esi,edi ;esi=array的首地址 mov ebx,ecx .while (ebx>0) mov eax,[esi] cmp eax,[esi+4] ; 比较两个相邻的元素 jl next xchg eax,[esi+4] mov [esi],eax ; 交换两个相邻的元素next: add esi,4 ; esi指向下一个元素 38

dec ebx .endw loop again restore: pop edi ; 恢复子程序中使用过的寄存器 pop esi pop ecx pop ebx pop eax pop ret Bubble endp end main ebp 2*4 ;清理栈中的参数 ;end of Bubble ;end of assembly 39

第六章 微机总线 6.1.选择 1. 地址总线为20位的微处理器可直接寻址的最大范围是( )。 A 1MB B 16MB C 64MB D 4GB 2. 8086的INTR信号线表示( ) A 可屏蔽中断响应 B 不可屏蔽中断 C 可屏蔽中断 D不可屏蔽中断响应 3. 当控制线READY=0时,应在( )之间插入等待周期Tw A T1和T2之间 B T2和T3之间 C T3和T4之间 D 任何时候 4. 8086的NMI信号线表示( ) A 可屏蔽中断响应 B 不可屏蔽中断 C 可屏蔽中断 D不可屏蔽中断响应5. 8086的READY信号线表示( ) A 就绪 B 复位 C 时钟 D 测试 6. 8086的HOLD信号线表示( ) A 总线请求 B 总线响应 C 中断请求 D 中断响应 7. 8086的写总线周期在T1状态( ) A 完成数据传送 B 输出地址 C 输出控制信号 D 检测数据传送 8. 8086的写总线周期在T2状态( ) A 完成数据传送 B 输出地址 C 输出控制信号 D检测数据传送 9. 8086的写总线周期在T3状态( ) A 完成数据传送 B 输出地址 C 输出控制信号 D 检测数据传送 10. 8086的写总线周期在T4状态( ) A 完成数据传送 B 输出地址 C 输出控制信号 D 检测数据传送 11. MB/s的含义是 ( ) A 总线上每秒传输的最大数据量 B 总线上每秒传输的最大字节量 C 总线上每秒传输的二进制位数 D 总线上每秒传输的十进制位数 12. 总线上每秒传输的最大字节量称为 ( )。 A 总线位宽 B 总线字宽 C 总线带宽 D 数据位数 13. 串行通信适用于微机间 ( )的数据传送。 A 不同类型 B 同类型 C 近距离 D 远距离 14. 并行通信适用于微机间 ( )的数据传送。 A 不同类型 B 同类型 C 近距离 D 远距离 15. USB是一种 ( ) A 通用的串行总线接口 B 通用的并行总线接口 C 新型的微机内部总线 D 新外设标准插头 40

6.2.名词解释 1. 芯片总线:大规模集成电路芯片内部或系统中各种不同器件连接在一起的总线. 2. 内总线:微机系统中功能单元与功能单元间连接的总线. 3. 外总线:微机系统与其外设或微机系统之间连接的总线 4. 总线仲裁:确定使用总线的主模块,目的是避免多个主模块同时使用时占用总线, 确保任何时候总线上只有一个模块发送信息. 5. 总线带宽:单位时间传送的数据量,也成总线 6. 总线时序:描述总线信号随时间变化的规律以及总线信号的相互作用. 7. 指令周期:一条指令在处理器中从取指、译码到最终执行完成的过程 8. 总线周期:伴随着数据交换的总线操作 9. 机器周期:完成一个基本工作所需要的时间。 10. 时钟周期:每个时钟脉冲的持续时间。 11. 存储器读:处理器从存储器读取代码或操作数。 12. 存储器写:处理器向存储器写入操作数。 13. I/O读:存储器从外设读操作数 14. I/O写:存储器向外设写操作数 15. ALE:地质所存允许,是一种三态输出高电平有效的信号 6.3.判断 1. 低电平有效是指信号为低电平时候表示信号的功能。T 2. 处理器读取存储器操作数时和读取代码时,都发生存储器读的总线操作。T 3. 8086准备好READY引脚输出给存储器或外设有效信号,表明处理器准备好交换数据了。F 4. 8086总线周期的T1状态发出地址,属于总线操作的寻址阶段。T 5. 总线操作的同步时序是指总线操作的各个过程由共用的总线时钟信号控制。T 6. 总线操作的半同步时序是指总线操作仍由共用的总线时钟信号控制,但慢速模块可以通 过等待信号让快速模块等待。T 7. 总线操作的异步时序是指总线操作需要握手(Handshake)联络(应答)信号控制, 总线时钟信号可有可无。T 8. 能够控制总线传输信息的设备称为从设备。F 9. 处理器引脚是典型的芯片总线。T 10. 现代微型计算机采用分级总线结构,以适应不同部件的要求。T 11. 高性能总线都支持数据块传送,即猝发传送。T 12. 某一时刻可以有多个主模块控制总线。F 13. 总线类似于一个“公路网”,通过不同的总线把系统内的各个模块连接起来。T 14. 总线信号并不是各自独立发挥作用,而是相互配合实现总线操作。T 15. 处理器通过引脚对外操作主要有存储器读,存储器写,I/O读,I/O写四种操作。T 6.4.填空 1. 某个处理器具有16个地址总线,通常可以用A 0 表达最低位地址信号,用A 15 表达最高地址信号。 2. 8086有3个最基本的读写控制信号,它们是M/IO、 /WR 和 /RD 。 41

3. 8086执行指令“MOV AX, [BX]”时,在其引脚上将产生 存储器读 总线操作;执行指令“MOV [BX], AX”时,在其引脚上将产生 存储器写 总线操作。 4. 8086无等待的总线周期由 4 个T状态组成,Pentium无等待的总线周期由 2 个T状态组成。 5. 占用总线进行数据传输,一般需要经过总线请求和仲裁、 寻址 、数据传送 和结束4个阶段。 6. 总线按照信号分类可以分为数据总线, 地址总线 , 控制总线 。 7. 总线按照信号分类可以分为 数据总线 , 地址总线 ,控制总线。 8. 总线按照数据传输方式分为 并行总线 和 串行总线 。 9. 8086处理器的数据总线为16位,时钟频率为5MHz,那么实现一次16为数据传送的总线带宽是_20?10b/s。而对于系统时钟频率为66MHz的Pentium处理器来说,其2-1-1-1的猝发传送周期用5个时钟传送32个字节数据,则其总线带宽是 422.4MB/S 。 10. 通常情况下,我们用AB表示地址总线,那么 DB 表示数据总线, 用 CB _表示控制总线。 11. 位于集成电路内部的总线被称为 芯片 总线。用于同一块印刷电路板上的总线是 内 总线。 12. 总线仲裁的方法有用 集中仲裁 和 分布仲裁 。 13. 通常总线带宽与位宽成 正 比,如果总线的频率为88MHz,总线的位宽为8位,则总线的带宽应为_________。 14. 外部总线也称为 通信 总线,其表现形式是位于微机后面板上的一些 _外部接口_。 15. IA32处理器进行串行传送时,需要 1 根传输线;并行传送时,每个数据位都需要 1 条单独的传输线。 66.5.简答题 1. 为什么称处理器的数据总线是双向的? 答:数据总线承担着处理器与存储器、外设之间的数据交换既可以输入也可以输出故其是双向的。 2. 8086的地址和数据总线为什么要分时复用? 答:为减少引脚个数,8086采用了地址总线和数据总线分时复用。即数据总线在不同时刻还具有地址总线的功能。 3. 具有三态能力的引脚输出高阻意味着什么? 答:相当于连接了一个阻抗很高的外部器件,信号无法正常输出;即放弃对该引脚的控制,与其它部件断开连接。 4. 总线周期中的等待状态是个什么工作状态? 答:处理器的运行速度远远快与存储器和I/O端口。处理器检测到存储器或I/O端口不能按基本的总线周期进行数据交换时,插入一个等待状态Tw。等待状态实际上是一个保持总线信号状态不变的时钟周期。 5. 猝发传送是一种什么传送? 答:处理器只提供首地址。但可以从后续连续的存储单元中读写多个数据。 6. 8086处理器的输入控制信号RESET,HOLD的含义各是什么?当它们有效时,8086 CPU将出现何种反应? 答:RESET:复位输入信号,高电平有效。该引脚有效时,将迫使处理器回到其初始状态;转为无效时,CPU重新开始工作。 42

HOLD:总线请求,是一个高电平有效的输入信号。该引脚有效时,表示其他总线主控设备向处理器申请使用原来由处理器控制的总线。 7. 8086处理器的输入控制信号NMI和INTR的含义各是什么?当它们有效时,8086 CPU将出现何种反应? 答:NMI:不可屏蔽中断请求,是一个利用上升沿有效地输入信号。该引脚信号有效时,表示外界向处理器申请可屏蔽中断。 INMI:可屏蔽中断请求,是一个利用高电平有效的输入信号。该引脚信号有效时,表示中断请求设备向处理器申请可屏蔽中断。 8. 总线数据传输为什么要进行总线仲裁? 答:总线上可能连接多个需要控制总线的主设备,但任一时刻总线上只能有一个模块发送信息。总线仲裁可以确定使用总线的主模块,用以避免多个主模块同时占用总线。 43

第七章 存储系统 7.1.选择 1. 某处理器设计只支持7KB主存,则内存地址需( )位就足够了。 A 12 B 13 C 14 D 15 2. 需要定时刷新的存储器是( ) A.SRAM B.DRAM C.EPROM D.E2PROM 3. 下列只读存储器中,可紫外线擦除数据的是( ) A.PROM B.EPROM C.Flash Memory D.E2PROM 4. 可编程ROM可简记为( )。 A.PROM B.MROM C.EPROM D.E2PROM 5. 优盘是一种电可擦除.可重写的 ( ) 的存储器。 A.非易失性 B.易失性 C.只读性 D.磁介质性 6. 存储器芯片位数不足时,需用( ) 。 A.字扩展 B.位扩展 C.字位扩展 D.以上均可 7. 64K*1位的DRAM芯片通常有( ) 地址线引脚 A.16 B.8 C.1 D.4 8. 某微机系统的存储器容量为256K字节,若采用单片容量为16K*8位的SRAM芯片,则组成该存储系统共需( )个该类芯片 A.16 B.8 C.1 D.4 9. 64K*1位的EPROM芯片通常有( ) 地址线引脚 A.16 B.8 C.1 D.4 10. 某微机系统的存储器容量为256K字节,若采用单片容量为16K*1位的SRAM芯片,则组成该存储系统共需( )个该类芯片 A.16 B.128 C.64 D.8 11. 8086CPU有20条地址线,可寻址空间为( )。 A.640kB B.64kB C.1MB D.16MB 12. 80286有24条地址线,可寻址空间为( )。 A.640kB B.64kB C.1MB D.16MB 13. PC系列微机可寻址的I/O空间是( ) 。 A.1k B.32k C.64k D.1M 14. 一般PC系列微机I/O寻址只用10根地址线,可寻址( )个。 A.1k B.32k C.64k D.1M 15. 下列只读存储器中,仅能一次写入数据的是( )。 A.PROM B.EPROM C.Flash Memory D.E2PROM 7.2.名词解释 1. RAM: 随机存储器,只要给出存取位置就可以读写内容,存取时间与所处位置无关。 2. ROM: 44

只读存储器,只能读出其中的数据,但数据可以长期保存断电不丢失。 3. SRAM: 静态RAM,SRAM芯片以触发器为基本存储单元用其两种稳定状态表示逻辑0和 逻辑1。SRAM不需要额外的刷新电路只要不掉电,信息就不会消失。 4. FLASH ROM: 是一种新型的电可擦除可编程ROM芯片,能够很快擦除整个芯片内容,中文简称“闪存”。 5. NVRAM: 非易失RAM,NVRAM多指带有后备电池的SRAM芯片。这种芯片采用CMOS制造工艺设计以减少用电,其背部有锂电池,断电后电池维持供电,即使长期不用,所存信息也能维持若干年。 6. 完全译码: 使用全部处理器的地址总线,称之为完全译码。完全译码的特点是地址唯一:一个存储单元只对应一个存储地址,组成的存储系统的地址空间连续。 7. 部分译码: 只使用部分系统地址总线进行译码。没有被使用的地址信号对存储器芯片不产生影响,有一个不使用的地址信号就对应有两个编码,这两个编码实际上指向同一个存储单元,这就出现了地址重复:一个存储单元对应多个存储地址,浪费了存储空间。 8. 系统RAM区: 该去占用地址最低端的640KB空间(00000H-9FFFFH)由dos进行管理。 9. 存储容量: 微机系统存储容量,以字节B为基本单位,半导体芯片以位b为基本单位,表达存储容量。 10. 存取速度: 即存储时间,指从读写命令发出到数据传输操作完成经历的时间。 11. 空间局部: 即紧邻被访单元的地方也将被访问。 12. 时间局部: 刚被访问的单元很快将再次被访问。 13. 辅助存储器: 通过磁记录或光记录方式,以磁盘或光盘形势存放可读可写式制度内容。 14. 地址译码: 将某个特定的编码输入翻译为有效输出的过程。 15. 虚拟存储器: 利用读写辅助存储器,操作系统可以在主存储器与辅助存储器之间以磁盘文件形式建立虚拟存储器。 7,3.判断 1. 存储系统的高速缓存需要操作系统的配合才能提高主存访问速度。F 2. 存储器芯片的集成度高表示单位芯片面积制作的存储单元数多。T 3. 微机大容量主存一般采用DRAM芯片组成。T 4. 部分译码可以简化译码电路,不会减少可用的存储空间。F 5. 存储系统每次给DRAM芯片提供刷新地址,被选中的芯片上所有单元都刷新一遍。F 6. 存储系统的刷新地址提供给所有DRAM芯片。T 7. ROM芯片的烧写或擦写就是指对ROM芯片的编程。T 45

8. 存储器译码时采用全地址译码会浪费地址空间。F 9. 存储器的主要性能指标是存储容量和存储空间。F 10. 存储访问的局部特性保证了层次化存储系统具有优秀的性能。T 11. 存储访问的局部性原理只是指空间局部。F 12. PC机主要采用光盘作为辅助存储器。F 13. 按制造工艺,半导体存储器可分为“双极型”器件和“MOS型”器件。T 14. 芯片的存储容量有存数单元数和每个存储单元的数据位数决定。T 15. 高性能处理器必须配合快速主存储器才能真正发挥作用。T 7.4.填空 1. 计算机存储容量的基本单位:1 B(Byte)= 8 b(bits),1TB= 210 GB。 2. 在半导体存储器中,RAM指的是随机存取存储器 ,可读可写,但断电后信息一般会丢失。 3. 在半导体存储器中ROM指的是 只读存储器 ,正常工作时只能从中 读取 信息。 4. 存储结构为8K×8位的EPROM芯片2764,共有 13 个地址引脚,用其组成64KB的ROM存储区共需 8 片芯片。 5. 对一个存储器芯片进行片选译码时,有一个高位系统地址信号没有参加译码,则该芯片 的每个存储单元占有 2 个存储器地址。假设地址总线A19~A15输出01011时译码电路产生一个有效的片选信号,这个片选信号共有 32K 容量。 6. 半导体 EPROM 芯片顶部开有一个圆形石英窗口。 通常U盘、MP3播放器、数码相机、多媒体手机等设备采用半导体 Flash ROM 芯片构成存储器。 7. SIMM是一种 单列存储器模块 内存条,而 DIMM是一种 双列直插式存储模块 内存条。 8. 每个存储单元被赋予一个唯一的编号,称为 地址 ,一个存储单元可以存储 1、4、8、16、32 位二进制信息。 9. 存储器扩展有两种方法,分别是 字 扩展和 位 扩展。 10. 用2k×8位的存储芯片,组成16k×8位的存储器,需用 8 片,组成24k×1位的存储器,需用 12 片。 11. 8086的存储器分为 偶 存储体和 奇 存储体。 12. 衡量存储器的技术指标主要有 容量 , 速度 和 成本 。 13. 衡量存储器的技术指标主要有 存储容量 , 存储速度 和 成本价格 。 14. 以8086为CPU的微型计算机内存RAM区为00000H~3FFFFH,若采用8K*8的6264构成,需要__4___片芯片,若采用256K*1的21256构成,需要 1 _片芯片。 15. 计算机需要主存储器存放当前运行的 程序 和 数据 。 7.5.简答题 1. 存储器的存取时间和存取周期有什么区别? 答:存取时间是指从读/写命令发出,导数据传输操作完成所经历的时间;存取周期表示两次存储器访问所允许的最小时间间隔。存取周期大于等于存取时间。 2. 地址重复是怎么回事? 答:译码电路中只有部分地址线参与译码会造成地址重复,也就是一个存储单元占有多个存储器地址。 3. 简述存储系统的层次结构及各层存储部件特点。 答:为解决容量、速度和价格的矛盾,存储系统采用金字塔型层次结构,单位价格和速度自上而下逐层减少,容量自上而下逐层增加。 46

存储系统的各层存储部件自上而下依次是:CPU寄存器.高速缓存.主存存储器(RAM/ROM),辅助存储器如磁盘.光盘等。CPU寄存器.高速缓存器集成在CPU芯片上,对用户来说,是透明的,它们用于暂存主存和处理器交互的数据,以减少频繁读取主存而影响处理器速度;主存储器则可和处理器直接交换数据,而辅助存储器必须经过主存存储器,才可与处理器进行数据交换。 4. DRAM为什么要刷新? 答:DRAM以单个MOS管为基本存储单元,以极间电容充放电表示两种逻辑状态。由于极间电容的容量很小,充电电荷自然泄漏会很快导致信息丢失,所以要不断对它进行刷新操作.即读取原内容.放大再写入。 5. 存储系统如何进行刷新? 答:存储系统的刷新控制电路提供刷新行地址,将存储DRAM芯片中的某一行选中刷新。实际上,刷新控制电路是将刷新行地址同时送达存储系统中所有DRAM芯片,所有DRAM芯片都在同时进行一行的刷新操作。刷新控制电路设置每次行地址增量,并在一定时间间隔内启动一次刷新操作,就能够保证所有DRAM芯片的所有存储单元得到及时刷新。 6. 请给出下图中138译码器的所有译码输出引脚对应的地址范围。 答:由于20根地址线全部参与译码,因此输出引脚地址范围如表所示: /Y /Y0 /Y1 /Y2 /Y3 /Y4 /Y5 /Y6 /Y7 A19A18A17 A16A15A14 A13A12 A11A10A9A8 A7A6A5A4 A3A2A1A0 地址范围 111 000 00 0000 0000 0000~11 1111 1111 1111 E0000H~E3FFFH 111 111 111 111 111 111 111 001 010 011 100 101 110 111 00 0000 0000 0000~11 1111 1111 1111 00 0000 0000 0000~11 1111 1111 1111 00 0000 0000 0000~11 1111 1111 1111 00 0000 0000 0000~11 1111 1111 1111 00 0000 0000 0000~11 1111 1111 1111 00 0000 0000 0000~11 1111 1111 1111 00 0000 0000 0000~11 1111 1111 1111 E4000H~E7FFFH E8000H~EBFFFH EC000H~EFFFFH F0000H~F3FFFH F4000H~F7FFFH F8000H~FBFFFH FC000H~FFFFFH 7. 写出下图中138译码器指定引脚译码输出的地址范围。 47

答:由于A18未使用,属于部分译码,因此有两个编码对应同一存储单元。假设A18=1,其输出地址范围如表所示: /Y /Y0 /Y1 /Y2 /Y3 /Y4 /Y5 /Y6 /Y7 A19A18A17A16 A15A14A13 A12 A11A10A9A8 A7A6A5A4 A3A2A1A0 1100 1100 1100 1100 1100 1100 1100 1100 000 001 010 011 100 101 110 111 地址范围 0 0000 0000 0000~1 1111 1111 1111 C0000H~C1FFFH 0 0000 0000 0000~1 1111 1111 1111 C2000H~C3FFFH 0 0000 0000 0000~1 1111 1111 1111 C4000H~C5FFFH 0 0000 0000 0000~1 1111 1111 1111 C6000H~C7FFFH 0 0000 0000 0000~1 1111 1111 1111 C8000H~C9FFFH 0 0000 0000 0000~1 1111 1111 1111 CA000H~CBFFFH 0 0000 0000 0000~1 1111 1111 1111 CC000H~CDFFFH 0 0000 0000 0000~1 1111 1111 1111 CE000H~CFFFFH 同理 ,当A18=0时可得下表: /Y /Y0 /Y4 /Y6 /Y7 8. 利用全地址译码将6264芯片接在IA-32的系统总线上,其所占地址范围为0BE000H~0BFFFFH,画出连接电路图。 D0~D7 A0~A11 A19 A17 A18 ≥A19A18A17A16 A15A14A13 1000 1000 1000 1000 000 100 110 111 A12 A11A10A9A8 A7A6A5A4 A3A2A1A0 地址范围 0 0000 0000 0000~1 1111 1111 1111 80000H~81FFFH 0 0000 0000 0000~1 1111 1111 1111 88000H~89FFFH 0 0000 0000 0000~1 1111 1111 1111 8C000H~8DFFFH 0 0000 0000 0000~1 1111 1111 1111 8E000H~8FFFFH & A16 A15 A 14 ≥ A13 A12 48

本文来源:https://www.bwwdw.com/article/tmrp.html

Top