微机原理课后习题参考答案_第1页
微机原理课后习题参考答案_第2页
微机原理课后习题参考答案_第3页
微机原理课后习题参考答案_第4页
微机原理课后习题参考答案_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上册

第一章

P9

1.1微处理器、微型计算机、微型计算机系统的区别是什么?

答:

(1)微型计算机中的运算器和控制器合起来称为中央处理器,也就是微处理器,

又称微处理机。

(2)微型计算机是由叩u、主存储器、输入/输出接口电路和系统总线构成。

(3)微型计算机系统由微型计算机、输入库立出设备、外存储器、系统软件、电

源、面板和机架等组成。

1.2微型计算机由哪些基本部分构成?

微型计算机是由cpu、主存储器、输入/输出接口电路和系统总线构成。

1.4说明CISC、RISC及其主要区别。

CISC是指复杂指令系统计算机,RISC是指精简指令系统计算机。

他们的区别在于不同的CPU设计理念和方法。RISC指令系统仅包含哪些必要的

经常使用的指令,不经常使用的功能,往往通过基本指令组合来完成。完成特殊

功能时效率比较低。CISC的指令系统比较丰富,一些特殊功能都有相应的指令。

处理特殊任务效率较高。

RISC对存储器操作相对简单,使对存储器访问的控制简化;而CISC机器的存

储器操作指令较多,对存储器的访问有更多的指令直接操作,要求的控制逻辑比

较复杂。RISC在--条指令执行的适当地方可以响应中断;而CISC机器是在一

条指令执行结束后响应中断。

RISCCPU的电路构成比CISCCPU简单,因此面积小、功耗也更低;CISC电

路CPU电路复杂,同水平比RISCCPU面积大、功耗大。RISCCPU结构比较

简单,布局紧凑规整,设计周期较短,比较容易采用一些并行计算的最新技术;

CISCCPU结构复杂,设计周期长,技术更新难度大。从使用角度看,RISC微

处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复

杂,功能强大,实现特殊功能容易。

AA--.

——•阜

2.18086CPU由哪两大部分组成?简述它们的主要功能。

总线接口部件BIU跟执行部件EUo

总线接口部件(BIU)是联系微处理器内部与外部的重要通道,其主要功能是负

责微处理器内部与外部的信息传递。主要任务:(1)取指令(2)形成物理地址

(3)传送数据

EU完成控制器的功能,它负责执行指令并对相应的硬件部分进行控制,它的主

要功能就是完成全部指令的执行。EU完成以下主要任务:(1)指令译码(2)执

行指令(3)向BIU传送偏移地址信息(4)管理通用寄存器和标志寄存器

2.28086CPU有哪些类型的寄存器?

有14个16位寄存器。分为五类,通用寄存器组、指示器和变址寄存器组、段寄

存器组、指令指示器、标志状态寄存器。

2.38086CPU段寄存器的作用是什么?

当前段的基址存放在段寄存器中。

代码段寄存器CS:内容指出当前代码段基地址

堆栈段寄存器SS:内容指出当前程序所使用的堆栈段的基地址

数据段寄存器DS:指出了当前程序使用的数据段基地址,存放程序中的变量

附加段寄存器ES:指出了当前程序使用的附加段,附加段用来存放数据或存放

处理后结果。

2.4通用寄存器中,八位寄存器与对应十六位寄存器有什么关系?如果

AX=89ABH,AH、AL的内容各是什么?

16位通用的寄存器可以分成两个8位寄存器,即可将每个通用寄存器的高8位

和低8位,作为独立的8位通用寄存器使用。

AH:89HAL:ABH

2.5标志寄存器各个位的作用是什么?

进位标志CF:当进行加法运算时结果使最高位产生进位,或在减法运算时,结

果使最高位产生借位,则CF=1,否则CF=O,也有其他一些指令会影响CF。

辅助进位标志AF:当加法运算时,如果低四位向高位有进位,或者低四位向高

位有借位,AF=1,否则AF=O。

奇偶标志位PF:运算结果低8位所含1的个数为偶数,PF=1;否则为0。

零标志位ZF:运算结果为零时ZF=1;否则为0。

符号标志SF:运算结果为负SF=1,否则为0。

溢出标志OF:当运算结果超出了本条指令数据长度所能表示的数据范围时,OF

为1,表示溢出,否则为0。

方向标志DF:串操作的地址变化方向控制标志,当DF=0,地址递增,DF为1,

地址递减

中断允许标志IF:如果IF=1,则允许微处理器响应可屏蔽中断,IF=0,则禁止

可屏蔽中断。

陷阱标志TF:若TF为1,则微处理器按单步方式执行指令,执行一条指令就产

生一次类型为1的内部中断。

2.6指令指针的作用是什么?如果CS内容为2000H,IP内容为0200H,下一条

执行的指令码存放的对应物理地址是多少?

IP指向当前代码中下一条要执行的指令的偏移地址。

下一条指令物理地址为:20200H

2.10什么是物理地址、逻辑地址?逻辑地址2(X)0:2345H对应的物理地址是多

少?

物理地址:CPU对物理的存储器系统访问时,通过地址线给出在1M字节地址空

间里每一个存储单元的唯一20位地址,称为该存储单元的物理地址。

逻辑地址:编程结构里使用的地址。

22345H

2.128086CPU最大模式最小模式有什么区别?为什么设置不同的模式?

当组成简单的微型计算机时,8086CPU处于一种最小结构,为最小模式;当组

成复杂的微型计算机系统时,8086处于一种最大结构,称为最大模式。

原因:适用于不同环境下使用的微型计算机系统。

2.13什么是时钟周期、总线周期、指令周期?它们有什么关系?

时钟周期:时钟脉冲信号的一个周期时间叫一个时钟周期

总线周期:经外部总线执行信息的输入/输出过程

指令周期:执行一条指令所需要的时间

指令周期包含总线周期,总线周期包含时钟周期。

第三章Pentium系列微处理器的基本结构

课后答案:

3.3Pentium的寄存器组包括哪些类型的寄存器?简要说明基本结构寄存器、

系统级寄存器的用途是什么?

答:Pentium微处理器的寄存器组主要包括以下儿个部分:基本结构寄存器、系

统级寄存器。调试寄存器。模型专用寄存器和浮点寄存器。

Pentium微处理器有16个基本机构寄存器,这16个寄存器按其用途可分为

通用寄存器、专用寄存器和段寄存器三类。

通用寄存器有8个,即累加器EAX、机制寄存器EBX、计数寄存器ECX、

数据寄存器EDX、堆栈指针ESP、基址指针EBP、源编制寄存器ESI以及目的

变址寄存器EDL

通用寄存器中,32位寄存器EAX、EBX、ECX、EDX、EBP、ESP、ESI

和EDI,他们既可保存算术和逻辑运算中的操作数,也可保存地址。

专用寄存器有指令指针指示器和标志寄存器。指令指针EIP是32位寄存器,

他的低16位成为IP,用与兼容16位CPU,其内容是下一条要取入CPU的指令

在内存中的偏移地址。标志寄存器EFLAGS是32位寄存器,可分为三类:状态

标志,控制标志和系统标志。

段寄存器有两部分。一部分是编程可见的6个16位选择符寄存器,即8086、

80286处理器中有CS、DS、ES、SS四个段寄存器,80386以上的处理器中增添

了FS和GS两个段寄存器。在80286以上的处理器中,每一个段寄存器都有一

个与之相对应的段描述符寄存器,用来描述一个段的段基地址、段限和段的属性。

系统级寄存器包括四个系统地址寄存器,用与控制分段存储器管理中数据结

构的位置,所以也成为存储管理寄存器。Pentium用这四个寄存器保存保护方式

下时常使用的数据结构的基地址,界限以及相关属性保护起来,以便快速访问。

Pentium微处理器由于控制管理的需要,又配备了。心0吊CR2CR3和CR,控

制寄存器,在这五个控制寄存器中保存着全局性和任务无关的机器状态。

3.4说明寄存器EAX、AX、AH、AL之间的关系。

答:累加器EAX既可以保存算术和逻辑运算的操作数,也可以保存地址。它的

名称来源于8086处理机的通用寄存器AX,所以,EAX的低16位可按原来的名

字访问。16位寄存器AX每个字节均有另一个名字,字节寄存器命名为AH(高

字节)和AL(低字节),这些8位通用寄存器也可以按原来的名字访问。

3.5IP/EIP寄存器的用途是什么?

答:指令指针EIP是32位寄存器,它的低16位称为IP,用与兼容16位CPU,

其内容是下一条要取入CPU的指令在内存中的偏移地址。当一个程序开始运行

时。系统把EIP清零,每取入一条指令,EIP自动增加取入CPU的字节数目,

所以称EIP为指令指针。

3.7Pentium段寄存器由哪几部分构成?与8086段寄存器有什么区别?

答:段寄存器由两部分,一部分是编程课件的6个16位选择符寄存器,即8086、

80286处理器中有CS、DS、ES、SS四个段寄存器,80386以上的处理器中增添

了FS和GS两个段寄存器。对应在另一部分的、是编程不可见的6个64位的描

述符寄存器。在80286以上的处理器中,每一个段寄存器都有一个与之相对应的

段描述符寄存器,用来描述一个短的段基地址、段限和段的属性。

3.9Pentium有那几个系统地址寄存器?为什么设置这些寄存器?

答:由于系统存储管理的需要,Pentium有4个系统地址寄存器,用与控制分段

存储器管理中数据结构的位置,所以也称为存储管理寄存器。他们分别是全局描

述符表寄存器GDTR,中断描述符表寄存器IDTR,局部描述符表寄存器LDTR

和任务状态寄存器TR。Pentium微处理器用这四个寄存器保存保护方式下市场

使用的数据结构的基地址、界限以及相关属性保护起来,以便快速访问。

ADS

3.10说明Pentium引脚.BRDY、届~密、CACHE、KENy丽的

作用。

答:ADS:地址选通,有效时表示CPU启动1个总线周期,T1有效

BE7-BE0:字节允许,对应每个字节,由地址A2-A0产生。

BRDY:突发就绪,类似Ready,结束一个总线周期,此时外设准备好,将

进入总线流水,可用于确定受否插入等待状态。

Cache:Cache控制,指示目前处于Cache周期。

KEN:Cache允许,有效时,指示进入突发读周期,将外部数据复制到内部

Cacheo

NA:下,地址有效,用于支持地址流水线操作。采样到NA有效的两个时

钟周期后,CPU可送出新地址。

3.11说明INIT、RESERT信号的作用。设置INIT的目的是什么?Pentium复

位后从什么位置开始执行程序?

答:INIT:初始化,热复位,与RESET类似,不清0Cache、浮点寄存器。

RESET:复位,冷复位,1)实地址方式;2)A31-A20为FFFH(12个),3)

CS=F000H,EIP=0000FFF0H;4)清0Cache和浮点寄存器;5)清0相关寄存

器。

Pentium复位后从内存OFFFFFFFOH处开始执行软件。

3.12Pentium总线操作有几种时钟状态?-2、T2P、丁。与一般的始终状态有

什么区别?

答:Pentium微处理器总线操作有6中时钟状态:Ti、Tl、T2、T12、T2p、TD。

T12:表示总线上有两个进行的总线周期,在第一个周期传输数据中启动了第二

个总线周期。T12对于第一个总线周期是T2,对于第二个总线周期是T1。

T2p:表示总线上有两个进行的总线周期,两个总线周期都处于T2或后续的时

钟状态。

TD:示总线上有一个在进行的总线周期。这个总线周期的地址和状态信息在

前面T12时钟送上总线,但由于从读操作到写操作,或者从写操作到读操作要

一个时钟的缓冲,或者前一个总线周期的操作占用了数据线和BRDY,使得数据

和BRDY信号不能再第二个周期在T1之后的时钟状态进入T2,这时插入一个

时钟状态TD。

3.16说明Pentium实地址模式的特点。8086的工作模式、Pentium是地址模式、

Pentium虚拟8086模式之间的异同?

答:Pentium实地址模式特点:能有效地使用8086所没有的寻址方式、32位寄存

器和大部分指令。

实地址方式,Pentium与8086兼容,基本体系结构相同。

虚拟8086方式与实地址方式的不同:

1)虚拟8086方式是一个程序的运行方式。

2)实地址方式是处理器的工作方式。

3.17说明Pentium保护虚拟地址模式特点。为什么引入保护机制?有几个特权

级?

答:在保护方式下,逻辑地址由选择符和偏移地址两部分组成,选择符存放在段

寄存器中,但它不能直接表示段基地址,而由操作系统通过一定的方法取得段基

地址,再和偏移地址相加,从而求得所选存储单元的物理地址。

在程序运行过程中,应防止应用程序破坏系统程序、某一应用程序破坏其他应用

程序、错误地把数据当做程序运行等情形的出现。为避免出现这些情形,采取的

保护机制。

Pentium微处理器有多种保护方式,其中最突出的是环保护方式。环保护是在用

户程序与用户程序之间、用户程序与操作系统之间实行隔离,通过特权级实现。

特权级:4级,0〜3(高〜低),0级分配给操作系统核心。

第四章

4.2

DRAM的特点:动态RAM是利用电容存储电荷的原理来保存信息的。运行中需要不断刷新,

单片存储容量高

刷新:将存储单元的内容重新按原值设置一遍,而不是将所有单元都清零

为什么要刷新:因为读/写操作本身是随机的,有可能某些存储单元长期得不到访问,无读

出就无重写,原信息会丢失。所以必须采用定时刷新的方法。

刷新的方法:①利用动态RAM控制器来实现刷新的问题;②在每个动态RAM芯片上设置刷新

逻辑电路

4.3

SRAM的特点:SRAM是用触发器存储信息,因此即使信息读出后,它仍保持其原状态。但电

源掉电时,原存信息丢失,故它属易失性半导体存储器。运行中不需要刷新,速度快,功耗

当微型计算机系统的存储器容量较小时宜采用SRAM芯片而不宜采用DRAM芯片

4.4

SRAM的引脚类型:地址信号输入引脚、双向数据输入/输出信号引脚、输出允许信号、读/

写控制信号输入引脚

8K*8存储器芯片有8根数据线,13根地址线

4.5

只读存储器的类型:

掩膜ROM:适合于批量生产和使用

可编程的只读存储器(PROM):只能实现一次编程不可修改

可擦除、可编程的只读存储器(EPROM):长期保存信息,可多次擦除和重新编程

电可擦除的可编程只读存储器(EEPROM):用加电的方法进行在线的擦除和编程,长期保存

数据

快速擦写存储器:整片擦除,擦除、重写的速度快

存储什么类型的信息适合使用只读存储器:常用来保存固定的程序或数据

4.6

由于多个芯片连接需要选择,片选是CPU高位地址选择存储器芯片

4.7

①总线驱动能力②时序配合③数据线的连接④地址线的连接⑤读写控制线的连接⑥

ROM与RAM在存储器中的地址分配⑦对多种宽度数据访问的支持

4.8

①高位地址信号(片选)②最低位地址信号(体选)③低位地址信号(自选)

4.9

RAM存放临时数据和当前的应用软件,非易失的ROM存放核心系统软件。80X86微处理机复

位后从物理地址高端开始运行,所以总是在物理地址空间的高地址位置使用只读存储器

ROM。

4.11

(题目有问题。。。今天问过您了

4.13

当访问的数据是一个对准数据时,-个总线周期可以完成读写,如果访问的数据不是对准的

数据时,要通过两个总线周期完成读写过程,因此编程时应当应尽量使数据对准存放。

4.14

高速缓存:弥补主存速度,在CPU与主存之间设置的高速、小容量的存储器,构成Cache-

主存存储层次,速度是Cache的,容量是主存的。

主存速度不够f引出Cache

不可以取代主存,此时引出虚拟存储器

4.15

①CPU访问存储器是通过主存地址进行的。首先进行主存与Cache的地址变换。

②变换成功(Cache块命中),就得到Cache块号neb,并由nmr直接送ncr以拼接成nc,

这样,CPU就直接访问Cache

③ache块未命中(Cache块失效),就通过相关的Cache表,查看有无空余的Cache块空间,

当有空余的Cache块空间,就从多字节通路把所需信息所在的一块调入Cache,同时把被访

问的内容直接送给CPU

④Cache中无空余空间,就需根据一定的块替换算法,把Cache中一块送回主存,再把所需

信息从主存送入Cache.

4.17

从Cache的地址和主存的地址可以看出,Cache的容量远远小于主存,一个Cache块要对应

许多主存块,因此需要按某种规则把主存块装入Cache中

①全相联映像:主存中的任意一块可装入Cache中的任意块称为全相联映像。

在Cache内,除了必须存放这每一个数据块的内容外,同时还需将每一块的主存储器地址全

部记下,每当微处理器要存取一项数据时,Cache的地址映像变换机构将该项数据的地址与

存在Cache的标记部分中的所有地址逐个相比,若找到相同的,即将那个Cache位置的内容

送给微处理器。

②直接映像:主存中每一块只能装入到Cache中唯一的特定块位置的方法称为直接映像

主存空间按Cache大小等分成区,每区内的各块与Cache的块一一对应,主存地址中直接产

生Cache地址,标志表中比较区号,标志表存储器按地址访问。

③N路组相联映像:把Cache增加到N路,且在主存的区与Cache的路之间实行全相联映像,

在块之间实行直接映像

主存地址中直接产生Cache地址(2路对应地址相同),同时比较各路对应块标记

4.18

当新的一块数据装入Cache时,原存储的一块数据必须被替换掉,对于全相联映像和N路组

相联映像技术需要种替换算法,为了获得高速度,这种算法必须由硬件实现。

最常用的有以下3种算法:

①近期最少使用(LRU)算法:每行设置个计数器,Cache每命中一次,命中块计数器清

零,其他个块计数器增1,当需要替换时,比较各特定块的计数值,将计数值最大的行换出。

②最不经常使用(LFU)算法:每块设置•个计数器,新块建立后从0开始计数,每访问一

次,被访问块的计数器增1,当需要替换时,对这些特定块的计数值进行比较,将计数值最

小的块换出,同时将这些特定块的计数器都清零。

③随机替换:从特定的块位置中随机地选取一块换出即可。

第五章作业

5.1设DS=3000H,SS=2000H,AX=2A2BH,BX=1200H,CX=889AH,BP=1200H,SP=1352H,

SI=1354H,(31350H)=35H,(31351H)=03CH,(31352H)=8FH,(31353H)=86H,(31354H

)=52H,

(31355H)=97H,(326A4)=98H,(326A5H)=86H,(23150H)=88H,(23151H)=31H,(2315

2H)=99H

(23153H)=77H

答:

下列指令在上述环境下执行,请填空;

(1)MOVAX,1352H;AX=1352H

(2)MOVAX,[1352H];AX=868FH

(3)MOV0150H[BX],CH;(31350H)=88H(31351H)=03CH

(4)MOVAX,0150H[BP];AX=3188H

(5)POPA):;AX=7799H,SP=1354H

(6)ADD[SI],CX;(31354H)=ECH,(31355H)=1FH,SF=

0,

ZF=0,PF=0,CF=1,OF=1

(7)SUBBH,0150H[BX][SI];BH=7AH,SF=0,

ZF=0,PF=0,CF=1,0F=0

(8)INCBYTEPTR0152H[BX];(31352H)=90H,(31353H)=

86H

CF=不变

(9)INCWORDPTR0152H[BX];(31352H)=90H,(31353H)=

86H,

CF=不变

5.2阅读下列程序段填空

(1)MOVBL,98H

MOVAL,29H

ADDAL,BL

DAA

答:

AL=27HBL=98HCF=1

(2)MOVAX,BX

NOTAX

ADDAX,BX

INCAX

答:/\X=OOOOHCF=0

(3)MOVAX,0FE60H

STC

MOCCX,98

XORCH,OFFH

SBBAX,CX

答:AX=OFEFEHCF=1

(4)MOVDX,OFFEEH

MOVCL,2

XARDX,CL

答:DX=FFFBHCF=1

5.3试指出下列指令中源操作数的寻址方式

(1)ADCCX,35[BX][SI]

⑵MOVAX,[3300H]

⑶ANDBX,[BX]

(4)INCWORDPTR[BX]

⑸MOVEAX,[EBX][ESI]

答案:L相对基址变址寻址

2.直接寻址

3.寄存器间接寻址

4.寄存器间接寻址

5.基址变址寻址

5.4按下列题意要求分别为每一小题写出相应的汇编语言指令

(1)以寄存器BX和SI作为基址变址寻址方式把存储器的一个字传送到CX

寄存器

(2)以寄存器BX和位移量25H作为寄存器相对寻址方式把存储器的一个子和

AX相加,把结果送回那个字单元中

(3)将一个字节立即数0B6H与偏移地址为867H的存储器字节单元内容相比较

(4)清除寄存器SI间接寻址的存储器字但愿,同时清零CF标志位

答案:1.MOVCX,[BX+SI]

2.ADD[BX+25H],AX

3.CMPBYTEPTR[867H],0B6H

4.ANDWORDPTR[SI],0

5.5设X.Y.R.S.Z均为16位无符号数的变量。按已给定的表达式

Z(X+Y)/(R-S)-Z有程序如下,是在空格处填入适当的命令

MOVAX,X

MOVCX,R

SUBCX,S

MOVZ,AX

MOVZ+2,DX

HLT

答案:ADDAX,Y

MULZ

DIVCX

5.6解释PUSHDI指令是怎样工作的

答案:

(1)SP-SPT,调整SP指针。

(2)将DI内容的高8位压入堆栈指针SP所指的存储单元。

(3)SP-SPT,调整SP指针。

(4)将DI内容的低8位压入堆栈指针SP所指的存储单元。

5.7Pentium在指令码中怎么区分数据是字(16位)还是双字(32位)?

1.通过指令操作码中的W位来区分。

2.通过操作数大小前缀和段描述符中D/B位联合区分。

5.88086存储单元寻址时,段的使用是怎么规定的?

8086对1M字节的主存空间,从16的倍数的地址开始(段的基地址),以

最大64K字节为单位划分一些连续的区域,称为段。内存一般分为4类逻辑段,

分别称为代码段、数据段、堆栈段、附加段。

存储器操作类型隐含段超越段段内偏移量

取指令CS无IP

堆栈操作SS无SP

数据变量DSCS^SS、ES有效地址EA

源串变量DSCS、SS、ESSI

目的串变量ES无DI

基址BP指针SSCS、SS、ES有效地址EA

5.9子程序远返回和近返回的指令助记符都是RET,怎么确定其为远返回还是

近返回?

远返回还是近返回要看子程序调用指令CALL,如果在近类型子程序中RET

是近返回,在远类型子程序中RET是远返回。

5.108086中,中断指令和子程序调用指令有什么区别?设置中断指令有什么

用途?

子程序调用只需要保护断点,即该指令的下一条指令的地址(段内调用只保护IP,

段间调用要保护CS和IP);中断指令不但要保护断点(即该指令的下•条指令的CS和IP),

还要保护标志寄存器FLAGS«

设置中断指令用途是调用中断子程序。

5.11什么情况下使用串操作指令?使用串操作指令要设置哪些参数?

在进行与数据块有关的操作时,可以使用串操作指令。

使用串操作指令时,通常要设置几个寄存器参数,主要有:CX、SI、DI、

DFo

第六章作业

6.3汇编伪指令的作用是什么?

答:伪指令是在汇编源程序编译期间由汇编程序处理的操作,而不是像指令那样

在程序运行期间由计算机来执行的,它们可以完成如处理器选择,定义程序模式,

定义数据,分配存储区,指示程序结束等功能。

6.4一个汇编源程序一般应当包含哪些段?

答:包含数据段,代码段,堆栈段,附加数据段。

6.5说明汇编语言中地址计数器的作用。

答:用来记录当前指令在内存中的段内偏移值。

6.6什么是数据类型?数据类型是怎样定义的?

答:DB,DD,DT,等是数据类型。

数据类型是根据数据在存储是所占的字节数,数据的编码方式,数据的存储

方式来定义不同的数据类型的。

6.7怎样定义子程序的类型?不同类型的子程序,调用是用什么区别?

答:通过指定子程序的类型属性(可以是NEAR或FAR)来定义子程序的类型。

调用时:

若过程是NEAR型,则CALL和RET指令就确定为NEAR属性;

若过程是FAR型,则CALL和RET指令就确定为FAR属性;

一般默认是NEAR型。

6.8变量和标号有哪些属性?这些属性是怎样规定的?

答:

变量的属性:

1.段属性。该变量所在的段的段地址。

2.偏移属性。该变量的偏移地址。

3.类型属性。该变量一个数据的字节数。

4.长度属性。该变量在数据区中的单元数。

5.字节数属性。该变量在数据区中分配给该变量的字节数。

标号的属性:

1.段属性。标号所在的段的段地址。

2.偏移属性。标号的偏移地址。

3.类型属性。指出该标号是在本段内引用还是在段内引用。

6.9假设VAR12和VAR23是字变量,LAB为标号,试指出下列指令的错误之处:

(l)ADDVARI2,VAR23;错,操作数不能同时为存储器寻址

⑵SUBAL,VAR12;错,操作数的长度不--致

(3)JMPLAB[DI];错,标号不能当做偏移量来用

⑷JNZVAR12;错,字变量不能当做标号来用

6.10对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什

么?

FLDB1DB?

TABLEA2DW20DUP(?)

TABLEB3DB'ABCD'

TABLEA4DW10DUP(?)

TABLEB5DB20DUP(?)

TABLEC6DB'1234'

(1)MOVAX,TYPEFLDB1;(AX)=1

(2)MOVAX,TYPETABLEA2;(AX)=2

(3)MOVCX,LENGTHTA.BLEA2;(CX)=20

(4)MOVDX,SIZETABLEA2;(DX)=40

(5)MOVCX,LENGTHTABLEA3;(CX)=1

(6)MOVAX,LENGTHTABLEA4;(AX)=10

(7)MOVBL,LENGTHTABLEA5;(BL)=20

(8)MOVCL,LENGTHTABLEA6;(CL)=1

6.12设已知语句为

ORG0024H

DATA1DW4,12H,$+4

则执行语句MOVAX,DATAl+4后AX的值是多少?

答:(AX)=0028Ho

0024H04H

0025HOOH

0026H12H

0027HOOH

0028H28H

0029HOOH

第七章作业

72写统计AX中1、0个数的源程序。1的个数存入CHQ的个数存入CL。

codesegment

assumecs:code

start:MOVCX,0

MOVDX,17

SO:SUBDX,1

JZS3

SHLAXJ

JNCS2

INCCH

JMPSO

S2:INCCL

JMPSO

MOVCH,DH

MOVCL,DL

S3:MOVAX,4CH

INT21H

CODEENDS

ENDSTART

7.3编写比较两个字符串STRING1和STRING2所含字符是否完全相同的源程序,若相同则

显示“MATCH”,若不相同则显示“NOMATCH”。

datasegment

string1db'das$f

nlequ$-stringl

string2db'dass$'

n2equ$-string2

strldb0AH,0DH:MATCH$'

str2dbOAH,ODH;NOMATCH$'

dataends

codesegment

assumecs:code,ds:data

start:

movax,data

movds,ax

leasi,string1

leabx,string2

movcx,nl

movax,n2

cmpex,ax

jnznext

nextl:movdxjbx]

xordxjsij

jnznext

incsi

incbx

cmpbyteptr[si],$

jnznextl

leadx,strl

movah,09h

int21h

next2:movah,4ch

int21h

next:leadx,str2

movah,09h

int21hjmpnext2

codeends

endstart

7.4从键盘读入一个四位的十六进制数,CRT显示等值的二进制数.

DATASEGMENT

STRING1DB0AH,0DH:nothexadecimalPleaseinputafresh',OAH,ODH,$;不是十六进缶U,请重

新输入

STRING2DB0AH,0DH,'$'

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

s4:MOVBX,0;用于存放四位的16进制数

MOVCH,4

MOVCL,4

SO:SHLBX,CL;将前面输入的数左移4位

MOVAH,1;从键盘取数

INT21H

CMPAL,30H;<0吗?

JSSI;不是,。〜F的数重新输入

CMPAL,39H;是‘0〜9'吗?

JAS3;不是,转,A〜F’的处

ANDAL,0FH;转换为:0000B〜1001B

JMPS2

S3:ANDAL,110H1OB;转换为大写字母

CMPAL,41H;又<人吗?

JSSI;不是'A〜F的数重新输入

CMPAL,46H;>F吗?

JASI;不是'A〜F的数重新输入

ANDAL,0FH;转换为:1010B-1111B

ADDAL,9

S2:ORBL,AL;将键盘输入的数进行组合

DECCH

JNZSO

DISPN:MOVCX,16;将16位二进制数一位位地转换成ASCII码显示

leaDX,STRING2

MOVAH,09

INT21H

DISP:MOVDL,0

ROLBX,1

RCLDL,1

ORDL,30H

MOVAH,2;进行显示

INT21H

LOOPDISP

MOVAH,4CH

INT21H

SI:leaDX,STRING1

JMPINPUT

INPUT:MOVAH,09

INT21H

JMPS4

CODEENDS

ENDSTART

7.5设从STRING开始存放一个以$为结束标志的字符串,试编写把字符串中的字符进行分

类的源程序,数字字符送入NUM开始的内存中,大写字母送入BCHAR开始的内存区中,

小写字母存入LCHAR开始的内存中,其他字符存入OTHER开始的内存区中。

DATASEGMENT

STRINGDB'abcl23ABe@%?$'

NEQU$-STRING

NUMDBNDUP(?)

BCHARDBNDUP(?)

LCHARDBNDUP(?)

OTHERDBNDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

LEABX,STRING

DECBX

LEASRBCHAR

LEACX,LCHAR

LEADX,OTHER

LEASI,NUM

AA1:INCBX

MOVALJBX];判断是否为$,是否结束

CMPAL,$

JZAA5

CMPAL,30H;判定数字字符

JCAA4

CMPAL,39H

JAAA2

MOV[SI],AL

INCSI

JMPAA1

AA2:CMPAL,41H;判定大写字母

JCAA4

CMPAL,5AH

JAAA3

MOVDI,SP

MOV[DI],AL

INCSP

JMPAA1

AA3:CMPAL,61H;判定小写字母

JCAA4

CMPAL,7AH

JAAA4

MOVDI,CX

MOV[DI],AL

INCCX

JMPAA1

AA4:MOVDI,DX;判定其他

MOV[DI],AL

INCDX

JMPAA1

AA5:MOVAH,4CH;返回DOS结束

INT21H

CODEENDS

ENDSTART

7.6试编写找出首地址为BUF数据块中的最小偶数(该数据块中有100个带符号字节数),

并以十六进制的形式显示在CRT上的源程序。

DATASEGMENT

BUFDB100DUP(?);要比较的数

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATa

START:MOVAX,DATA

MOVDS,AX

LEABX,BUF;BUF首地址送BX

MOVCL,101;循环控制

MOVDLJ26;DL存放最小偶数

MOVAH,0;标志是不是有偶数

LOOP1:DECCL;循环计数减1

JZTOEND;ZF标志0则跳转

MOVALJBX];BX内存内容送AL

INCBX;BX指向下一内存单元

SHRAL,1;AL逻辑右移一位

JCLOOP1;是奇数则接着循环

SHLAL,1;是偶数,因为上面右移了左移得到原数值

MOVAH,1;能进行这一步则说明数值中有偶数

CMPAL,DL;与CH比较大小

JGELOOP1;AL大DL小则循环

MOVDL,AL;保证DL存放最小偶数

JMPLOOP1;CL不为0继续循环

TOEND:CMPAH,1

JCL;有借位则说明数值中无偶数直接返DOS

MOVBL,DL

SHRDLJ

SHRDL,1

SHRDL,1

SHRDLJ

ANDDL,0FH

CMPDL,10

JBL4

ADDDL,7

L4:ADDDL,30H;显示高四位对应的十六进制的ascii码

MOVAH,2

INT21H

MOVDL,BL

ANDDL,0FH

CMPDL,IO

JBL6

ADDDLJ

L6:ADDDL,30H;显示低四位对应的十六进制的ascii码

MOVAH,2

INT21H

MOVDL,H;显示H

MOVAH,2

INT21H

L:MOVAH,4CH;返回DOS

INT21H

CODEENDS

ENDSTART

7.8试编写由键盘输入一个以回车作为结束的字符串,将其按ASCII码由大到小的顺序输入

到CRT上的源程序。

DATASEGMENT

BUFDB100DUP(?)

DATAENDS

CODESEGMENT;代码段ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVDI,0;记录输入的字符串个数

MOVBX,OFFSETBUF

AA1:MOVAH,1;键盘输入字符

INT21H

CMPDI,101;是否超出缓冲区

JNCAA6;超过缓冲区大小

CMPAL,0DH;是否为回车,回车表输入结束

JZAA6;是回车

MOV[BX],AL;将字符存入缓冲区

INCBX

INCDI

JMPAA1

AA6:MOVDX,DI

CMPDL0;没有字符则无输出

JZAA7

CMPDL1;有--个字符则直接输出

JZAA8

DECDX;外循环计数初值,即遍数,数据个数减1

AA2:MOVBX,OFFSETBUF

MOVCX,DI

DECex;内循环计数初值,即比较次数,数据个数减

AA3:MOVALJBX]

CMPALIBX+1];比较

JNCAA4;前大后小转

XCHGALJBX+1];前小后大交换

MOV[BXJ,AL

AA4:INCBX

LOOPAA3

DECDX

JNZAA2

AA8:MOVBX,OFFSETBUF;输出字符

MOVCX,DI;循环计数初值

AA5:MOVDLJBX]

MOVAH,2

INT21H

INCBX

LOOPAA5

AA7:MOVAH,4CH

INT21H

CODEENDS

ENDSTART

7.9设从BUFFER开始存放若干个以$为结束标志的带符号字节数据,试编写将其中的正数

按由大到小的顺序存入PLUS开始的缓冲区中的源程序。

DATASEGMENT

BUFFERDB1,2,3,4,5,6,7,-8,9,2,-1,-2,-3,4,-5,-6,-7,-8,-9,1,$

PLUSDB(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOV初始化外循环计数器

LEABX,BUFFER

LEASI,PLUS

LI:MOVALJBX]

XORAL,$;判断当前字符是否为$

JNZL2;不是'$'转移

JMPL4

L2:MOVALJBX];判断当前字符是否为正数

ROLAL,1

JNCL3;是正数转移

INCBX

JMPLI

L3:RORAL,1;恢复数据

MOV[SI],AL;将数据存入目标地址

INCDI

INCSI

INCBX

JMPLI

L4:CMPDI,0

JGL5;正数个数>=2则开始排序

MOVAH,4CH

INT21H;正数个数为0或1均跳出

L5:LEASI,PLUS;以下为使用冒泡排序的方法对数据排序

MOVCX,DI

L6:MOVAL,[SI]

CMPALJSI+1J

JNCL7

XCHGAL,[SI+1]

MOV[SI],AL

L7:INCSI

LOOPL6

DECDI

JNZL5

LEADX,PLUS

MOVAH,01

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

下册

第1章,P47:7,10,16,25

7.段描述符高速缓存寄存器有什么作用?答:加快对存储器的访问。

lO.Pentium微处理器的保护机制有那些保护措施?答:3类保护机制:任务间存储空间

的保护、段属性和界限的保护、特权级保护。

16、

段描述符

组成:基址、界限、属性:

作用:向处理器提供有关一个段的位置和大小信息以及访问控制的状态信息。

25简述Pentium通过GDT访问数据段的寻址过程(也可画图说明)。

答:23页如图1.3.2

1)如图①,段选择符入DS中

2)如图②,根据DS第二位D2值为0,选择进入GDT表

3)如图③,段选择符的索引字段INDEX*8加上GDT的基地址,即为段描述符的地址。

4)如图④,将GDT中的数据段描述符的内容(32位的基地址,20位的段界限,12位

的属性)送入DS段寄存器的不可见部分

5)如图⑤,将DS段寄存器不可见部分的32位基地址+逻辑地址中的32位偏移量得

到线性地址。如不分页,线性地址就为物理地址

第2章,P97:1,2,7,16-18

1、答:

接口:从广义上讲,接口就是指两个系统或两个部件之间的交接部分,可以是两种硬设备之

间的连接电路,也可以是两个软件之间公用的逻辑边界。在微型计算机系统中,CPU与外部

设备之间的联系,需要有特定的硬件连接和相应的控制软件。完成这一任务的软、硬件的综

合称为接口。

接口与端口的不同:所谓端口是指接口电路中那些完成信息传送,可由程序寻址并进行读写

操作的寄存器。原则上讲,若干个端口加上相应的控制逻辑才构成接口。

2、答:

(1)地址译码或设备选择;

(2)数据缓冲和锁存;

(3)信息格式与电平的转换;

(4)数据传送的协调。

7、答:

程序查询方式CPU通过查询I/O设备的状态,断定哪个

设备需要服务,然后转入相应的服务程序。

程序中断方式当I/O设备需要CPU为其服务时,可以发

生中断请求信号INTR,CPU接到请求信号后,

中断正在执行的程序,转去为该设备服务,服

务完毕,返回原来被中断的程序并继续执行。

直接存储器存取(DMA)方式采用这种方式时,在DMA控制器的管理下,

I/O设备和存储器直接交换信息,而不需要CPU

介入。

I/O处理机方式引入I/O处理机,全部的输入/输出操作

由I/O处理机独立承担。

2.16说明DMAC8237的主要功能与特点。

答:

(-)主要功能:

1.在一片8237A内有4个独立的DMA通道。

2.每个通道的DMA请求可分别编程允许或禁止。

3.每个通道的DMA请求有不同的中断优先级(即DMA操作优先权),优先级有两种:

固定优先级和循环优先级,由编程决定。固定优先级的顺序是通道0最高,依次是通道1,

通道2和通道3。

4.可在外设与存储器,存储器与存储器之间传送数据,存储器地址寄存器可以加1或

减1。

5.可由软件编程改变DMA读写周期长度。

6.有四种工作方式:单字节传送方式,数据块传送方式,请求传送方式,级连方式。

7.可以多片级连,扩展通道数。

8.DMA操作结束有两种方法:一是字节计数器减1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论