微机原理习题解答(供参考)
第1章习题和解答
15. 将下列⼗进制数分别转化为⼆进制数、⼗六进制数和BCD码。
(1)15.32=(0000 1111.0101 0001)2=(0F.51)16=(0001 0101.0011 0010)BCD
(2)325.16=(0001 0100 0101.0010 1000)2=(145.28)16=(0011 0010 0101.0001 0110)BCD
(3)68.31=(0100 0100.0100 1111)2=(44.4F)16=(0110 1000.0011 0001)BCD
(4)214.126=(1101 0110.0010 0000)2=(0D6.20)16=(0010 0001 0100.0001 0010 0110)BCD
16. 将下列⼆进制数分别转化为⼗进制数和⼗六进制数。
(1)10110101= 181=0B5H
(2)11001011= 203=0CBH
(3)10101.1001= 21.5625=15.9 H
(4) 101101.0101= 45.3125=2D.5H
17. 将下列⼗六进制数分别转化为⼆进制数、⼗进制数。
(1)FAH=1111 1010B=250
(2)12B8H=0001 0010 1011 1000B=4792
(3)5A8.62H=0101 1010 1000.0110 0010B=1448.3828125
(4)2DF.2H=0010 1101 1111.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=2D6 H;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]补=10101010B,则[1/2X]补=1/2[X]补=11010101B
(2) 设[X]补=11010100B,则[-1/4X]补=[1/4[X]补]补=[11110101]补=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对存储器的管理为什么采⽤分段的办法?
答:8086 CPU有20位地址总线,它可寻址的存储空间为1MB。⽽8086指令给出的地址编码只有16位,指令指针和变址寄存器也都是16位的,所以CPU不能直接寻址1 MB空间,为此采⽤分段管理。
5. 在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?具体说明。
答:逻辑地址=物理地址:偏移地址;
偏移地址=相对于段起始地址的距离;
offset指令是什么意思
物理地址=段地址*10H+偏移地址
6. 给定⼀个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH,求出该内存单元的物理地址。
答:物理地址=段地址*10H+偏移地址=0C00E0H+20C0H=0C21A0H
7. 8086/8088为什么采⽤地址/数据引线复⽤技术?
答:8086/8088 CPU具有40条引脚,采⽤分时复⽤地址数据总线,从⽽使8086/8088 CPU⽤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,数据变量V AL 的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址⽅式?它的物理地址是多少?
(1) MOV AX,21H ⽴即寻址物理地址⽆
(2) MOV AX,BX 寄存器寻址物理地址⽆
(3) MOV AX,[1000H] 直接寻址物理地址=2000H*10H+1000H=21000H
(4) MOV AX,V AL 直接寻址物理地址=2000H*10H+0050H=20050H
(5) MOV AX,[BX] 寄存器间接寻址物理地址=2000H*10H+0100H=20100H
(6) MOV AX,ES:[BX]寄存器间接寻址物理地址=2100H*10H+0100H=21100H
(7) MOV AX,[BP]寄存器间接寻址物理地址=1500H*10H+0010H=15010H
(8) MOV AX,[SI] 寄存器间接寻址物理地址=2000H*10H+00A0H=200A0H
(9) MOV AX,[BX+10H]相对寄存器寻址物理地址=2000H*10H+0100H+10H=20110H
(10) MOV AX ,V AL[BX] 相对寄存器寻址物理地址=2000H*10H+0100H+50H=20150H (11) MOV AX ,[BX][SI] 基址变址寻址物理地址=2000H*10H+0100H+A0H=201A0H
(12) MOV AX,V AL[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) MOV AX ,1200H ⽴即寻址 AX=1200H
(2) MOV AX ,BX 寄存器寻址 AX=0100H
(3) MOV AX ,[1200H] 直接寻址
物理地址=2000H*10H+1200H=21200H AX=0B61AH (4) MOV AX ,[BX] 寄存器间接寻址物理地址
=2000H*10H+0100H=20100H AX=5132H (5) MOV AX ,1100H[BX] 相对寄存器寻址
物理地址=2000H*10H+0100H+1100H=21200H AX=0B61AH
(6) MOV AX ,[BX][SI] 基址变址寻址
物理地址=2000H*10H+0100H+02H=20102H AX=8326H
4. 试说明指令MOV BX,10H[BX]与指令LEA BX,10H[BX]的区别
答:MOV BX,10H[BX] BX=物理地址为(DS*10H+BX+10H)2字节单元的内容
LEA BX,10H[BX] BX= BX+10H(地址)
5. 假设(DS)=3000H,(CS)=1000H,(IP)=1500H,(BX)=1000H,位移量⼤DATA=50H (31000H)=1250H,
(31050H)=2400H,(31052H)=6000H 。确定下列转移指令的转移地址
(1) JMP 2500H IP =2500H CS=1000H CS 段指令物理地址=1000H*10H+2500H=12500H (2) JMP BX IP=BX=1000H
CS=1000H CS 段指令物理地址=1000H*10H+1000H=11000H (3) JMP WORD PTR[BX] DS 段物理地址
=3000H*10H+1000H=31000H
IP=(31000H)=1250H CS=1000H: CS 段指令物理地址=1000H*10H+1250H= 11250H (4) JMP DWORD PTR[BX+DATA] DS 段物理地址=3000H*10H+1000H+50H=31050H
IP=(31050H)=2400H CS=(31052H)=6000H CS 段指令物理地址=6000H*10H+2400H=62400H
6. 设堆栈指针SP 的初值为2500H, (AX)=1234H,(BX)=5678H 。执⾏指令PUSH AX 后,(SP)=?,再执⾏指令PUSH BX 及POP AX 之后,(SP)=? (AX)=? (BX)=? PUSH AX SP=SP-2=2500H-2=24FEH
PUSH BX SP=SP-2=24FEH-2=24FCH
POP AX SP=SP+2=24FCH+2=24FEH AX=5678H BX=5678H 7. 分析下列指令的正误,对于错误的指令要说明原因并加以改正。
(1) MOV AH ,BX 错数据结构不同 MOV AX ,BX 或 MOV AH ,BL
(2) MOV [BX],[SI] 错⼆存储单元间不允许直接传送数据 MOV AX ,[SI] MOV [BX],AX (3) MOV AX ,[SI][DI] 错源区都为变址寄存器 MOV AX ,[BX][DI] 或MOV AX ,[BX][SI] (4) MOV MYDAT[BX][SI],ES :AX 错段前缀应指向存储单元MOV ES :MYDAT[BX][SI],AX (5) MOV BYTE PTR[BX],1000 错数据结构不同 MOV BYTE PTR[BX],100
(6) MOV BX ,OFFSET MAYDAT[SI] 错 MAYDAT 为符号地址 MOV BX ,OFFSET MAYDAT (7) MOV CS ,AX 错不允许给CS 赋值 MOV DS ,AX
(8) MOV DS ,BP 错赋值⽅式不对 MOV AX ,BP MOV DS ,AX
8. 设V AR1、V AR2为字变量,LAB 为标号,分析下列指令的错误之处并加以改正。 (1) ADD V AR1,V AR2 错 V AR1、V AR2为字变量(代表2个存储单元地址)
MOV AX, V AR2 ADD V AR1,AX
(2) MOV AL,V AR2 错数据结构不同MOV AX,V AR2
(3) SUB AL,V AR1 错数据结构不同SUB AX,V AR1
(4) JMP LAB[SI] 错LAB为标号地址JMP LAB
(5) JNZ V AR1 错V AR1为字变量不是标号地址JNZ LAB
9. 已知(AL)=6CH, (BL)=0A9H,执⾏指令ADD AL,BL后,AF、CF、OF、PF、SF、和ZF的值各为多少?
ADD AL,BL AL=6CH+ A9H=15H AF=1 CF=1 OF=0 PF=0 SF=0 ZF=0
10. 试判断下列程序执⾏后,(BX)=的内容。
MOV CL,5
MOV BX,01C9H BX=01C9H
ROL BX,1 BX=0392H
RCR BX,CL BX=201CH
11. 写出能够完成下列操作的8086CPU指令。
(1) 把4629H传送给AX寄存器;MOV AX, 4629H
(2) 从AX寄存器中减去3218H;SUB AX, 3218H
(3) 把BUF的偏移地址送⼊BX中。LEA BX, BUF
12. 根据以下要求写出相应的汇编语⾔指令。
(1) 把BX和DX寄存器的内容相加,结果存⼊DX寄存器中;ADD DX, BX
(2) ⽤BX和SI的基址变址寻址⽅式,把存储器中的⼀个字节与AL内容相加,并保存在AL寄存器中;
ADD AL, [BX][SI]
(3) ⽤寄存器BX和位移量21B5H的变址寻址⽅式把存储器中的⼀个字和(CX)相加,并把结果送回存储器单元中;ADD WORD PTR [BX+21B5H], CX
(4) ⽤位移量2158H的直接寻址⽅式把存储器中的⼀个字与数3160H相加,并把结果送回该存储器中;
ADD WORD PTR [2158H], 3160H
(5) 把数25H与(AL)相加,结果送回寄存器AL中。ADD AL, 25H
13. 按下列要求写出相应的指令或程序段。
(1) 使BL寄存器中的⾼、低四位互换;MOV CL, 4 ROL BL, CL
(2) 屏蔽AX寄存器中的b10和b5位;AND AX, 1111 1011 1101 1111B
(3) 分别测试AX寄存器中b13和b2位是否为1。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。