2011汇编复习 大题部分

更新时间:2024-05-01 09:13:01 阅读量: 综合文库 文档下载

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

简答题

第22页的第1、2、3、4、5、9题

1.什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要?

答:计算机系统是能按照人的要求接受和存储信息,自动进行数据处理和计算,并输出结果信息的 机器系统。计算机系统由两大部分组成:硬件(子)系统和软件(子)系统,其中硬件子系统是系统 赖以工作的实体,它是有关的各种物理部件的有机的结合。软件子系统由各种程序以及程序所处理的 数据组成,这些程序的主要作用是协调各个硬件部件,使整个计算机系统能够按照指定的要求进行工 作。

硬件子系统包括中央处理器、主存存储器、输人输出控制系统和各种外围设备。 软件子系统包括 系统软件 、支援软件 、应用软件 三个部分。 硬件是基础,软件是灵魂

2.如何理解计算机系统的层次结构?

答:计算机系统存在着层次结构,从功能上看,现代计算机系统可分为五个层次级别,每一层都能进行程序设计,如图所示。 1. 微程序设计级

这一级是由硬件直接实现的,是计算机系统最底层的硬件系统。由机器硬件直接执行微指令。

只有采用微程序设计的计算机系统,才有这一级。如果某一个应用程序直接用微指令来编写,那么可在这一级上运行应用程序。 2. 一般机器级

也称为机器语言级,它由微程序解释机器指令系统。这一级也是硬件级,是软件系统和硬件系统之间的纽带。硬件系统的操作由此级控制,软件系统的各种程序,必须转换成此级的形式才能执行。

3. 操作系统级

由操作系统程序实现。这些操作系统由机器指令和广义指令组成,广义指令是操作系统定义和解释的软件指令,所以这一级也称为混合级。计算机系统中硬件和软件资源由此级管理和统一调度,它支撑着其它系统软件和应用软件,使计算机能够自动运行,发挥高效率的特性。 4. 汇编语言级

给程序人员提供一种符号形式语言,以减少程序编写的复杂性。这一级由汇编程序支持和执行。

如果应用程序采用汇编语言编写,则机器必须要有这一级的功能;如果应用程序不采用汇编语言编写,则这一级可以不要。 5. 高级语言级

面向用户,为方便用户编写应用程序而设臵的。这一级由各种高级语言编译程序支持和执行。

计算机系统各层次之间的关系十分紧密,上层是下层的扩展,下层是上层的基础。除第一级外,其它各级都得到它下面级的支持,同时也受到运行在下面各级上的程序的支持。第一级到第三级编写程序采用的语言,基本是二进制数字化语言,机器执行和解释容易。第四、五两级编写程序所采用的语言是符号语言,用英文字母和符号来表示程序,因而便于大多数不了解硬件的人们使用计算机。

3.说明高级语言、汇编语言和机器语言的差别和联系。 答:同上

4.计算机的层次结构如何划分?计算机组织与结构有什么不同含义? 答:计算机的层次结构如何划分同2题。

计算机体系结构,程序设计者所看到的计算机系统的属性,是计算机的外特性,概念性结构和功能特性,研究计算机系统的硬、软件的功能划分和接口关系。

计算机组成,计算机各功能部件的内部构造和相互之间的联系(部件配臵、相互连接和作用),强调各功能部件的性能参数相匹配;实现机器指令级的各种功能和特性,是计算机系统结构的逻辑实现。

5.冯〃诺依曼计算机的主要特点是什么?计算机有哪几部分组成? 特点包括: 1) 2) 3) 4) 5) 6) 7) 8)

使用单的处理部件来完成计算、存储以及通信的工作 存储单元是定长的线性组织 存储空间的单元式直接寻址的

使用低级机器语言,指令通过操作码来完成简单的操作 对计算进行集中的顺序控制

计算机硬件系统由运算器、存储器、控制器、输入设备、输出设备五大部件组成,并规定了他们的基本功能 以二进制形式表示数据和指令

在执行程序和处理数据是必须将程序和数据从外存储器装入主存储器中,然后才能使计算机在工作时能够自动从存储器中取出指令并加以执行

计算机必须具备五大基本组成部件,包括: 输人数据和程序的输入设备,记忆程序和数据的存储器,完成数据加工处理的运算器,控制程序执行的控制器,输出处理结果的输出设备 9.简述计算机的解题过程。 答:略。

参考:取指阶段中,计算机根据程序计数器PC存放的当前欲执行指令的地址,通过存储器地址寄存器MAR,访问主存,并且自动加1.分析阶段,指令寄存器IR通过访问存储器数据寄存器MDR

取出指令内容,IR中的操作码(OP(IR))送至控制单元CU分析指令,地址码(Ad(IR))作为操作数的地址送至MAR。执行阶段,CU分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象,完成某种操作。 第118~119页的第1、2、3、11、13、19、27题

1.一个典型的CPU通常包括哪几个主要部分?各部分的作用是什么?

答:一个典型的CPU通常包括:寄存器组、算术逻辑单元、控制器及内部总线。 各部分作用如下:

寄存器组:用于存放指令、指令地址、操作数及运算结果,它是CPU内部特别快速的存储单元。 算术逻辑单元:用于执行指令中所需的算术、逻辑和移位操作。

控制器:产生一系列控制信号,以控制计算机中各部件从存储器中取出将要执行的指令、进行译码、然后执行该指令的操作。 内部总线:在CPU内部,用于连接寄存器组、ALU和CU,为数据和控制信号的传输提供通路。 2.CPU的功能具体包括哪几个方面?请详细说明。

答:CPU的功能具体包括:指令控制功能、操作控制功能、时间控制功能、数据加工 功能和处理中断功能等。 各功能详细说明如下:

指令控制:CPU必须具有控制程序的执行顺序的功能。按照“存储程序控制”的概念, 程序被装入主存后,计算机应能按其预先规定的顺序有序地执行,这样才能完成程序指定的 功能。

操作控制:CPU必须具有产生完成每条指令所需的控制命令的功能。一条指令的执行,需要计算机中的若干个部件协同工作,CPU必须产生相应的控制命令传送给这些部件,并能检测这些部件的状态,使他们有机的配合起来,共同完成指令的功能。

时间控制:CPU必须具有对各种操作实施时间上控制的能力。由于计算机高速地进行工作,每一个动作的时间是非常严格的,不能有任何差错,因此对各种操作信号的产生时间、稳定时间、撤消时间及相互之间的关系都必须有严格的规定,才能保证计算机的正常工作。

数据加工:CPU必须具有对数据进行算术运算和逻辑运算的功能。数据加工处理是完成程序功能的基础,它是CPU最基本的任务。

处理中断:CPU必须具有对异常情况和外来请求处理的功能。当机器出现某些异常情况,诸如算术运算的溢出和数据传送的奇偶错等;或者某些外来请求,诸如设备完成、程序员从键盘上送入命令等,那么CPU应能在执行完当前指令后,响应这些请求。

3.计算机运行程序遵循什么样的一个循环过程?PC寄存器和IR寄存器在这个过程中 起的作用是什么?

答:计算机运行程序的过程遵循“取指—译码—执行”这样一个基本的循环过程。PC寄存器在这个过程中用来保存下一条要取出指令的地址,当取出一条指令后,系统会修改PC寄存器的内容,使其指向下一条指令。当执行转移指令时,系统也会将要转移的地址送入PC,使系统始终按照PC寄存器内容所指的地址取指令。IR寄存器在这个过程中用来保存取指阶段取出的指令,并为指令译码提供相关的信息,取出的指令直到执行完一直呆在IR寄存器中。 11.三级时序系统中的三级是指哪三级?每一级的作用是什么?

答:三级时序系统中的三级是指工作周期(又称为机器周期或CPU周期)、节拍和脉冲这三级。

通常把指令周期分为几个工作阶段,每个工作阶段也称为一个工作周期。每个工作周期完成一个基本操作,例如,取指周期完成取指操作;取源操作数周期完成取源操作数操作;执行周期完成具体的运算操作等。

把一个工作周期等分成若干个时间区间,每一时间区间称为一个节拍。一个节拍对应一个电位信号,控制一个或几个微操作的执行。 在一个节拍内,有时需要设臵一个或几个工作脉冲,用于寄存器的复位和接收数据等。 13.指令和数据都存放在主存中,计算机在执行程序时是怎样区分哪个地址单元存的是 指令,哪个地址单元存的是数据?

答:首先从空间上,将指令和数据在主存中分开存放;

另一方面,在时间上将一条指令的执行分为多个工作周期,取指令是在取指周期按程序计数器PC的内容所指定的地址访存来取出的,当取出一条指令后,PC的值自动增量而指向下一条指令,使PC中始终存的是下一条指令的地址;取数据是在取操作数周期按指令规定的寻址方式计算出数据存放的有效地址,然后再用这个有效地址访存取出数据的。这样计算机就能在执行程序时区分主存中哪个单元存的是指令,哪个单元存的是数据。

19.什么是组合逻辑控制?什么是微程序控制?它们的特点是什么?

答:组合逻辑控制又称为硬连线控制,它将控制部件看作产生固定时序控制信号的逻辑电路,而此逻辑电路以使用最少的元件和取得最高操作速度为设计目标。

微程序控制是将机器指令的操作分解为若干个更基本的微操作序列,并将有关的控制信号(微命令)以微码形式编成微指令输入到控制存储器中。这样,每条机器指令将与一段微程序对应,取出微指令就产生微命令,实现机器指令要求的信息传送与加工。微程序控制又称为存储逻辑控制。 组合逻辑控制速度快,但设计不规整,不可调整,难以形式化。 微程序控制设计规整、可调整、可形式化,但速度慢。

27.什么是RISC机?什么是CISC机?它们各自的特点是什么? 答:RISC机指精简指令系统计算机;CISC机指复杂指令系统计算机。 RISC机的特点如下:

① 一个时钟周期完成一条指令。

② 固定的指令长度,通常为一个字。 ③ 仅LOAD和STORE指令访问内存。

④ 采用简单的寻址方式,通常为2~3种简单的寻址方式。 ⑤ 指令数量少,且简单。 ⑥ CPU中通用寄存器数量相当多。

⑦ 控制器设计以组合逻辑设计为主,不用或少用微指令控制。

⑧ 一般用高级语言编程,特别重视编译优化工作,并采用指令流水线调度。 CISC机的特点如下:

① 指令系统复杂庞大,指令数目一般多达200~300条。 ② 寻址方式多。 ③ 指令格式多。 ④ 指令字长不固定。 ⑤ 可访存指令不受限制。 ⑥ 各种指令使用频率相差很大。 ⑦ 各种指令执行时间相差很大。 ⑧ 大多数采用微程序控制器。 第162页的第1、2、3、4题 1. 什么是“程序可见”的寄存器?

程序可见寄存器是指在用户程序中用到的寄存器,它们由指令来指定。 2. 80x86微处理器的基本结构寄存器组包括那些寄存器?各有何用途? 基本结构寄存器组按用途分为通用寄存器、专用寄存器和段寄存器3类。 通用寄存器存放操作数或用作地址指针;

专用寄存器有EIP和EFLAGS,分别存放将要执行的下一条指令的偏移地址和条件码标志、控制标志和系统标志; 段寄存器存放段基址或段选择子。

3.80x86微处理器标志寄存器中各标志位有什么意义? 常用的7位:

CF进位标志: 在进行算术运算时,如最高位(对字操作是第15位,对字节操作是第7位)产生进位或借位时,则CF臵1;否则臵0。在移位类指令中,CF用来存放移出的代码(0或1)。 PF奇偶标志: 为机器中传送信息时可能产生的代码出错情况提供检验条件。 当操作结果的最低位字节中1的个数为偶数时臵1,否则臵0。 AF辅助进位标志: 在进行算术运算时,如低字节中低4位(第3位向第4位)产生进位或借位时,则AF臵1;否则AF臵0。 ZF零标志:如指令执行结果各位全为0时,则ZF臵1;否则ZF臵0。

SF符号标志:其值等于运算结果的最高位。 如果把指令执行结果看作带符号数,就是结果为负,SF臵1;结果为正,SF臵0。 OF溢出标志: 将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则OF臵1;否则OF臵0。

DF方向标志: 用于串处理指令中控制处理信息的方向。 当DF位为1时,每次操作后使变址寄存器SI和DI减小;当DF位为0时,则使SI和DI增大,使串处理从低地址向高地址方向处理。 4.画出示意图,简述实模式下存储器寻址的过程。

第229~232页的第1、4、8、12、13、18、19题 1. 指令语句、伪指令语句和宏指令语句有何区别?

指令语句就是汇编指令,它们能汇编成机器代码,由CPU执行完成一定的操作功能。 伪指令指句不由CPU执行,只为汇编程序在汇编源程序时提供有关信息。

宏指令语句可看成是由若干条指令语句形成的语句,一条宏指令语句的功能相当于若干条指令语句的功能。 4. 说明宏是如何定义、调用和展开的。

宏定义包含3个部分:宏名、宏伪指令(MACRO与ENDM)和宏体。在进行了宏定义后,就可在源程序的任何位臵上调用宏指令语句。宏展开是由宏汇编程序完成,把宏定义中宏体的程序段目标代码插入宏指令语句所在位臵处;如果是带参数的宏指令语句则还要用实参替换掉宏体的对应部分。

8. 是否多分支结构程序都可通过双分支结构来实现? 试举例说明在什么条件下用地址表法或转移表法实现多分支转移能有较高的运行效率。 答: 是。如果问题中的多个分支可以用连续的编号进行划分(指编号不需额外计算的情形), 用地址表法或转移表法实现多分支转移能有较高的运行效率。参考例题5-28。 .CODE START: MOV AX,@DATA MOV DS,AX MOV AX,2 INT 10H CH1: CLEAR DISP 0CH,1AH,MESG1 DISP 17,1FH,ENDMES MOV AH,7 INT 21H JMP AGAIN AGAIN: CLEAR DISP 05,00,L1 DISP 0BH,00,L7 CH2: CLEAR DISP 0CH,1AH,MESG2 DISP 17,1FH,ENDMES MOV AH,7 INT 21H JMP AGAIN MOV AH,1 INT 21H AND AL,3 XOR AH,AH MOV BX,AX SHL BX,1 JMP J_TAB[BX] CH3: CLEAR MOV AH,4CH INT 21H END START CH0: JMP AGAIN 12. 循环程序由几部分构成?各部分的功能是什么?

初始化部分:设臵循环的初始值,如设臵地址指针、循环计数器、累加器和标志位的初 值等。

工作部分:通常也叫作循环体。 它是循环程序核心部分,动态地执行功能相同的操作。

修改部分:与工作部分协调配合,完成对地址指针及控制量的修改,为下次循环或退出做好准备。 通常每执行循环体一次,都要作相应的修改。 控制部分:判断并控制结束还是继续循环。

结束处理部分:对循环结果的操作,比如对运算结果的存储与传输等。 13. 常用的循环程序的控制方法有哪几种?分别适用于什么场合?

控制循环结束与否主要有两类方法:用计数器控制循环和用条件控制循环。

如果循环次数已知,就可以利用循环次数来控制循环结束与否。当实际的循环次数未知或不确定时,用某些条件(即根据某些标志位)来控制循环结束与否。 18. 调用程序与子程序间传递参数有几种常用方式?各有何特点?

参数传递方式主要有三种:通过寄存器传递、通过堆栈传递和通过内存单元传递。用寄存器传递参数方便、执行速度快,但由于寄存器个数有限,只适用于参数较少的情况。使用堆栈或内存单元传递参数时,由于需要访存,执行速度比不上寄存器传递参数的方式,但便于处理多个参数的情形。 19. 试比较子程序与宏指令。

子程序与宏指令的共同点:都可简化程序设计,增强程序的可读性。

子程序与宏指令的不同点:使用子程序编程可减小目标代码的体积,从而节省内存存储 空间(存储程序的空间,不包括运行运行子程序所占用的堆栈空间),而且子程序的调用是由 CPU在运行程序时完成;宏指令不能减小目标代码的体积和节省内存存储空间,宏指令是 在汇编时完成展开的。

第308~310页的第2、4、5、6、8、9、10、20题; 2. 说明存储器的存取时间与存取周期之间的联系与区别。

解:存取时间是指存储器从接收到CPU发来的读写命令和单元地址开始,到读出或写入数据所需的时间。 存取周期是指连续两次读写存储器所需的最小时间间隔。

两者都是反映存储器存取速度的指标,显然存取周期大于存取时间。在存储器进行读写操作时,由于存储元件本身的性能,做完一次存或取后,不能马上进行另外的存或取,需要一段稳定和恢复时间。存取周期就是存取时间加上存储单元的恢复稳定时间。

4. 指出下列存储器哪些是易失性的?哪些是非易失性的?哪些是读出破坏性?哪些不是? DRAM,SRAM,ROM,Cache,磁盘,光盘

解:易失性:DRAM、SRAM和Cache;非易失性:ROM、磁盘和光盘 读出破坏性:DRAM,其余都不是读出破坏性。

5. ROM和RAM两者的差别是什么?

解:RAM是随机存取存储器,ROM是只读存储器。RAM是易失性的,一旦断电,则保存的信息全部消失,ROM为非易失性的,其信息可以长期保存,常用于存放一些固定的数据和程序,如计算机的自检程序、BIOS、BASIC解释程序等。

6. 简述“Cache-主存”和“主存-辅存”层次的区别。 解: 目 的 存储管理实现 访问速度的比值 (第一级比第二级) 大小 典型的块(页) CPU对第二级的访问方式 失效时CPU是否切换 几十个字节 可直接访问 不切换 几百到几千个字节 均通过第一级 切换到其它进程 “Cache-主存” 为了弥补主存速度的不足 全部由专用硬件实现 几比一 “主存-辅存” 为了弥补主存容量的不足 主要由软件实现 几百比一 8. 在存储层次中应解决哪四个问题? 解:(1) 映象规则

当把一个块调入高一层存储器时,可以放到哪些位臵上? (2) 查找算法

当所要访问的块在高一层存储器中时,如何找到该块? (3) 替换算法

当发生失效时,应替换哪一块? (4) 写策略

当进行写访问时,应进行哪些操作?

9. 地址映象方法有哪几种?它们各有什么优缺点? 解:(1) 全相联映象

实现查找的机制复杂,代价高,速度慢。Cache空间的利用率较高,块冲突概率较低,因而Cache的失效率也低。 (2) 直接映象

实现查找的机制简单,速度快。Cache空间的利用率较低,块冲突概率较高,因而Cache的失效率也高。 (3) 组相联映象

组相联是直接映象和全相联的一种折衷。

10. 存储系统采用层次结构的目的是什么?实现存储器层次结构的先决条件是什么?

解:存储器采用层次结构可以提高计算机系统的性能/价格比,即在速度方面接近最高一级的存储器,而在容量和价格方面接近最低一级的存储器。 实现存储器层次结构的先决条件是程序的局部性原理。 20. 在虚拟存储器中,物理空间和逻辑空间有何联系和区别?

解:物理空间是主存的实际空间,也称为实存空间;逻辑空间是程序员编程时可用的虚拟地址对应的地址空间,也称为虚存空间。通常情况下,逻辑空间远远大于物理空间。物理空间是运行程序时,计算机能提供的真正的存储空间,而逻辑空间用户编程时可以运用的虚拟空间,程序运行过程中,必须把逻辑地址映射到物理地址,才能真正访存(包括读取指令和读写数据)。 第342~344页的第1、2、3、6、7、8、10、13、15、16、19、22、32、33题; 1.计算机的I/O系统的功能是什么?它由哪几个部分组成?

答:计算机的I/O系统,主要用于解决主机与外部设备间的信息通讯,提供信息通路,使外围设备与主机能够协调一致地工作。

计算机的I/O系统由I/O硬件和I/O软件两大部分组成。其中I/O硬件包括:系统总线、I/O接口、I/O设备及设备控制器。I/O软件包括:用户的I/O程序、设备驱动程序、设备控制程序。 2.I/O硬件包括哪几个部分?各部分的作用是什么?

答:I/O硬件包括:系统总线、I/O接口、I/O设备及设备控制器。

系统总线的作用是为CPU、主存、I/O设备(通过I/O接口)各大部件之间的信息传输提供通路。

I/O接口通常是指主机与I/O设备之间设臵的一个硬件电路及其相应的控制软件。它用于在系统总线和外设之间传输信号,并起缓冲作用,以满足接口两边的时序要求。 I/O设备的作用是为主机与外部世界打交道提供一个工具。

设备控制器用来控制I/O设备的具体动作,不同的I/O设备需要完成的控制功能不同。 3.什么是用户I/O程序?什么是设备驱动程序?什么是设备控制程序?

答:用户I/O程序是指用户利用操作系统提供的调用界面编写的具体I/O设备的输入输出程序。例如用户编写的用打印机输出文本的程序。

设备驱动程序是一种可以使计算机和设备通信的特殊程序。可以说相当于操作系统与硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常 工作。

设备控制程序就是驱动程序中具体对设备进行控制的程序。设备控制程序通过接口控制逻辑电路,发出控制命令字。命令字代码各位表达了要求I/O设备执行操作的控制代码,由硬件逻辑解释执

行,发出控制外设的有关控制信号。

6.什么是I/O接口?I/O接口有哪些功能?接口有哪些类型?

答:I/O接口通常是指主机与I/O设备之间设臵的一个硬件电路。它用于在系统总线和外设之间传输信号,并起缓冲作用,以满足接口两边的时序要求。

I/O接口应具备的基本功能包括:识别设备地址,选择指定设备的功能;传送控制命令及返回状态信息的功能;数据传送和数据缓冲的功能;数据格式转换的功能;检错纠错功能、中断功能、DMA功能、时序控制功能等。 通常可对接口进行如下分类:

按通用性可以将I/O接口分为通用接口与专用接口。

按可编程性可以将I/O接口分为可编程接口和不可编程接口。 按数据传送方式可以将I/O接口分为并行I/O接口和串行I/O接口。 按数据传送的控制方式可以将I/O接口分为程序型接口和DMA型接口。 7.什么是I/O端口?I/O端口有哪些编址方式?各自的特点是什么?

答:I/O接口中可编址的寄存器称为I/O端口,如命令寄存器被称为命令端口,数据缓冲寄存器被称为数据端口,状态标记寄存器被称为状态端口。 I/O端口的编址方式有两种,一种是独立编址方式,也称为专用的I/O端口编址方式; 另一种是存储器映射编址方式,也称为统一编址方式。

独立编址方式的特点是I/O端口和存储器在两个独立的地址空间中进行编址, I/O端口的读、写操作由专用的控制信号(如:IOR和IOW)来实现,在指令系统中需要有专用的I/O指令(如:IN指令和OUT指令)实现对I/O端口的访问。

存储器映射编址方式的特点是I/O端口和存储器共用统一的地址空间,一旦地址空间分配给I/O端口后,存储器就不能再占有这一部分的地址空间。在这种方式下,I/O端口的读写操作同样由访存的控制信号(如:MEMR和MEMW)来实现,所有访问存储器的指令(包括数据传送指令、算术逻辑运算指令)都可以用于访问I/O端口。 8.程序查询方式、程序中断方式和DMA方式各自适用于什么范围?

答:程序查询方式适用于CPU速度不高,CPU工作效率问题不是很重要,需要调试或诊断I/O接口及设备的场合。 程序中断方式适用于随机出现的服务,并且一旦提出要求,应立即响应。 DMA方式适用于主存和高速外设间大批数据交换的场合。

10.简述中断处理的过程。指出其中哪些工作是由硬件实现的,哪些是由软件实现的。 答:不同的计算机对中断的处理各具特色,就其多数而论,中断处理过程如下: ①关中断,进入不可再次响应中断的状态,由硬件实现。

②保存断点,为了在中断处理结束后能正确返回到中断点。由硬件实现。

③将中断服务程序入口地址送PC,转向中断服务程序。可由硬件实现,也可由软件实现。

④保护现场、臵屏蔽字、开中断,即保护CPU中某些寄存器的内容、设臵中断处理次序、允许更高级的中断请求得到响应,实现中断嵌套。由软件实现。 ⑤设备服务,实际上有效的中断处理工作是在此程序段中实现的。由软件程序实现。

⑥退出中断。在退出时,又应进入不可中断状态,即关中断、恢复屏蔽字、恢复现场、开中断、中断返回。由软件实现。 13.说明中断向量地址和中断服务程序入口地址之间的关系。

答:中断向量地址是由一个编码器电路生成的,它的作用是用来查找中断服务程序的入口地址,从而使机器转入中断服务程序执行。

向量地址单元可以存放一条直接转入指定中断服务程序入口的无条件转移指令,这样只要将向量地址送PC就可以自动转入相应的中断服务程序;向量地址单元也可以存放相应中断源服务程序的入口地址,这叫做向量地址表,CPU可以通过将向量地址单元的内容送入PC的方法转入相应中断服务程序。 15.在什么条件和什么时间,CPU可以响应I/O的中断请求?

答:CPU响应中断的条件是中断允许触发器为“1”。CPU响应中断的时间总是在每条指令结束时。 16.什么叫中断隐指令?中断隐指令有哪些功能?

答:所谓中断隐指令是指在机器指令系统中没有的一条指令,它是CPU在中断周期内由硬件自动完成的一条指令。中断隐指令完成的功能包括:关中断、保护断点、中断向量地址送PC。 19.什么是多重中断?实现多重中断的必要条件是什么?

答:当CPU正在执行一个中断源的中断服务程序时,又被另一个中断请求中断,这时CPU不得不暂停正在执行的中断服务程序,转至另一个中断服务程序去执行,这就叫多重中断,也称为中断嵌套。

实现多重中断的必要条件是在中断服务程序中,开中断放在设备服务之前,保护现场及臵屏蔽字之后。 22.DMA接口由哪些逻辑电路组成?各逻辑电路的作用是什么?

答:DMA接口中包括的逻辑电路有:主存地址寄存器、字计数器、中断机构、数据缓冲寄存器、DMA请求触发器、控制/状态逻辑和设备选择电路。

主存地址寄存器用以存放设备与主存交换信息时主存的地址,它有计数功能;字计数器存放交换的字数,有计数功能;中断机构向CPU发DMA传送结束信号请求中断;数据缓冲寄存器存放设备与主存间传送的信息;DMA请求触发器接收设备发来的“设备准备好”信号,向“控制/状态逻辑”发“DMA请求”信号;控制/状态逻辑接收DMA请求触发器发来的DMA请求信号,向CPU发总线使用权的请求信号HRQ,并接收CPU发回的总线使用权的响应信号HLDA,复位DMA请求触发器,对DMA请求信号和CPU响应信号进行协调和同步;用于控制传送参数的修改(内存地址及字计数)等;设备选择电路接收地址线传来的设备地址信号,用于选择与主存交换信息的设备。 32.什么叫总线?它有什么用途?试举例说明。

答:总线是多个系统功能部件之间进行数据传送的公共通路,实际上这个通路不但包括许多根传输线,而且包括相应的信息传输协议。

借助于总线连接,计算机在各系统功能部件之间实现地址、数据和控制信息的交换。另外,计算机中采用总线结构便于故障诊断与维护,便于模块化结构设计和简化系统设计,便于系统扩展和升

级,便于生产各种兼容的软、硬件。

例如,系统总线是指CPU、主存、I/O(通过I/O接口)各大部件之间的信息传输线。按传输内容的不同,又分为数据总线、地址总线和控制总线。 33.总线具有哪些特性?

答:总线的特性包括:物理特性、功能特性、电气特性和时间特性。 物理特性

总线的物理特性指总线的物理连接方式,包括总线的根数,总线的插头、插座的大小和形状,引脚线的排列方式 功能特性指总线中每根线的功能:地址线、数据线、控制线和电源线 电气特性是指总线的每一根线上传输信号的方向有效电平范围 时间特性定义了总线上每根线在什么时间有效 第364页的第1、2、3、4、7题;

1.按功能分类,可以将外部设备分为哪几类?

答:按功能分类,可以将外部设备分为输入设备、输出设备、外存、终端设备和其他外部设备。 2.输入和输出设备通常通过什么与主机相连?

答:输入和输出设备通常通过输入输出接口与主机相连。 3.解释下列名词:调用界面、设备驱动程序、设备控制程序。

答:调用界面一般由操作系统提供。操作系统屏蔽了各类外设的控制细节,提供了统一且方便的操作界面,便于用户编写I/O程序。例如,早期的DOS系统设臵了一组系统功能调用。目前使用的Windows系统则提供了一组API(Application Programming Interface,即应用程序接口——Windows系统提供给用户进行系统编程和外设控制的强大的函数库)。 设备驱动程序是管理某个外围设备的一段代码,它负责传送数据、控制特定类型的物理设备的操作,包括开始和完成IO操作,处理中断和执行设备要求的任何错误处理。 设备控制程序就是驱动程序中的具体的对设备进行控制的程序。设备控制程序通过接口控制逻辑电路,发出控制命令字。 4.键盘上的按键起一个开关的作用,所以又称为键开关。键开关分为哪几类? 答:键开关分为接触式和非接触式两大类。 7.按显示器件的不同将显示器分为哪几类?

答:按显示器件的不同,将常用的显示器分为阴极射线管(CRT)显示器、液晶显示器(LCD)和等离子显示器(PD)。 第396页的第1、2题。 综合题

第84页的26题

26.设有寄存器、74181 和74182 器件,请设计具有并行运算功能的16 位(含一位符号位)补码二进 制加减法运算器。画出运算器的逻辑框图。 解:

(1)用集成电路构成ALU 的原理

74181 是一种具有并行进位的多功能ALU 芯片,每4 位构成一组,组内是并行进位的。如教材图2-13 是用正逻辑和负逻辑表示的4 位74181 芯片框图,表2-19 是74181 芯片的各种运算功能表。

74181 芯片本身是4 位的,也就是说它可以进行4 位二进制数的各种运算。74181 芯片的结构很适合连成不同位数的ALU,由4 片74181 ALU 可以构成一个16 位的ALU,由16 片74181 ALU 可以构成一个64 位的ALU。

(2)利用74181 芯片构成16 位ALU 的原理

74181 芯片的结构很适合连成不同位数的ALU,每片74181 芯片作为一个4 位的小组。由 于芯片给出了Cn+4、Pi 和Gi,所以用该芯片既可以构成组间串行进位的ALU,也可以构成组间 并行进位的ALU。

① 片内进位是快速的,片间进位是逐片传递的,如图所示。

图2-3 片内快速进位、片间逐片传递的结构框图 ② 片间、片内均是快速的。

. 超前进位的74182 芯片的结构框图如图2-4 所示。

图2-4 超前进位的结构框图

说明:G0~G3、P0~P3 为单片74181 的G、P;Cn 为组进位输入,P、G 为组进位输出, 用于将4 组16 位快速的ALU 扩展成为64 位快速的ALU;Cn+z、Cn+y、Cn+x 分别是单片74181 间的进位。

. 片间、片内均由快速进位的16 位ALU 构成,如图2-5所示。

说明:片间采用并行快速进位时,只需要增加一片74182 芯片。74182 芯片是与74181 芯片配套的产品,是一个产生进位信号的部件。由于74181 提供了小组的进位传递函数Pi 和进位生成函数Gi,74182 可以利用它们来作为输入函数,以并行的方式给出每个小组的最高位进位信号。74182 在这里的用途是作为第2 级并行进位系统,74182 并行给出的3 个进位信号分别是C4、C8、C12,这3 个进位信号分别作为高位74181 的进位输入信号,这就可以构成74181 芯片间快速进位的16 位ALU。

图2-5 片间、片内均是快速进位的结构框图 第118~119页的第5、6、18、23、24、28题

5.按照图3.2所示的单总线数据通路,写出SUB R2,R3指令取指阶段和执行阶段的微操作序列。

答:SUB R2,R3。这是一条减法指令,属于寄存器寻址方式,操作数和结果都存在寄存器中。其功能是用寄存器R2的内容减去R3的内容,结果存入寄存器R2中。其指令流程如表3.25: 表3.25 SUB R2,R3 指令单总线流程分析表

6.按照图3.3所示的双总线数据通路,写出SUB R2,R3指令取指阶段和执行阶段的微操作序列。

答:SUB R2,R3。这是一条减法指令,属于寄存器寻址方式,操作数和结果都存在寄存器中。其功能是用寄存器R2的内容减去R3的内容,结果存入寄存器R2中。其指令流程如表3.26: 表3.26 SUB R2,R3 指令双总线流程分析表

18.根据“表3.17”写出控制信号MDOUT的逻辑表达式及逻辑图。

答:首先从教材“表3.17”中找出控制信号MDOUT的出现位臵。控制信号MDOUT在表中共有两次出现,一次是在取指周期FT的T3节拍,取每一条指令都出现。另一次是在执行周期ET的T0节拍,执行LOAD指令时出现。然后将这两次出现写成与或逻辑表达式如下: MDOUT=FT〃T3+ET〃T0〃LOAD

这是一个比较简单的逻辑表达式,最后根据这个表达式画出逻辑图如下:

23.结合“图3.19”,说明微程序对一条机器指令的解释执行过程。

答:完成一条机器指令要经过取指和执行两个阶段。

首先将取指微程序的首地址送至μPC,读出该条微指令,并送至微指令寄存器。此时,微指令的控制信号字段发出各种控制信号(微命令),同时由微指令中的多路控制Mux和条件字段控制多路器选择增量器这一路,顺序取出下一条微指令,然后重复取微指令、执行微指令的操作,直到按PC指出的单元中的指令读至IR,并自动修改后继指令地址。这一过程为取指阶段。

接着,由取指微程序的最后一条微指令的多路控制Mux和条件字段控制多路器选择指令操作码映像地址这一路,形成该机器指令的微程序首地址并送至μPC,读出该条微指令,并送至微指令寄存器。此时,微指令的控制信号字段发出各种控制信号(微命令),同时由微指令中的多路控制Mux和条件字段控制多路器的选择,取出下一条微指令,然后重复取微指令、执行微指令的操作,直到该机器指令的全部微指令执行完毕,并指出取指微程序的首地址。这一过程为机器指令的执行阶段。

24.某机有5条微指令,每条微指令发出的控制信号如表3.24所示。采用直接控制方式设计微指令的控制字段,要求其位数最少,而且保持微指令本身的并行性。 表3.24 指令I1~I5的控制信号

解:由表3.24可知,控制信号c、g、i仅在微指令I1中同时出现,可合并用1位控制字段表示。控制信号b、h仅在微指令I2中同时出现,也可合并用1位控制字段表示。这样10个控制信号可压缩到7个,其格式如下:

28.什么是指令流水?画出指令的四级流水结构图。

答:计算机中的指令流水线类似于工厂中的生产流水线。它将一条指令的执行过程分成大致相等的几个子过程,每一个子过程由一个部件来完成,让指令在各个子过程连成的线路上连续流动,这样所有部件并行工作,同时执行多条指令,就会大大提高机器的吞吐量。

假如将一条指令的执行过程分为:取指令(IF)、指令译码(ID)、指令执行(IE)和指令结果存储(IS)四个子过程。其四级流水结构图如下所示:

第309~310页的第14、16、17、23题;第342~343页的17、21、26题;第364页的第11题。 阅读程序及编写程序 第188页例5.23

从键盘输入的两个双位数字“47”和“69”的ASCII码已存放在数据缓冲区的放入存储单元VAL1和VAL2,求他们的和(ASCII码)并存入在数据缓冲区的存储单元RES中,并在显示器显示结果。 分析:ASCII码的加法与非压缩BCD码的加法类似,先用二进制加法,再用AAA指令校正,得到的结果是BCD码,再利用ASCII码比相应的非压缩BCD码大30H的事实,将结果转换为ASCII码。由于两个双位数相加有可能向百位的进位,RES应取三个字节。显示结果是通过DOS提供的09H号功能调用——显示字符串(必须以“$”字符结尾)实现。 DATA SEGMENT VAL1 BYTE '47' VAL2 BYTE '69' RES

BYTE 3 DUP (?)

ECHR BYTE '$' DATA ENDS

STACK SEGMENT STACK 'STACK'

BYTE 100 DUP (?)

STACK ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK

START: MOV AX, DATA

MOV DS, AX

MOV AX, WORD PTR VAL1 XCHG AH, AL

MOV BX, WORD PTR VAL2

ADD AL, BH AAA

OR AL, 30H

MOV RES+2, AL MOV AL, AH XOR AH, AH

ADD AL, BL

AAA

OR AX, 3030H MOV RES+1, AL MOV RES, AH MOV DX, OFFSET RES MOV AH, 9 INT 21H MOV AH, 4CH INT 21H

CODE ENDS END START 第189页例5.24

利用查表法把非压缩BCD码转换为七段码。 分析:七段码用于控制LED或数码管等显示数字。 .MODEL SMALL .STACK .DATA

TABLE7 BYTE 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH VALBCD BYTE 05H RES7 BYTE ? .CODE START: MOV

AX,

@DATA AX

64

MOV DS,

MOV BX, OFFSET TABLE7 MOV AL, VALBCD XLAT

MOV RES7, AL MOV AH, 4CH INT 21H END START

第193页例5.25

编写程序实现显示字符串PROMPT1,如果用户从键盘输入“Y”,显示MESSAGE,输入其他键则显示PROMPT2。

分析:这个可采用双分支结构来处理,因为有两种情况要分别处理,Y和非Y,所以属于IF—THEN—ELSE结构。键盘输入字符采用07H号DOS功能调用实现,输入字符的ASCII码送入AL中。由于要三次显示字符串,所以可对显示字符串的功能进行带参数的宏定义。 DISP MACRO STR

MOV DX, OFFSET STR MOV AH, 9 INT 21H ENDM

.MODEL SMALL .STACK 64 .DATA PROMPT1

BYTE 'There is a message for you from NEO.'

BYTE SPACE

BYTE 'To read it enter Y','$'

BYTE CR,LF

MESSAGE

BYTE 'HI! I will meet you in the Matrix in 3009.' BYTE '$'

BYTE CR,LF,'No more messages for you.','$' 0DH 0AH 20H

PROMPT2 CR LF

EQU EQU

SPACE EQU .CODE

START: MOV AX,@DATA

MOV DS,AX DISP PROMPT1 MOV AH, 7 INT 21H CMP AL, 'Y' JZ OVER DISP PROMPT2 JMP EXIT

OVER: DISP MESSAGE EXIT: MOV AH,4CH

INT 21H END START

第196页例5.27

编写一个程序,判别键盘上输入的字符:若是0~9字符,则显示;若为A~Z或a~z字符,均显示“C”;若是回车字符(其ASCII码味0DH),则结束程序,若为其他字符则不显示,继续等待新的字符输入。

分析:根据自负的ASCII码,需要处理多种情形:00H~29H(等待)30H~39H(显示数字)3A~40H(等待)41H~5AH(显示C)5BH~60H(等待)61H~7AH(显示C)7BH~7FH(等待),所以徐永多分支结构程序解决。 DISP MACRO STR

MOV DX, OFFSET STR MOV AH, 9 INT 21H ENDM

.MODEL SMALL .STACK 64 .DATA PROMPT1

BYTE 'There is a message for you from NEO.'

BYTE SPACE

BYTE 'To read it enter Y','$'

BYTE CR,LF

MESSAGE

BYTE 'HI! I will meet you in the Matrix in 3009.' BYTE '$'

BYTE CR,LF,'No more messages for you.','$' 0DH 0AH 20H

PROMPT2 CR LF

EQU EQU

SPACE EQU .CODE

START: MOV AX,@DATA

MOV DS,AX DISP PROMPT1 MOV AH, 7 INT 21H CMP AL, 'Y' JZ OVER

DISP PROMPT2 JMP EXIT

OVER: DISP MESSAGE EXIT: MOV AH,4CH

INT 21H END START

第201页例5.30

编写程序实现振铃连续发声,直到敲击键盘任意键才停止。

分析:振铃发声可采用02号DOS功能调用显示07H字符(振铃)实现,要检测键盘是否发生按键操作,同时又能连续发生,可调用BIOS的INT16H中断,器调用参数与功能如下: MOV AH,01 INT 16H

返回参数:股国有按键操作ZF=0,否则ZF=1。 .MODEL SMALL .STACK .DATA BEL

EQU 7

BYTE 'TO STOP THE BELL'

MESSAGE .CODE

BYTE ' SOUND PRESS ANY KEY$'

START: MOV AX, @DATA

MOV DS, AX MOV AH, 9

LEA DX, MESSAGE INT 21H

AGAIN: MOV AH, 2

MOV DL, BEL INT 21H MOV AH, 1 INT 16H JZ AGAIN MOV AH, 4CH INT 21H END START

第202页例5.32

在字节数组中找出第一个0数据,找到显示“Y”,否则显示“N”。

分析:为找出第一个0数据,应把0与每一个数据比较,所以程序应采用循环结构。循环结束条件有二:遇到一个0元素,或者扫描了整个数组也没找到,所以使用LOOPNA指令。 .MODEL SMALL .DATA BUF CNT

BYTE 12, 23, 46, 0FEH BYTE 0F1H, 3DH, 0, 23 BYTE 56,73,0FCH, 0, 3 EQU $-BUF

.CODE

START: MOV AX, @DATA

MOV DS, AX MOV CX, CNT MOV DI, -1 NEXT: INC DI CMP BUF[DI], 0

LOOPNZ NEXT

JNZ NFIND

MOV DL, 'Y' MOV AH, 2 INT 21H JMP EXIT

NFIND: MOV DL, 'N'

MOV AH, 2 INT 21H

EXIT: MOV AH, 4CH

INT 21H END START

第209页5.37

在一片内存区中有一数据块,起始地址为BLOCK。要求把其中的负数和非负数分开,分别存放到MINUS_BUF和PLUS_BUF缓冲区中。

分析:取字符串、存字符串可以用相应的串操作指令实现,区分负数和非负数可通过测试符号位解决。难点在于,如果使用串操作指令就一定要用DI作为目的串的指针,但现有两个目的串,那么一个指针如何为两个目的串服务?其中一个解决办法是让DI做当前要访问的目的串的指针,BX作另一个当前不访问的目的串指针;如果访问对象改变,就交换两个指针的内容。 DATA SEGMENT

BLOCK DB 03H,46H,0F4H,0AFH,90H,87H,50H DB 99H,0FFH,40H,77H,88H,0B3H,9EH CNT EQU $-BLOCK

ORG 100H

PLUS_BUF DB CNT DUP(0FFH)

ORG 200H

MINUS_BUF DB CNT DUP(01H) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA

START: MOV AX,DATA

MOV DS,AX MOV ES,AX LEA SI, BLOCK LEA DI, PLUS_BUF

LEA BX, MINUS_BUF

MOV CX, CNT CLD

NEXT: LODSB

TEST AL,80H JNZ MINUS STOSB JMP AGAIN

MINUS: XCHG BX,DI

STOSB XCHG BX,DI

AGAIN: LOOP NEXT

MOV AH,4CH INT 21H

CODE ENDS

END START

第220页例5.42

讲16位二进制数转换为十六进制数送屏幕显示。

分析:可使用02H号DOS功能调用(显示字符)来显示十六进制数。而将4位二进制数转换为对应的一位十六进制数的ASCII码的方法一再例5.26中陈述:4位二进制数等于0000~1001时,该数加上30H;四位二进制数等于1010~1111时,该数则要加上37H。程序功能用子程序实现,其中的显示功能通过调用另一子程序实现。 .MOEL SMALL

.STACK 64 .CODE

START: MOV DX,0F120H CALL B2HEX MOV AH,4CH INT 21H

;子程序名:B2HEX

;入口参数:待转换二进制数送入DX ;出口参数:显示4位十六进制数字 B2HEX PROC NEAR PUSH AX PUSH CX MOV CH,4 MOV CL,4 LOP:ROL DX,CL MOV AL,DL AND AL,0FH CMP AL,0AH JB NEXT ADD AL,7 NEXT:ADD AL,30H CALL DISP DEC CH JNZ LOP POP CX POP AX RET B2HEX ENDP ;子程序名:DISP

;入口参数:输出字符的ASCII码送AL ;出口参数:在屏幕显示单个字符 DISP PROC NEAR PUSH DX MOV DL,AL MOV AH,2 INT 21H POP DX RET DISP ENDP END START

第229~232页的第6、9、14、20题。

6. 阅读下列程序,并回答问题(假设DS=00BFH): .MODEL SMALL .DATA ORG 1000H NUM BYTE 48H,8DH RES BYTE ? .STACK 100 .CODE

START: MOV AX, @DATA MOV DS,AX

MOV SP, 64H LEA BX, NUM MOV AL, [BX] SUB AL, [BX+1] PUSH AX PUSHF ADD AL,AL POPF POP AX MOV [BX+2],AL MOV AH,4CH INT 21H END START 问题:

(1) 分析程序运行后,存储器中数据段中数据存放情况,填入具体数据; (2) 分析最后标志位OF、SF、ZF、AF、PF和CF的状态(其它各位假定为0); (3) 分析堆栈进栈情况,进栈后,SP是多少? 堆栈中填入具体数据。 OF、SF、CF、AF、PF均为1,ZF=0;SP=62H

9. 阅读程序: .MODEL SMALL .DATA

AA DB 0A7H, 89H, 23H, 8EH BB DB 0B0H, 87H, 94H, 62H CC DB 5 DUP(?) COUNT EQU 0004H .CODE

START: MOV AX, @DATA MOV DS, AX MOV ES, AX CLD LEA DI, AA LEA SI, BB AND AX, AX

MOV BX, OFFSET CC+4 MOV CX, COUNT MUL1: MOV AL, [DI+3] ADC AL, [SI+3] MOV [BX], AL DEC DI DEC SI DEC BX DEC CX JNZ MUL1 MOV AL, 0 RCL AL, 1 MOV [BX], AL

MOV AH, 4CH INT 21H END START 回答下列问题:

(1) 该程序实现什么操作?

(2) 程序执行后,CC+3单元的内容是什么? (3) 程序执行后,BX所指单元的内容是什么?

(4) 程序中,指令AND AX, AX的作用是什么? 能用其它指令替代吗? (5) 程序中,指令MOV AL, 0能用XOR AL, AL替代吗? 为什么? (1) AA与BB两个4字节数求和 (2) 0B7H (3) 1

(4) 设臵CF=0。可用CLC替代。 (5) 不能。逻辑运算会将CF清零。 14. 阅读程序 DATA SEGMENT NUM WORD 8096H RES BYTE ? DATA ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, 16 MOV AX, NUM LOP1: AND AX, AX JZ DONE SHL AX, 1 JNC NEXT INC CH NEXT: DEC CL JNZ LOP1

DONE: MOV RES, CH MOV AH, 4CH INT 21H CODE ENDS END START 回答下列问题:

(1) 该程序的功能是什么?

(2) 程序运行结束时,RES单元的内容是什么? (3) 指令AND AX, AX程序中的作用是什么? (1) 统计NUM单元字数据中1的位数 (2) 5

(3) 判断AX是否为零,判断是否提前结束循环(统计AX中1的位数)。 20. 阅读程序,回答问题: (1) 该子程序功能是什么?

(2) 子程序的入口参数、出口参数分别是什么? SUB2 PROC NEAR/FAR PUSH CX PUSH AX MOV CX, 16

BIN1: ROL BX, 1 MOV AL, BL AND AL, 1 ADD AL, 30H

CALL SUBOUT ;调用显示子程,入口参数AL LOOP BIN1 POP AX POP CX RET SUB2 ENDP

(1) 将BX的各位在显示器上输出。

(2) 入口参数为BX,出口参数为显示器上的输出。 第230~232页的第7、11、15、16、17、21、22题。

7. 编程实现利用查表法求73的平方,假设从SQTAB为首地址的内存中放有0~100的平方 值,结果送入RES字单元中。 .MODEL SMALL .DATA

SQTAB WORD 0,1,4,9, …,10000 RES WORD ? .STACK 64H .CODE

START: MOV AX, @DATA MOV DS,AX

MOV BX, OFFSET SQTAB MOV SI, 146 MOV AX, [BX+SI] MOV RES, AX MOV AH,4CH INT 21H END START

11. 学生成绩存放在SCORE单元(60~100分),试用地址表法或转移表法实现:100分,屏幕显示“A+”,90~99分显示“A”,80~89分显示“A-”,70~79分显示“B+”,60~69分显示“B”。 .MODEL SMALL .DATA

SCORE BYTE 60 AP BYTE 'A+','$' A BYTE 'A','$' AM BYTE 'A-','$' BPL BYTE 'B+','$' B BYTE 'B','$'

J_TAB WORD L1,L2,L3,L4,L5 .CODE

START: MOV AX, @DATA MOV DS, AX XOR AH,AH MOV AL,SCORE SUB AL,60 MOV BL,10 DIV BL MOV BL,AL XOR BH,BH SHL BX,1

JMP J_TAB[BX] L1: MOV DX,OFFSET B MOV AH,9 INT 21H JMP NEXT

L2: MOV DX,OFFSET BPL MOV AH,9 INT 21H JMP NEXT

L3: MOV DX,OFFSET AM MOV AH,9 INT 21H JMP NEXT

L4: MOV DX,OFFSET A MOV AH,9 INT 21H JMP NEXT

L5: MOV DX,OFFSET AP MOV AH,9 INT 21H JMP NEXT

NEXT: MOV AH, 4CH INT 21H END START

15. 100个学生某科考试成绩(0~100分)存放在以RECORD为首的内存单元中,统计0~59分、60~69分、70~79分、80~89分、90~99分、100分的人数;并计算全班的平均成绩,保留整数位,结果四舍五入。 .MODEL SMALL .DATA

SCORE BYTE 0,45,50,60,…100 MEAN BYTE ? S100 BYTE 0 S90 BYTE 0 S80 BYTE 0 S70 BYTE 0 S60 BYTE 0 S59 BYTE 0 .STACK 100H .CODE

START: MOV AX, @DATA MOV DS,AX MOV CX, 100 LEA SI, SCORE XOR AX, AX XOR BH, BH LOP: MOV BL, [SI] CMP BL, 100 JB N90 INC S100 JMP NEXT N90: CMP BL, 90 JB N80

INC S90 JMP NEXT N80: CMP BL, 80 JB N70 INC S80 JMP NEXT N70: CMP BL, 70 JB N60 INC S70 JMP NEXT N60: CMP BL, 60 JB N59 INC S60 JMP NEXT N59: INC S59 NEXT: ADD AX,BX INC SI LOOP LOP MOV CX, 100 XOR DX, DX DIV CX SHL DX, 1 CMP DX, 100 JB NXT2 INC AX

NXT2: MOV MEAN, AL MOV AH, 4CH INT 21H END START

16. 假设6位由字母或数字构成的密码(ASCII码)存储在以PWRD为首地址的内存单元中。 编程实现:首先显示“Please enter the password:”, 然后等待键盘输入字符串,若与存储的密码相符,显示欢迎信息“Welcome !”;否则,再次提示输入,总共有三次输入机会,每次输入错误后,显示出错信息“Wrong password, ?? tries left.”, ??用具体数字替代。 三次都输入错误,显示“ACCESS DENIED!”并结束程序。 DISP MACRO STR MOV AH, 9

MOV DX, OFFSET STR INT 21H ENDM DATA SEGMENT PWRD BYTE '123A56' IN_BUF BYTE 7,? INWD BYTE 7 DUP(?) CR EQU 0DH LF EQU 0AH

ST1 BYTE 'Please enter the password:',CR,LF,'$' ST2 BYTE 'Welcome !',CR,LF,'$' ST3 BYTE 'Wrong password, ' CONT BYTE ?

BYTE ' tries left.',CR,LF,'$' ST4 BYTE 'ACCESS DENIED!',CR,LF,'$' DATA ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA, ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV BL,3 CLD DISP ST1

AGAIN: MOV AH,0AH MOV DX, OFFSET IN_BUF INT 21H

MOV SI, OFFSET PWRD MOV DI, OFFSET INWD MOV CX,6 REPE CMPSB JNZ NEXT DISP ST2 JMP EXIT NEXT: DEC BL JNZ NEXT2 DISP ST4 JMP EXIT NEXT2: OR BL,30H MOV CONT,BL DISP ST3 AND BL,0FH JMP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START

17. 字节数组DATA1中,存放有10个不等的符号数,编程实现求最大值、最小值,以及两者存放单元的偏移地址。 .MODEL SMALL .DATA

DATA1 BYTE -1,2,4,5,-77,8,9,10,-11,-10 MAX BYTE ? MAXADD WORD ? MIN BYTE ? MINADD WORD ? .CODE

START: MOV AX,@DATA MOV DS,AX LEA BX, DATA1 MOV CX,9 MOV SI,BX MOV DI,BX MOV AL,DATA1 MOV AH,DATA1 INC BX

LOP: MOV DL,[BX] CMP AL,DL JLE NEXT1

MOV AL,DL MOV SI,BX JMP NEXT2 NEXT1: CMP AH,DL JGE NEXT2 MOV AH,DL MOV DI,BX NEXT2: INC BX LOOP LOP MOV MAX, AH MOV MAXADD, DI MOV MIN, AL MOV MINADD, SI MOV AH,4CH INT 21H END START

21. 编写子程序实现两个多字节压缩BCD码相减。 ; 子程序名:MBINSUB

; 功能:将两个多字节压缩BCD码相减

; 入口参数:SI,DI分别指向被减数、减数的首地址,BX指向差的首地址, ; CX中存放多字节的长度 ; 出口参数:BX指向差的首地址 MBINSUB PROC NEAR/FAR PUSH AX PUSH BX CLC

LP: MOV AL,[SI] SBB AL,[DI] DAS

MOV [BX],AL INC SI INC DI INC BX LOOP LP POP BX POP AX RET

MBINSUB ENDP

22. 编写子程序实现把键盘输入任意组合的8位0、1字符转换为等值的二进制数,送数据段BIN1字节单元。 ; 子程序名:ASC8BIN

; 入口参数:DX指向输入缓冲区的首地址(使用0AH号DOS功能接受键盘输入字符串), ; 出口参数:BIN1 ASC8BIN PROC NEAR/FAR PUSH AX PUSH BX PUSH CX MOV BX, DX ADD BX, 2 MOV CX, 8 MOV AH,0AH INT 21H

XOR AH,AH LOP: MOV AL, [BX] AND AL,1 ADD AH,AL SHL AH,1 INC BX LOOP LOP MOV BIN1, AH POP CX POP BX POP AX RET

ASC8BIN ENDP 计算题

第82~84页的第1、3、4、6、8、18、22、27、28题;

1. 设机器数长为8 位(含1 位符号位在内),写出对应下列各真值的原码、补码和反码。 -13/64 , 29/128 , 100 ,-87 答:

数字 编码 原码 补码 反码 -13/64 29/128 100 -87

3. 己知[X] 补,求[X] 原和X . 答:

[X] 补 1.1100 1.1001 0.1110 1.0000 1,0101 1,1100 0,0111 1,0000

1.0011010 0.0011101 0,1100100 1,1010111 1.1100110 0.0011101 0,1100100 1,0101001 1.1100101 0.0011101 0,1100100 0,0101000 [X] 原 1.0100 1.0111 0.1110 1.0000 1,1011 1,0100 0,0111 1,0000 X -4/16 -7/16 14/16 -0 -11 -4 7 -16 4. 当十六进制数9B 和FF 分别表示为原码、补码、反码、移码和无符号数时,所对应的十进制数各为多少(设机器数采用一位符号位)。 答:

数字 编码 原码 补码 反码 移码 无符号数 9B 对应十进数 FF 1,001 1011 -27 1,111 1111 1,001 1011 原码1,1100101B=-101D 1,111 1111 1,001 1011 原码1,1100100B=-100D 1,111 1111 1,001 1011 原码0,0011011B=27D 1,111 1111 1,001 1011 155D 1,111 1111 对应十进数

-127D 原码1,0000001=-1D 原码1,0000000=-0D 原码0,1111111=127D 255D 6. 将下列十进制数表示成IEEE754 标准的32 位浮点规格化数。 (1) 27/64 (2) – 27/64 解:27/64=0.011011=1.1011*2

(1) 0 01111101 10110000000000000000000 (2) 1 01111101 10110000000000000000000

8.已知x 和y,用变形补码计算x-y,同时指出运算结果是否溢出。 (1)x=0.11011 y=-0.11111 (2)x=0.10111 y=0.11011 (3)x=0.11011 y=-0.10011 解:(1)x = 0.11011 y = -0.11111

[x]补= 0 0. 1 1 0 1 1 [-y]补= + 0 0. 1 1 1 1 1 0 1. 1 1 0 1 0 溢出

(2)x = 0.10111 y = 0.11011

[x]补= 0 0. 1 0 1 1 1 [-y]补= + 1 1. 0 0 1 0 1 1 1. 1 1 1 0 0

18. 已知两个无符号二进制数:X=1001,Y=1101 ,用原码一位乘法完成X × Y。 解:

X=1001,Y=1101 B:1001 被乘数 累加1 +B 移位1 累加2 +0 移位2 累加3 +B 移位3 累加4 +B 移位4

22.设阶码3 位,尾数6 位,按浮点运算方法,完成下列取值的[x+y],[x-y]运算。 (1)x = 2-011 × 0.100101 y = 2-010 ×(- 0.011110) (2)x = 2-101 ×(-0.010110) y = 2-100 × (0.010110)

解:设两数均以补码表示,阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为: 题(1) [x]浮=11, 101;0.100101 [y]浮=11,110;1.100010 (1)求阶差并对阶

ΔE=Ex-Ey=[Ex]补-[Ey]补=[Ex]补+[-Ey]补=11,101 + 00,010 =11,111 即ΔE 为-1,x 阶码小,应使Mx 右移1 位,Ex 加1

A: 0000 0000 1001 1001 0100 0000 0100 0010 1001 1011 0101 1001 1110 0111 C:1101 乘数 1101 C0=1 1110C0=0 0111C0=1 1011C0=1 0101(结果) -2

[x]浮=11,110;0.010010(1) (2)尾数求和 0.010010(1) + 1.100010 1.110100(1) (3)规格化

可见尾数运算结果的符号位与最高位相同,应执行左规格化处理,每左移尾数一次, 相应阶码减1,所以结果尾数为1.010010,阶码为11,100 (4)舍入处理对本题不需要。 (5)判溢出

阶码两符号位为11,不溢出,故最后结果为 [x]浮+[y]浮=11,100;1.010010 真值为2-100*(-0.101110) (2)尾数求差 0.010010(1) + 0.011110 0.110000(1)

[x]浮-[y]浮=11,100;0.110001 真值为2-100*0.110001

题(2) [x]浮=11,011;1.101010 [y]浮=11,100;0.010110 (1)求阶差并对阶

ΔE=Ex-Ey=[Ex]补-[Ey]补=[Ex]补+[-Ey]补=11,011 + 00,100 =11,111 即ΔE 为-1,x 阶码小,应使Mx 右移1 位,Ex 加1 [x]浮=11,100;1.110101(0) (2)尾数求和 1.110101(0) + 0.010110 0.001011(0) (3)规格化

可见尾数运算结果的符号位与最高位相同,应执行左规格化处理,每左移尾数一次, 相应阶码减1,所以结果尾数为0.101100,阶码为11,010 (4)舍入处理对本题不需要。 (5)判溢出

阶码两符号位为11,不溢出,故最后结果为 [x]浮+[y]浮=11,010;0.101100 真值为2-110*(0.101100)

第118页的第12题;

18.根据“表3.17”写出控制信号MDOUT的逻辑表达式及逻辑图。

答:首先从教材“表3.17”中找出控制信号MDOUT的出现位臵。控制信号MDOUT在表中共有两次出现,一次是在取指周期FT的T3节拍,取每一条指令都出现。另一次是在执行周期ET的T0节拍,执行LOAD指令时出现。然后将这两次出现写成与或逻辑表达式如下: MDOUT=FT〃T3+ET〃T0〃LOAD

这是一个比较简单的逻辑表达式,最后根据这个表达式画出逻辑图如下:

第308~309页的12、13、18、19、21、22题;

12. 某机字长32位,其存储容量为4MB,若按字编址,它的寻址范围是多少? 解: 0~1M

13. 设有一个具有24位地址和8位字长的存储器,问: (1) 该存储器能够存储多少字节的信息?

(2) 如果存储器由4M×1位的RAM芯片组成,需要多少片? (3) 需要多少位作芯片选择?

解:(1) 存储单元数为2=16M单元,每个单元为8位字长,即一个字节,所以能存储 16M=16777216个字节的信息。

(2) 由于存储容量为16MB,每4M字节需要8片,故所需芯片数量为16/4×8=32片。

(3) 4M×1位的RAM芯片需要22位地址线,所以,可以把地址线的低22位直接连接到芯片的A0—A21管脚,而A22和A23则通过2:4线译码器进行芯片选择。

18. 某DRAM芯片内部的存储单元为128×128结构。该芯片每隔2ms必须刷新一次,且刷新是通过顺序对所有128行的存储单元进行内部读操作和写操作实现的。设存储器周期为500ns。求其刷新的开销(即2ms时间内进行刷新操作的时间所占的百分比)。

解:每刷新一行需要进行一次读操作和一次写操作,共2个存储器周期,故每行的刷新时间为500ns×2=1μs。在2ms内时间内需进行128次刷新,需时128μs,故刷新开销为: 128μs/2ms=6.4%

19. 某SRAM芯片有17位地址线和4位数据线,用这种芯片为32位字长的处理器构成1M×32位的存储器,并采用模块板结构。问: (1) 若每个模块板为256K×32位,共需要几块板? (2) 每块板内共需要多少片这样的芯片? (3) 所构成的存储器需要多少片这样的芯片? (4) 共需要多少位地址线,各完成什么功能? 解:(1) 1M=1024K,共需要模块板1024/256=4块

(2) 该芯片为217×4位=128K×4位,故每块板内需要芯片(256/128)×(32/4)=16片 (3) 构成该存储器共需要4×16=64片芯片

(4) 所构成的存储器总容量为1M×32位=4MB=2字节,故需要22位地址线。在每个模块内,首先用每两片位并联的方式构成128K×8位的空间,芯片内部需要17位地址线。然后用两组这样的存储空间通过地址串联构成256K×8位的存储体,4个存储体通过位并联构成一个模块板。共有4块模块板。

地址线可以这样分配:A0—A16用于连接所有存储芯片内部地址线,A17用于从各个存储体内两组存储空间中选择一组(每组用2片芯片通过位并联方式组成,为8位,一个字节),A18和A19通过2:4译码器选择各个模块板内4个存储体中的一个,而A20和A21通过2:4译码器选择4个模块板中的一块。

第344页的第41题;

41.在一个16位的总线系统中,若时钟频率为100MHz,总线周期为5个时钟周期传输一个字。试计算总线的数据传输率。 解:该总线的时钟周期:1/100=0.01μs 总线周期:0.01μs×5=0.05μs

故数据传输率为16b/ 0.05μs=320×10bps=40×10Bps

第364页第12题

12.设某光栅扫描显示器的分辨率为1024×768,帧频为50(逐行扫描),回扫和水平回扫时间忽略不计,则此显示器的行频是多少?每一像素允许读出时间是多少? 解:行频为:768行×50/s=38400行/s;

每一像素允许读出时间为:1/(38400×1024)≈0.0254(μs)

6

6

22

24

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

Top