微机原理课后习题答案.docx

上传人:b****7 文档编号:25577640 上传时间:2023-06-09 格式:DOCX 页数:48 大小:1.40MB
下载 相关 举报
微机原理课后习题答案.docx_第1页
第1页 / 共48页
微机原理课后习题答案.docx_第2页
第2页 / 共48页
微机原理课后习题答案.docx_第3页
第3页 / 共48页
微机原理课后习题答案.docx_第4页
第4页 / 共48页
微机原理课后习题答案.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

微机原理课后习题答案.docx

《微机原理课后习题答案.docx》由会员分享,可在线阅读,更多相关《微机原理课后习题答案.docx(48页珍藏版)》请在冰豆网上搜索。

微机原理课后习题答案.docx

微机原理课后习题答案

第1章进制及码元

1、进制转换

129=81H=10000001B=201Q

298=12AH=100101010B=452Q

1000=3E8H=1111101000B=1750Q

5DH=1011101B=135Q=93D

3E8H=1111101000B=1750Q=1000D;

357Q=11101111B=0EFH=239D

2、进制计算

100101102FE3F7,-119FFF7,-3275947

3、数据表示范围:

一个字节的无符号数表示范围为0~255,有符号数补码表示范围为-l28—+127。

两个字节的无符号数表示范围为0~65535,有符号数补码表示范围为—32768~+32767。

N位二进制数的无符号数表示范围为0~(2N-1),有符号数(补码)表示范围为-2N-1~(2N-1-1).

4、35H代表的ASCII字符为'5',代表十六进制数时等价的十进制值为53,代表压缩8421BCD码等价的十进制值为35,代表非压缩8421BCD码等价的十进制值为5。

5、FFH代表无符号数时等价的十进制值为255,代表补码有符号数时等价的十进制值为一1,代表反码有符号数时等价的十进制值为一0,代表原码有符号数时等价的十进制值为一l27。

6、—20的8位二进制补码为ECH,原码为94H,反码为EBH。

158的16位二进制补码为009EH,原码为009EH,反码为009EH。

7、英文字符一般在计算机内占用

(1)个字节,每个字节的最高位一定为0,全角英文字符在计算机内占用2个字节,一个汉字在计算机内占用2个字节,每个字节最高位为1。

8、设阶码用8位补码表示,尾数部分用16位补码表示,则—(1/32+1/128+1/512)的尾数部分及阶码分别为多少?

第2章微机硬件基础

1、请画出计算机系统硬件图。

2、8086/88CPU为什么要分为BIU和EU两大模块?

答:

为了使取指和分析、执行指令可并行处理,提高CPU的执行效率。

8086/88CPU有两大模块总线接口单元BIU和执行单元EU组成。

3、简述8086/88CPU的两大模块BIU和EU的主要功能及组成。

答:

如下图所示:

4、简述8086/88CPU的14个寄存器的英文名、中文名及主要作用。

答:

AX(Accumulator)(AH、AL)累加器,它是汇编编程中最常用的一个寄存器,主要用于乘除运算、BCD运算、换码、I/O操作、串操作、中断调用等。

BX(Base)(BH、BL)基址寄存器,主要用于存放地址、基址(默认相对于DS段)等。

CX(Counter)(CH、CL)计数器,主要用于循环计数、串操作计数、移位计数(CL)等。

DX(Data)(DH、DL)数据寄存器,主要用于l6位乘除、问接I/O、中断调用等。

BP(BasePointer)基址指针,主要用于存放地址、基址(默认相对于SS段)等。

SP(StackPointer)堆栈指针(栈顶指针),主要用于存放栈顶地址。

SI(SourceIndex)源变址寄存器,用于存放地址、变址、串操作源变址。

DI(DestinationIndex)目的变址寄存器,用于存放地址、变址、串操作目的变址。

CS(CodeSegment)代码段寄存器(代码段),用于存放正在或正待执行的程序段的起始地址的高l6位二进制数据,即程序段的段地址。

DS(DataSegment)数据段寄存器(数据段),用于存放正在或正待处理的一般数据段的起始地址的高l6位二进制数据,即一般数据段的段地址。

ES(ExtraSegment)附加数据段寄存器(附加段),用于存放正在或正待处理的附加数据段的起始地址的高l6位二进制数据,即附加数据段的段地址。

SS(StackSegment)堆栈数据段寄存器(堆栈段),用于存放正在或正待处理的堆栈数据段的起始地址的高l6位二进制数据,即堆栈数据段的段地址。

IP(Instructionpointer)指令指针,它的内容始终是下一条待执行指令的起始偏移地址,与CS一起形成下一条待执行指令的起始物理地址。

CS:

IP的作用是控制程序的执行流程。

IP一般会自动加l(逻辑加1、实际随指令长度变化)移向下一条指令实现顺序执行;若通过指令修改CS或IP的值,则可实现程序的转移执行。

PSW(ProgramStatusword)程序状态字,它其中有三个控制标志(IF、DF、TF)和6个状态标志(SF、PF、ZF、OF、CF、AF)。

控制标志是用于控制CPU某方面操作的标志,状态标志是部分指令执行结果的标志。

5、请画出8086/88CPU的内部结构图。

答:

如下图所示:

6、请说明8086/88CPU的标志位的英文名、中文名及填充方法。

答:

IF(InterruptEnableFlag)中断允许标志,用于控制CPU能否响应可屏蔽中断请求,IF=1能够响应,IF=0不能响应。

DF(DirectionFlag)方向标志,用于指示串操作时源串的源变址和目的串的目的变址变化方向,DF----1向减的方向变化,DF=0向加的方向变化。

TF(TrapFlag)陷阱标志(单步中断标志),TF=1程序执行当前指令后暂停,TF=0程序执行当前指令后不会暂停。

SF(SignFlag)符号标志,指令执行结果的最高二进制位是0还是l,为0,则SF=0,代表正数;为l,则SF=1,代表负数。

我们一般是用十六进制数表示,则可以根据十六进制的最高位是落在O~7还是落在8~F之间,若落在0~7之间则SF=0.否则SF=1。

PF(ParityChECkFlag)奇偶校验标志,指令执行结果的低8位中1的个数是奇数个还是偶数个,若为奇数个则PF=0,若为偶数个则PF=1。

ZF(ZeroFlag)零标志,指令执行结果是不是为0,若为0则ZF=1,否则ZF=0。

OF(OverflowFlag)有符号数的溢出标志,指令执行结果是否超出有符号数的表示范围,若超过则0F=1,否则OF=0。

我们可以通过判断是否出现以下四种情况之一:

正加正得负,正减负得负,负加负得正,负减正得正。

若出现则0F=1.否则OF=0.

CF(CarryFlag)进位/借位标志无符号数的溢出标志),指令执行结果的最高位是否有向更高位进位或借位,若有则CF=1,同时也代表无符号数溢出;若无则CF=0,也代表无符号数未溢出。

AF(AuxiliaryCarryFlag)辅助进位/借位标志,低4位二进制是不是有向高位进位或借位,若有则AF=1,否则AF=0,其主要用于BCD修正运算。

7、内存分段组织的优缺点是什么?

答:

优点如下:

(1)8086/8088CPU中的寄存器只有16位,如果采用它们直接寻址,则寻址能力势必限制在64KB范围内,而采用分段组织可以较好地实现扩展CPU的寻址能力。

每段的大小可达64KB,不同段的组合则可寻址更大的范围。

(2)使程序与数据相对独立,不同存取方式的数据也相对独立。

程序:

存放于代码段CS中

堆栈方式:

存放于堆栈段SS中

数据:

随机方式:

存放于数据段DS及附加段ES中

(3)便于程序和数据的动态装配,从一个地方挪到另外一个地方只要更改一下段寄存器的值即可,段内偏移可以不用改变。

缺点:

内存地址采用分段组织增加地址计算的复杂度,降低了CPU的执行效率。

8、1MB内存最多可以有(64K)个不同的段地址,若不允许重叠的话最多可有(16)个不同的段地址。

不同的段间(可以)重叠。

9、设DS=26FCH,BX=108H,SI=9A8H,试求出使DS:

BX与ES:

Sl指向同一物理地址的ES值。

答:

即DS:

BX=ES:

SI

DS:

BX=DS×l6+BX=26FCH×16+108H=270C8H

ES:

SI=ES×16+SI=ES×16+9A8H

ES=(270C8H一9A8H)÷l6=2672H

10、接口、端口以及端口地址之间的对应关系如何?

答:

一个计算机系统内有很多接口,一个接口内一般有多个端口,一个端口可以有多个端口地址与其对应(这叫重叠地址),一个端口地址可以对应多个端口(但需要继续区分才能访问,如读写顺序、读写信号、数据位、索引区分)。

所以通过端口传输信息首先需要区分端口,区分端口可通过端口地址不同来区分。

11、访问端口有哪些方法?

答:

(1)用I/O指令实现信息传输;

(2)通过BIOS中断调用实现信息传输;(3)通过DOS中断调用实现信息传输。

12、请根据图2.3说明ADDAX,BX指令的取指及执行过程。

自己看书

13、8086/88的20位物理地址是怎样形成的?

当CS=2000H,IP=0100H,下一条待执行指令的物理地址等于多少?

答:

20位物理地址由段地址左移4位加偏移地址形成,下一条待执行指令等于CS*10H+IP得到20100H。

14、已知当前数据段位于存储器的B1000H到BF0FFH范围内,请指出DS段寄存器的取值范围。

答:

DS段寄存器的取值范围:

AF10H~B100H

第3章寻址方式及指令系统

1、指令是CPU可以理解并执行的操作命令,指令由操作码和操作数两部分组成,指令有两个级别,即机器级和汇编级。

2、请画出程序执行流程示意图。

3、指令主要有哪些分类方式及其主要类别是什么?

答:

指令分类有不同的方式。

按操作数的个数将指令分为零地址指令(无操作数)、一地址指令(只有一个操作数)、二地址指令(有两个操作数)、多地址指令(多于两个操作数);按指令级别分为机器指令和汇编指令:

按是否转移分为转移指令和顺序指令;按功能分为七大类:

传送类、算术运算类、位操作类、I/O类、串操作类、CPU控制类、转移类;按指令长度(即指令占用的字节数)分为l字节指令、2字节指令等,8086/8088指令长度是不同的,叫变字长,不同的指令有不同的指令长度,从1~6字节均有;按指令执行期间取操作数是否需要与总线打交道分为内部指令(不需)和外部指令(需要),类似功能的指令内部指令比外部指令执行速度快,所以在编程时尽量采用内部指令即多用寄存器优化程序。

4、操作数的寻址方式有哪些?

并举例说明其主要特点。

答:

操作数寻址方式主要有立即寻址方式、寄存器寻地址、存储器寻址方式、端口寻址方式4类。

(1)立即寻址方式:

操作对象是这个操作数本身,MOVAL,5

(2)寄存器寻地址:

操作对象是寄存器中的内容MOVAX,BX

(3)存储器寻址方式:

操作对象是内存地址所对应的存储单元中的内容,MOVAX[2000H]

(4)端口寻址方式:

操作数是指明端口的地址、端口地址所对应的端口中的内容是操作对象INAX,46直接寻址。

5、内存寻址中段寄存器与段内偏移地址对应关系如何?

6、设CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500H,则①下一条待执行指令的物理地址为多少?

②当前栈顶的物理地址为多少?

③[BX]代表的存储单元的物理地址为多少?

④[BP]代表的存储单元的物理地址为多少?

⑤ES:

[BX+SI]代表的存储单元的物理地址为多少?

答:

①下一条待执行指令的物理地址=CS×16+IP=1000H×16+IOOH=10100H。

②当前栈顶的物理地址=SS×16+SP=4000H×16+200H=40200H。

③[BX]代表的存储单元物理地址=DS×16+BX=2000HXl6+300H=20300H。

④[BP]代表的存储单元物理地址=SSXl6+BP=4000H×16+400H-----40400H。

⑤ES:

[BX+SI]代表的存储单元物理地址=ES×16+BX+SI=3000H×16+300H+500H=30800H

7、试根据以下要求,分别写出相应的汇编语言指令。

(1)以寄存器BX和DI作为基址变址寻址方式把存储器中的一个字送到DX寄存器。

答:

MOVDX,[BX+DI]

(2)以寄存器BX和偏移量VALUE作为寄存器相对寻址方式把存储器中的一个字和AX相加,把结果送回到那个字单元。

答:

ADDVALUE[BX],AX

(3)将1字节的立即数0B6H与以SI作为寄存器间接寻址方式的字节单元相比较。

答:

CMPBYTEPTR[SI],0B6H

(4)将BH的高4位与低4位互换。

答:

MOVCL,4

RORBH,CL;或者ROLBH,CL

(5)测试BX的第3、7、9、12、13位是否同时为0。

答:

TESTBX,3288H;0011001010001000B

(6)将存放了0~9数值的DL寄存器中的内容转化为相应的‘0’~‘9’的字符。

答:

ADDDL,30H;或者ORDL,30H

(7)将存放了‘A’~‘F’字符的AL寄存器中的内容转化为相应的数值。

答:

SUBAL,37H

8、写出清除AX寄存器的多种方法并比较(要求单指令实现)。

答:

(1)ANDAX,0;可以对AX清零,还可以清除进位位和影响到SF、ZF、PF标志位。

(2)MOVAX,0;此条指令占用3个字节。

(3)SUBAX,AX;减法指令,该条指令只占用2个字节。

(4)XORAX,AX

9、分别用存储器的5种寻址方式实现将以A为首址的第5个字(注意:

从第0个算起)送AX的指令序列。

10、指出下列指令错误的原因。

答:

(1)MOVCL,300;300超过字节数据表示范围

(2)MOVCS,AX;CS不能作为目的操作数

(3)MOVBX,DL;数据类型不匹配

(4)MOVES,1000H:

立即数不能送给段寄存器

(5)INC[BX];数据类型不明确’

(6)ADDAX,DS:

段寄存器不能参加运算

(7)TESTBX,[CX];存储器间接寻址只能使用BX、Sl、Dl、BP四个之一

(8)SUB[BX],[BP+SI];加减两个操作数不能同时为存储操作数

(9)JC[SI];条件转移只有短转移寻址方式

(10)SHLBX;少给一个表明移位次数的操作数,l或CL

11、

(1)CS=(1000)IP=(0155)

(2)CS=(1000)IP=(176F)

(3)CS=(1000)IP=(17C6)

(4)CS=(2000)IP=(0146)

(5)CS=(1000)IP=(1770)

(6)CS=(2000)IP=(0146)

12、分别说明下列各组指令中的两条指令的区别。

答:

(1)MOVAX,TABLELEAAX,TABLE

假设TABLE为字变量名,则:

左为将TABLE单元的内容送AX,右为将TABLE单元的偏移地址送AX。

假设TABLE为字节变量名,则:

左为错误指令,右为将TABLE单元的偏移地址送AX

假设TABLE为常量名,则:

左为将TABLE的内容送AX,右为错误指令

(2)ANDBL,0FHORBL,0FH

左为将BL的高4位清0,右为将BL的低4位置1

(3)JMPSHORTLlJMPNEARPTRLl

左为短转移,2字节的指令,转移范围为一l28~+127

右为近转移,l字节的指令,转移范围为--32768+32767

(4)MOVAX,BXMOVAX,[BX]

左为将BX的值送AX

右为将BX的值作为相对DS段的内存单元偏移地址,取出字单元值送AX

(5)SUBDX,CXCMPDX,CX

左为减法,并将DX-CX的值存入DX中

右为比较,做减法,但不会将DX-CX的值存入DX中

(6)MOV[BP][SI],CLMOVDS:

[BPIESI],CL

左边第~操作数默认为相对于SS段偏移的存储器操作数

右边第一操作数采用段超越,指定为相对于DS段偏移的存储器操作数

13、写出判断AL为正为负的程序段(请至少用三种方法)。

答:

方法一:

CMPAL,80H;而后用JAE代表负数转移,JB代表正数转移

方法二:

CMPAL,00H;而后用JGE代表正数转移,JL代表负数转移

方法三:

TESTAL,80H;而后用JNZ代表负数转移,JZ代表正数转移

方法四:

ORAL,AL;而后用JNS代表负数转移,JS代表正数转移

方法五:

ANDAL,AL;而后用JNS代表负数转移,JS代表正数转移

方法六:

SUBAL,00H;而后用JGE代表正数转移,JL代表负数转移

方法七:

TESTAL,80H:

而后用JNS代表正数转移,JS代表负数转移

14、思考题:

试比较以下几条指令的功能。

答:

MOVBX,SI;将SI的值送给BX

MOVBX,[SI];将SI的值作为偏移地址找到对应的内存单元中的值送给BX

MOVBX,OFFSET[SI];将Sl的值作为偏移地址找到对应内存单元的偏移地址送给BX,即SI的值送给BX

LEABX,[SI];将Sl的值作为偏移地址找到对应内存单元的偏移地址送给BX,即Sl的值送给BX

LDSBX,[SI];将Sl值作为偏移地址找到对应内存单元中的第一个字值送给BX,第二个字值送DS

LESBX,[SI]:

将SI值作为偏移地址找到对应内存单元中的第一个字值送给BX,第二个字值送ES

15、设B、D为字节变量,A、C为字变量,且A除B可能会溢出,试编写无符号数或有符号数A/B商送C,余数送D。

答:

可能会溢出则要考虑扩展数据表示能力。

;无符号数除法.;有符号数除法

MOVAL,BMOVAL,B

XORAH,AHCBW

MOVBX,AXMOVBX,AX

MOVAX,AMOVAX,A

XORDX,DX;无符号扩展CWD;有符号扩展

DIVBXIDIVBX

MOVC,AXMOVC,AX

MOVD,DLMOVD,DL

16、编写程序段实现DX、AX中32位二进制数*l0(设不溢出)。

答:

;X*10=X*8+X*2,用移位指令实现

SHLAX,1

RCLDX,1:

DX,AX=(DX,AX)*2

MOVBX,DX

MOVBP,AX;BX,BP转存2倍值

SHLAX,l

RCLDX,l;再乘2

SHLAX,l

RCLDX,1:

再乘2

ADDAX,BP

ADCDX,BX;8倍+2倍=10倍

17、请编写程序段实现如图3.33所示功能。

MOVSI,BX

LDS BX,[SI]

18、设已有定义

STRDB“Sdfikjwsmfw893040pYUIUKLHGUkjdshf8”

NEQU$-STR1

试编写实现在STR中查找是否存在非‘A’的功能程序段。

即表示STR串中大部分是‘A’,若其中存在不是‘A’的字符则查找成功,若STR全部为‘A’则不成功。

 

19、程序理解执行。

(1)MOVAH,一l;AH=FFH

MOVAL,180;AL=B4H

MOVBL,15;BL=0FH

IDⅣBL;AX/BL即:

-76/15,商-5,余数-l

程序段执行后,AX=0FFFBH。

说明:

关键是要知道谁除以谁,特别注意是有符号除还是无符号除。

(2)MOVAL,0CH;AL=0CH

ORAL,AL;AL=0CH,CF=0

SBBAL,0F0H;AL=lCH

NEGAL;AL=E4H,CF=1

ADCAL,0D4H;AL=B9H

TESTAL,35H;AL=B9H,CF=0

程序段执行后,CF=0,AL=B9H。

说明:

(1)、

(2)小题只要理解每条指令功能及对标志位的影响,逐步进行即可完成。

(3)MOVAL,08H

MOVAH,一l;AX=FF08H

MOVBX,0F8H;BX=00F8H

CMPAX,BX

程序段执行后SF⊕OF=1,CF=0。

(4)MOVAX,’中’;AX的二进制高位为1,即落在负数范围

MOVBX,’AB’;BX的二进制高位为0,即落在正数范围

CMPAX,BX

程序段执行后SF⊕OF=1,CF=0。

说明:

第(3)(4)小题实质是考查有符号数和无符号数大小的比较。

(5)MOVAX,’58’;AX=3538H

ANDAX,0F0FH;AX=0508H

AAD;AX=58=003AH

程序段执行后AX=003AH,即58。

程序段的功能是:

将两位非压缩BCD码转化为其对应的十六进制数。

说明:

可用AAD指令实现将十位和个位数值拼装还原为0~99的十六进制数。

反之将0~99的数值分离成十位和个位可用AAM指令实现,教材《汇编语言、微机原理及接口技术(第2版)》例5.10和例5.13中均有应用。

20、程序语句填空。

(1)下列是完成1~20之间的奇数累加和存于AL中的程序段:

XORAL,AL

MOVCX,10;循环次数

MOVBL,1

AGAIN:

ADDAL.BL

ADDBL,2;步长,参数改变

LOOPAGAIN

(2)下列是在串长为N的串STR中查找是否有‘M’字符的程序段:

MOVDI,SEGSTR

MOVES,DI

LEADl,STR

CLD

MOVCX,N

MOVAL,7M7

REPNESCASB;串查找核心指令

JZFOUND;转到找到分支

(3)下列是完成1位十六进制数X显示的程序段:

MOVDL,X

ANDDL,0FH

ADDDL,30H;或ORDL,30H

CMPAL,’9’

JBENEXT

ADDDL,7

NEXT:

MOVAH,02H

INT21H

(4)将DH中的二进制数看成压缩BCD码并送出显示的程序段如下:

MOVDL,DH

MOVCL,4;获取十位

SHRDL,CL

ADDDL,30H

MOVAH,2;2号功能调用显示十位

INT21H

MOVDL,DH

ANDDL,0FH;获取个位

ORDL,30H

INT21H

21、图略

22、假定AX和BX中的内容为带符号数,CX和DX的内容为无符号数,请用比较指令和转移指令实现以下条件转移:

(1)若DX的内容超过CX的内容,则转到Ll。

答:

CMPDX,CX

JALl

(2)若BX的内容大于AX的内容,则转到L2。

答:

CMPBX,AX

JGL2

(3)若DX的内容未超过CX的内容,则转到L3。

答:

CMPDX,CX

JNAL3

(4)判断BX与AX相比较是否产生溢出,若溢出则转到L4。

答:

CMPBX,AX

JOL4

(5)若BX的内容小于等于AX的内容,则转到L5。

答:

CMPBX,AX

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1