微机原理习题解答.docx

上传人:b****6 文档编号:7533958 上传时间:2023-01-24 格式:DOCX 页数:22 大小:84.72KB
下载 相关 举报
微机原理习题解答.docx_第1页
第1页 / 共22页
微机原理习题解答.docx_第2页
第2页 / 共22页
微机原理习题解答.docx_第3页
第3页 / 共22页
微机原理习题解答.docx_第4页
第4页 / 共22页
微机原理习题解答.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

微机原理习题解答.docx

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

微机原理习题解答.docx

微机原理习题解答

第1章习题和解答

15.将下列十进制数分别转化为二进制数、十六进制数和BCD码。

(1)15.32=(00001111.01010001)2=(0F.51)16=(00010101.00110010)BCD

(2)325.16=(000101000101.00101000)2=(145.28)16=(001100100101.00010110)BCD

(3)68.31=(01000100.01001111)2=(44.4F)16=(01101000.00110001)BCD

(4)214.126=(11010110.00100000)2=(0D6.20)16=(001000010100.000100100110)BCD

16.将下列二进制数分别转化为十进制数和十六进制数。

(1)10110101=181=0B5H

(2)11001011=203=0CBH

(3)10101.1001=21.5625=15.9H

(4)101101.0101=45.3125=2D.5H

17.将下列十六进制数分别转化为二进制数、十进制数。

(1)FAH=11111010B=250

(2)12B8H=0001001010111000B=4792

(3)5A8.62H=010110101000.01100010B=1448.3828125

(4)2DF.2H=001011011111.0010B=735.125

18.若X=-107,Y=+74按8位二进制可写出:

[X]补=95H,[Y]补=4AH,[X+Y]补=0DFH,[X-Y]补=4BH。

19.X=34AH,Y=8CH。

问:

有三位和两位十六进制数X和Y,

(1)若X,Y是纯数(无符号数),则:

X+Y=3D6H;X-Y=2BEH。

(2)若X,Y是有符号数,则:

X+Y=2D6H;X-Y=3BEH。

20.已知X=85,Y=76(均为十进制数),求[-85]补,[-76]补。

并利用补码的加、减法运算规则计算[X-Y]补,[-X+Y]补,[-X-Y]补。

结果的各机器数及其真值请用十六进制表示,并由运算过程中的标志位OF判断结果是否溢出。

答:

[X]补=[85]补=55H,[Y]补=[76]补=4CH,[-X]补=[-85]补=0ABH,[-Y]补=[-76]补=0B4H

[X-Y]补=[X]补+[-Y]补=55H+B4H=09H,OF=0

[-X+Y]补=[-X]补+[Y]补=ABH+4CH=0F7H,OF=0

[-X-Y]补=[-X]补+[-Y]补=ABH+B4H=5FH,OF=1

21.

(1)设[X]补=则[1/2X]补=1/2[X]补

(2)设[X]补=则[-1/4X]补=[1/4[X]补]补补=00001011B

第2章习题和解答

1.8086是多少位的微处理器?

为什么?

答:

8086是高性能的第三代微处理器,是Intel系列的16位微处理器。

2.EU与BIU各自的功能是什么?

如何协同工作?

答:

EU其主要功能是执行命令。

BIU其主要功能是负责完成CPU与存储器或I/O设备之间的数据传送。

总线接口部件BIU和执行部件EU并不是同步工作的,两者的动作管理遵循如下原则:

每当8086的指令队列中有2个空字节,BIU就会自动把指令取到指令队列中。

而同时EU从指令队列取出一条指令,并用几个时钟周期去分析、执行指令。

当指令队列已满,而且EU对BIU又无总线访问请求时,BIU便进入空闲状态。

3.8086/8088微处理器内部有那些寄存器,它们的主要作用是什么?

答:

8086CPU内有14个16位的寄存器。

其中有4个16位通用寄存器AX、BX、CX、DX,2个16位指针寄存器SP、BP,2个16位变址寄存器SI、DI,4个16位段寄存器CS、DS、SS、ES,1个16位指令指针寄存器IP及1个16位标志寄存器FLAGS。

寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。

4.8086对存储器的管理为什么采用分段的办法?

答:

8086CPU有20位地址总线,它可寻址的存储空间为1MB。

而8086指令给出的地址编码只有16位,指令指针和变址寄存器也都是16位的,所以CPU不能直接寻址1MB空间,为此采用分段管理。

5.在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?

具体说明。

答:

逻辑地址=物理地址:

偏移地址;

偏移地址=相对于段起始地址的距离;

物理地址=段地址*10H+偏移地址

6.给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH,求出该内存单元的物理地址。

答:

物理地址=段地址*10H+偏移地址=0C00E0H+20C0H=0C21A0H

7.8086/8088为什么采用地址/数据引线复用技术?

答:

8086/8088CPU具有40条引脚,采用分时复用地址数据总线,从而使8086/8088CPU用40条引脚实现20位地址、16位数据、控制信号及状态信号的传输。

8.8086与8088的主要区别是什么?

答:

8086有16位数据线,8088有8位数据线。

9.怎样确定8086的最大或最小工作模式?

答:

8088/8086CPU的引脚固定接+5V时,CPU处于最小模式下,引脚固定接地时,CPU处于最大模式下。

10.8086被复位以后,有关寄存器的状态是什么?

微处理器从何处开始执行程序?

答:

复位信号输入之后,CPU结束当前操作,并对处理器的标志寄存器、IP、DS、SS、ES寄存器及指令队列进行清零操作,而将CS设置为0FFFFH。

11.8086基本总线周期是如何组成的?

各状态中完成什么基本操作?

答:

一个基本的总线周期由4个T状态组成,我们分别称为T1-T44个状态,在每个T状态下,CPU完成不同的动作。

T1状态:

根据IO/M确定对存贮器或I/O操作,20位地址A0~A19信号有效,地址锁存信号ALE有效,给出DT/R信号控制8286数据传输方向。

T2状态:

高四位地址/状态线送出状态信息S3~S6,低16位地址/数据线浮空,为下面传送数据准备;WR或RD有效,表示要对存贮器/I/O端口进行读或写;有效,使得总线收发器(驱动器)可以传输数据。

T3状态:

从存贮器或者I/O端口读出的数据送上数据总线(通过)。

Tw状态:

若存贮器或外设速度较慢,不能及时送上数据的话,则通过READY线通知CPU,CPU在的前沿(即结束末的下降沿)检测READY,若发现READY=0,则在结束后自动插入1个或几个,并在每个的前沿处检测READY,等到READY变高后,则自动脱离进入。

T4状态:

在与(或)的交界处(下降沿),采集数据,使各控制及状态线进入无效。

13.8086中断分哪两类?

8086可处理多少种中断?

答:

中断共分为两类:

硬件中断和软件中断,8086可处理256种中断。

14.8086可屏蔽中断请求输入线是什么?

“可屏蔽”的涵义是什么?

答:

硬件中断又可分为两类:

可屏蔽中断和不可屏蔽中断。

不可屏蔽中断:

由NMI引脚引入,它不受中断允许标志IF的影响,每个系统中仅允许有一个,都是用来处理紧急情况的,如掉电处理。

这种中断一旦发生,系统会立即响应;可屏蔽中断:

由INTR引脚引入,它受中断允许标志IF的影响,也就是说,只有当IF=1时,可屏蔽中断才能进入,反之则不允许进入。

15.中断向量表的功能是什么?

已知中断类型码分别是84H和0FAH,它们的中断向量应放在中断向量表的什么位置?

答:

中断向量表存放的是各中断程序的入口地址即16位偏移地址和16位段地址,只要给出中断类型码,可以算出中断程序在中断向量表的什么位置:

中断向量表地址=中断类型码*4

中断向量表地址1=84H*4=210H

中断向量表地址2=0FAH*4=3E8H

第3章习题和解答

1.简要分析8086的指令格式由哪些部分组成,什么是操作码?

什么是操作数?

寻址和寻址方式的含义是什么?

8086指令系统有哪些寻址方式?

答:

指令由操作码和操作数两部分组成,操作码表示计算机执行某种指令功能,操作数表示操作中所需要的数据或者数据所在存储单元的地址。

寻址方式是寻找操作数或操作数地址的方式。

8086提供了七种寻址方式:

立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、相对寄存器寻址、基址变址寻址和相对基址变址寻址方式。

2.设(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?

它的物理地址是多少?

(1)MOVAX,21H立即寻址物理地址无

(2)MOVAX,BX寄存器寻址物理地址无

(3)MOVAX,[1000H]直接寻址物理地址=2000H*10H+1000H=21000H

(4)MOVAX,VAL直接寻址物理地址=2000H*10H+0050H=20050H

(5)MOVAX,[BX]寄存器间接寻址物理地址=2000H*10H+0100H=20100H

(6)MOVAX,ES:

[BX]寄存器间接寻址物理地址=2100H*10H+0100H=21100H

(7)MOVAX,[BP]寄存器间接寻址物理地址=1500H*10H+0010H=15010H

(8)MOVAX,[SI]寄存器间接寻址物理地址=2000H*10H+00A0H=200A0H

(9)MOVAX,[BX+10H]相对寄存器寻址物理地址=2000H*10H+0100H+10H=20110H

(10)MOVAX,VAL[BX]相对寄存器寻址物理地址=2000H*10H+0100H+50H=20150H

(11)MOVAX,[BX][SI]基址变址寻址物理地址=2000H*10H+0100H+A0H=201A0H

(12)MOVAX,VAL[BX][SI]相对基址变址寻址物理地址=2000H*10H+0100H+A0H+50H=201F0H

3.给定寄存器及存储单元的内容为:

(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=32H,(20101)=51H,(20102)=26H,(20103)=83H,(21200)=1AH,(21201)=B6H,(21202)=D1H,(21203)=29H。

试说明下列各条指令执行完后,AX寄存器中保存的内容是什么。

(1)MOVAX,1200H立即寻址AX=1200H

(2)MOVAX,BX寄存器寻址AX=0100H

(3)MOVAX,[1200H]直接寻址

物理地址=2000H*10H+1200H=21200HAX=0B61AH

(4)MOVAX,[BX]寄存器间接寻址

物理地址=2000H*10H+0100H=20100HAX=5132H

(5)MOVAX,1100H[BX]相对寄存器寻址

物理地址=2000H*10H+0100H+1100H=21200HAX=0B61AH

(6)MOVAX,[BX][SI]基址变址寻址

物理地址=2000H*10H+0100H+02H=20102HAX=8326H

4.试说明指令MOVBX,10H[BX]与指令LEABX,10H[BX]的区别

答:

MOVBX,10H[BX]BX=物理地址为(DS*10H+BX+10H)2字节单元的内容

LEABX,10H[BX]BX=BX+10H(地址)

5.假设(DS)=3000H,(CS)=1000H,(IP)=1500H,(BX)=1000H,位移量大DATA=50H(31000H)=1250H,

(31050H)=2400H,(31052H)=6000H。

确定下列转移指令的转移地址

(1)JMP2500HIP=2500HCS=1000HCS段指令物理地址=1000H*10H+2500H=12500H

(2)JMPBXIP=BX=1000HCS=1000HCS段指令物理地址=1000H*10H+1000H=11000H

(3)JMPWORDPTR[BX]DS段物理地址=3000H*10H+1000H=31000H

IP=(31000H)=1250HCS=1000H:

CS段指令物理地址=1000H*10H+1250H=11250H

(4)JMPDWORDPTR[BX+DATA]DS段物理地址=3000H*10H+1000H+50H=31050H

IP=(31050H)=2400HCS=(31052H)=6000HCS段指令物理地址=6000H*10H+2400H=62400H

6.设堆栈指针SP的初值为2500H,(AX)=1234H,(BX)=5678H。

执行指令PUSHAX后,(SP)=?

再执行指令PUSHBX及POPAX之后,(SP)=?

(AX)=?

(BX)=?

PUSHAXSP=SP-2=2500H-2=24FEH

PUSHBXSP=SP-2=24FEH-2=24FCH

POPAXSP=SP+2=24FCH+2=24FEHAX=5678HBX=5678H

7.分析下列指令的正误,对于错误的指令要说明原因并加以改正。

(1)MOVAH,BX错数据结构不同MOVAX,BX或MOVAH,BL

(2)MOV[BX],[SI]错二存储单元间不允许直接传送数据MOVAX,[SI]MOV[BX],AX

(3)MOVAX,[SI][DI]错源区都为变址寄存器MOVAX,[BX][DI]或MOVAX,[BX][SI]

(4)MOVMYDAT[BX][SI],ES:

AX错段前缀应指向存储单元MOVES:

MYDAT[BX][SI],AX

(5)MOVBYTEPTR[BX],1000错数据结构不同MOVBYTEPTR[BX],100

(6)MOVBX,OFFSETMAYDAT[SI]错MAYDAT为符号地址MOVBX,OFFSETMAYDAT

(7)MOVCS,AX错不允许给CS赋值MOVDS,AX

(8)MOVDS,BP错赋值方式不对MOVAX,BPMOVDS,AX

8.设VAR1、VAR2为字变量,LAB为标号,分析下列指令的错误之处并加以改正。

(1)ADDVAR1,VAR2错VAR1、VAR2为字变量(代表2个存储单元地址)

MOVAX,VAR2ADDVAR1,AX

(2)MOVAL,VAR2错数据结构不同MOVAX,VAR2

(3)SUBAL,VAR1错数据结构不同SUBAX,VAR1

(4)JMPLAB[SI]错LAB为标号地址JMPLAB

(5)JNZVAR1错VAR1为字变量不是标号地址JNZLAB

9.已知(AL)=6CH,(BL)=0A9H,执行指令ADDAL,BL后,AF、CF、OF、PF、SF、和ZF的值各为多少?

ADDAL,BLAL=6CH+A9H=15HAF=1CF=1OF=0PF=0SF=0ZF=0

10.试判断下列程序执行后,(BX)=的内容。

MOVCL,5

MOVBX,01C9HBX=01C9H

ROLBX,1BX=0392H

RCRBX,CLBX=201CH

11.写出能够完成下列操作的8086CPU指令。

(1)把4629H传送给AX寄存器;MOVAX,4629H

(2)从AX寄存器中减去3218H;SUBAX,3218H

(3)把BUF的偏移地址送入BX中。

LEABX,BUF

12.根据以下要求写出相应的汇编语言指令。

(1)把BX和DX寄存器的内容相加,结果存入DX寄存器中;ADDDX,BX

(2)用BX和SI的基址变址寻址方式,把存储器中的一个字节与AL内容相加,并保存在AL寄存器中;

ADDAL,[BX][SI]

(3)用寄存器BX和位移量21B5H的变址寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器单元中;ADDWORDPTR[BX+21B5H],CX

(4)用位移量2158H的直接寻址方式把存储器中的一个字与数3160H相加,并把结果送回该存储器中;

ADDWORDPTR[2158H],3160H

(5)把数25H与(AL)相加,结果送回寄存器AL中。

ADDAL,25H

13.按下列要求写出相应的指令或程序段。

(1)使BL寄存器中的高、低四位互换;MOVCL,4ROLBL,CL

(2)屏蔽AX寄存器中的b10和b5位;ANDAX,1111101111011111B

(3)分别测试AX寄存器中b13和b2位是否为1。

TESTAX,0000000000000100B测试AX寄存器中b2位是否为1

TESTAX,0010000000000000B测试AX寄存器中b13位是否为1

14.执行以下两条指令后,标志寄存器FLAGS的六个状态为各为何值?

MOVAX,95C8H

ADDAX,8379HAX=1941HAF=1CF=1OF=1PF=1SF=0ZF=0

15.若(AL)=85H,(BL)=11H,在分别执行指令MUL和IMUL后,其结果是多少?

MULBLAL*BL=85H*11H=133*17=2261?

AX=08D5H(无符号数相乘)

IMULBLAL*BL=-7BH*11H=(-123)*17=-2091?

AX=0F7D5H(有符号数相乘)

第4章习题和解答

1.请分别用DB、DW、DD伪指令写出在DATA开始的连续8个单元中依次存放数据11H、22H、33H、44H、55H、66H、77H、88H的数据定义语句。

DATADB11H,22H,33H,44H,55H,66H,77H,88H

DATADW1122H,3344H,5566H,7788H

2.若程序的数据段定义如下,写出各指令语句独立执行后的结果:

DSEGSEGMENT

DATA1DB10H,20H,30H;3个字节(数据为10H,20H,30H),地址0000H-0002H

DATA2DW10DUP(?

);20个字节(数据全为未知数),地址0003H-0016H

STRINGDB‘123’;3个字节(数据为31H,32H,33H),地址0017H-0019H

DSEGENDS

(1)MOVAL,DATA1AL=10H

(2)MOVBX,OFFSETDATA2BX=0003H

(3)LEASI,STRINGSI=0017H

ADDBX,SIBX=001AH

MOVAL,[SI+2]AL=33H

3.试编写求两个无符号双字长数之和的程序。

两数分别在MEM1和MEM2单元中,和放在SUM单元。

DATASSEGMENT

MEM2DD9876A432H

SUMDD?

DATASENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS

MOVDS,AX;取定义的DS段的段地址?

DS

LEABX,MEM1;取MEM1偏移地址BX=0000H

LEASI,MEM2;取MEM2偏移地址SI=0004H

LEADI,SUM;取SUM偏移地址DI=0008H

MOVAX,WORDPTR[BX];将[0000H]地址的内容9678H?

AX=9678H

ADDAX,WORDPTR[SI];AX+[0004H]地址的内容A432H?

AX=3AAAH,有进位CF=1

MOVWORDPTR[DI],AX;将AX的内容?

偏移地址DI=0008H字单元中

INCBX;BX=BX+1=0001H

INCBX;BX=BX+1=0002H

INCSI;SI=SI+1=0005H

INCSI;SI=SI+1=0006H

INCDI;DI=DI+1=0009H

INCDI;DI=DI+1=000AH

MOVAX,WORDPTR[BX];将[0002H]地址的内容8234H?

AX=8234H

ADCAX,WORDPTR[SI];AX+[0006H]地址的内容9876H+CF?

AX=1AABH,有进位CF=1

MOVWORDPTR[DI],AX;将AX的内容?

偏移地址DI=000AH字单元中

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

4.试编写程序,测试AL寄存器的第4位是否为0?

TESTAL,00001000B

JZLP

5.编写程序,将BUFFER中的一个8位二进制数转换为ASCII码,并按位数高低顺序存放在ANSWER开始的内存单元中。

DATASEGMENT

BUFFERDB3CH

ANSWERDB?

?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,BUFFER;AL=3CH

MOVCL,4

SHRAL,CL;将AL内容右移4位AL=03H,先取高四位3

CMPAL,9;

JGLP1;若AL内容大于9,说明AL内容在A-F之间

ADDAL,30H;否则AL内容小于9,将AL内容转换为ASCII码即AL+30H->AL

JMPLP2

LP1:

ADDAL,37H;将AL内容转换为ASCII码即AL+37H->AL(如0CH+37H=43H大写C的ASCII码)

LP2:

MOVANSWER,AL;将结果存入ANSWER第一个单元

MOVAL,BUFFER;AL=3CH

ANDAL,0FH;取AL内容低四位C

CMPAL,9;

JGLP3;若AL内容大于9,说明AL内容在A-F之间

ADDAL,30H;否则AL内容小于9

JMPLP4;将AL内容转换为ASCII码即AL+30H->AL

LP3:

ADDAL,37H;将AL内容转换为ASCII码

LP4:

MOVANSWER+1,AL;将结果存入ANSWER第二个单元

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6.假设数据项定义如下:

DATA1DB‘HELLO!

GOODMORNING!

DATA2DB20DUP(?

用串操作

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

当前位置:首页 > 求职职场 > 简历

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

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