微机原理第三章习题参考答案
- 格式:doc
- 大小:35.50 KB
- 文档页数:4
第三章3-1选择题1、MOVX A,@DPTR指令中源操作数的寻址方式是(B)(A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址2.ORG 0003HLJMP 2000HORG 000BHLJMP 3000H 当CPU响应外部中断0后,PC的值是(B)(A)0003H (B)2000H (C)000BH (D)3000H3.执行PUSH ACC指令,MCS-51完成的操作是(A)(A)SP+1 SP (ACC)(SP)(B)(ACC)(SP)SP-1 SP(B)(C)SP-1 SP (ACC)(SP) (D)(ACC)(SP)SP+1 SP4、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D)(C)2000H (B)2001H (C)2002H (D)2003H5、51执行完MOV A,#08H后,PSW的一位被置位(D)(A)(A)C (B)F0 (C)OV (D)P6、下面条指令将MCS-51的工作寄存器置成3区(B)(A)MOV PSW,#13H (B)MOV PSW,#18H(B)SETB PSW.4 CLR PSW.3 (d) SETB PSW.3 CLR PSW.47、执行MOVX A,DPTR指令时,MCS-51产生的控制信号是(C)(D)/PSEN (B)ALE (C)/RD (D)/WR8、MOV C,#00H的寻址方式是(A)(A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址9、ORG 0000HAJMP 0040HORG 0040HMOV SP,#00H当执行完左边的程序后,PC的值是(C)(A)0040H (B)0041H (C)0042H (D)0043H10、对程序存储器的读操作,只能使用(D)(A)MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令3-2判断题。
4.MCS-51的相对转移指令最大负跳距是127B。
微机原理课后习题答案第3章 80X86指令系统习题与思考题1. 指出下列各指令中源操作数和⽬的操作数的寻址⽅式:⑴ MOV BX,WORD PTR[2200H] ⑵ AAA⑶ JUM 2200H ⑷ LES DI,[2100H]⑸ MOV [BX+SI+8], BX解答⑴ MOV BX, WORD PTR[2200H]源操作数:直接寻址;⽬的操作数:寄存器寻址⑵ AAA源操作数:寄存器寻址AL(也称隐含寻址);⽬的操作数:寄存器寻址⑶ JUM 2200H程序转移段内直接寻址⽅式⑷ LES DI,[2100H]源操作数:直接寻址;⽬的操作数:寄存器寻址⑸ MOV [BX+SI+8], BX源操作数:寄存器寻址;⽬的操作数:基址加变址寻址2. 若AX=0ABCDH,BX=7F8FH,CF=1。
求分别执⾏8086 CPU指令⑴ ADD AX,BX ⑵ ADC AX,BX⑶ SBB AX,BX ⑷ NEG AX⑸ AND AX,BX ⑹ OR AX,BX⑺ XOR AX, BX ⑻ IMUL BL后,AX寄存器中的内容,并指出标志寄存器SF,ZF,AF,PF,CF及OF的状态。
解答⑴ AX=2B5CH, SZAPCO=001110B⑵ AX=2B5DH, SZAPCO=001010B⑶ AX=2C3DH, SZAPCO=001001B⑷ AX=5433H, SZAPCO=001110B⑸ AX=2B8DH, SZAPCO=00X100B⑹ AX=FFCFH, SZAPCO=10X100B⑺ AX=D222H, SZAPCO=10X100B⑻ AX=3283H, SZAPCO=XXXX11B3. 若AL=78H,BL=87H,DAA之后,AL=?、标志AF=?、CF=?⑵若执⾏指令 SUB AL,BL与DAS后,AL=?、标志AF=?、CF=?解答⑴ AL=65H, AF=1, CF=1。
⑵ AL=91H, AF=0, CF=1。
3.1 简要分析8086的指令格式由哪些部分组成,什么是操作码?什么是操作数?寻址和寻址方式的含义是什么?8086指令系统有哪些寻址方式?【解答】8086的指令格式由操作码和操作数字段组成。
操作码:要完成的操作。
操作数:参与操作的对象。
寻址:寻找操作数或操作数地址的过程。
寻址方式:指令中给出的找到操作数或操作数地址采用的方式。
8086指令系统的寻址方式主要有立即数寻址、寄存器寻址、存储器寻址和I/O端口寻址。
其中,存储器寻址可进一步分为直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址;I/O端口指令IN和OUT使用的端口寻址方式有直接寻址和间接寻址。
3.2 设(DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?(1) MOV AX,21H (2) MOV AX,BX (3) MOV AX,[1000H](4) MOV AX,VAL (5) MOV AX,[BX] (6) MOV AX,ES:[BX](7) MOV AX,[BP] (8) MOV AX,[SI] (9) MOV AX,[BX+10](10) MOV AX,VAL[BX] (11) MOV AX,[BX][SI] (12) MOV AX,VAL[BX][SI]【解答】(1)MOV AX,21H立即寻址,源操作数直接放在指令中(2)MOV AX,BX寄存器寻址,源操作数放在寄存器BX中(3)MOV AX,[1000H]直接寻址,EA = 1000H,PA =(DS)×10H+EA = 2000H×10H+1000H = 21000H(4)MOV AX,VAL直接寻址,EA = [V AL] = 0050H,PA =(DS)×10H+EA = 2000H×10H+0050H = 20050H(5)MOV AX,[BX]寄存器间接寻址,EA =(BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H(6)MOV AX,ES:[BX]寄存器间接寻址,EA =(BX)= 0100H,PA =(ES)×10H+EA = 2100H×10H+0100H = 21100H(7)MOV AX,[BP]寄存器间接寻址,EA =(BP)= 0010H,PA =(SS)×10H+EA = 1500H×10H+0010H = 15010H(8)MOV AX,[SI]寄存器间接寻址,EA =(SI)= 00A0H,PA =(DS)×10H+EA = 2000H×10H+00A0H = 200A0H(9)MOV AX,[BX+10]相对寄存器寻址,EA =(BX)+10D = 0100H+000AH= 010AH,PA =(DS)×10H+EA = 2000H×10H+010AH = 2010AH(10)MOV AX,VAL[BX]相对寄存器寻址,EA =(BX)+[V AL]= 0100H+0050H= 0150H,PA =(DS)×10H+EA = 2000H×10H+0150H = 20150H(11)MOV AX,[BX][SI]基址变址寻址,EA = (BX)+(SI)= 0100H+00A0H = 01A0H,PA = (DS)×10H +EA = 2000H×10H+01A0H = 201A0H(12)MOV AX,VAL[BX][SI]相对基址变址寻址,EA = (BX)+(SI)+[V AL]= 0100H+00A0H+0050H = 01F0H,PA =(DS)×10H+EA = 2000H×10H+01F0H = 201F0H3.3 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) = 32H,(20101) = 51H,(20102) = 26H,(20103) = 83H,(21200) = 1AH,(21201) = B6H,(21202) = D1H,(21203) = 29H。
第三章2、对于下列存储容量的存储器芯片⑴Intel 2114(1K×4bit)⑵Intel 2167(16K×1bit)⑶Zilog 6132(4K×8bit)各需要多少条地址线寻址?需要多少条数据线?若要组成64K×8bit的存储器,选同一芯片各需要几片?答:存储器芯片的存储容量=存储单元个数×每个存储单元存放的二进制信息位数。
存储单元个数决定了存储器芯片的地址线条数,地址线条数N=㏒2(存储单元个数),每个存储单元存放的二进制信息位数决定了存储器芯片的数据线条数,数据线条数M=每个存储单元存放的二进制信息位数。
∴⑴Intel 2114(1K×4bit)芯片,需要N=㏒2(210)=10条地址线寻址,需要M=4条数据线。
⑵Intel 2167(16K×1bit)芯片,需要N=㏒2(214)=14条地址线寻址,需要M=1条数据线。
⑶Zilog 6132(4K×8bit)芯片,需要N=㏒2(212)=12条地址线寻址,需要M=8条数据线。
若要组成64K×8bit的存储器,选上述同一芯片,则:⑴选Intel 2114(1K×4bit)芯片,需要64K×8bit÷(1K×4bit)=64×2 =128片;即位扩展需2片一组,字扩展需64组,共需128片。
⑵选Intel 2167(16K×1bit)芯片,需要64K×8bit÷(16K×1bit)=4×8 =32片;即位扩展需8片一组,字扩展需4组,共需32片。
⑶选Zilog 6132(4K×8bit)芯片,需要64K×8bit÷(4K×8bit)=16×1 =16片;即不需位扩展,字扩展需16组,共需16片。
3、用16K×4bit的SRAM芯片组成64K×8bit的存储器,要求画出该存储器组成的逻辑框图。
第3章指令系统习题解答1. 若DS=3000H,BP=2000H,SI=1000H,[32000H]=00H,[32001H]=40H,SS=3000H,[31000H]=20H,[31001H]=60H,[33000H]=50H,[33001H]=60H,说明下列各条指令执行后,AX中的内容是什么?并说明各条指令中源操作数的寻址方式。
(1) MOV AX,DS (2) MOV AX,[2000H](3) MOV AX,[SI] (4) MOV AX,[BP](5) MOV AX,[BP+SI]【解】(1)AX=3000H 寄存器寻址(2)AX=4000H 直接寻址(3)AX=6020H 寄存器间接寻址(4)AX=4000H 寄存器间接寻址(5)AX=6020H 基址加变址寻址2. 指出下列指令中的非法指令。
(1) MOV BX,AL (2) MOV CS,2000H(3) PUSH 4567H (4) XCHG VAR1,VAR2(5) ADD AL,148H (6) MOV DS,2000H(7) MOV BH,SI (8) SUB 38H,AL【解】非法指令:(1) MOV BX,AL BX和AL的长度不一致(2) MOV CS,2000H CS段寄存器不能作目的操作数(3) PUSH 4567H 只能将寄存器或存储单元的内容压入堆栈,不能是立即数(4) XCHG VAR1,V AR2 两个存储单元之间不能直接交换数据(5) ADD AL,148H 运算溢出(6) MOV DS,2000H 立即数不能直接传送给DS段寄存器(7) MOV BH,SI BH和SI的长度不一致(8) SUB 38H,AL 目的操作数不能是立即数3. 若SP=2000H,AX=3355H,BX=4466H,试指出下列指令或程序段执行后有关寄存器的内容。
(1) PUSH AX执行后AX=?,SP=?(2) PUSH AXPUSH BXPOP DXPOP CX执行后AX=?,CX=?,DX=?,SP=?【解】(1) 执行后AX=3355H,SP=1FFEH(2) 执行后AX=3355H,CX=3355H,DX=4466H,SP=2000H4. 请按下面的要求写出相应的汇编指令或指令序列。
3-5(1)源操作数为立即寻址方式;目标操作数为寄存器寻址方式(2)源操作数为基址寻址方式;目标操作数为寄存器寻址方式EA=BX+DISP PA=DS×16+BX+DISP(3)源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方式EA=SI PA=DS×16+SI(4)源操作数为基址加变址寻址方式;目标操作数为寄存器寻址方式EA=BX+SI PA=DS×16+BX+SI(5)源操作数、目标操作数都为寄存器寻址方式(6)源操作数为基址寻址方式;目标操作数为寄存器寻址方式EA=BX+10H PA=DS×16+BX+10H(7)源操作数为寄存器间接寻址方式;目标操作数为寄存器寻址方式EA=BX PA=ES×16+BX(8)源操作数为带位移量基址加变址寻址方式;目标操作数为寄存器寻址方式EA=BX+SI+20H PA=DS×16+BX+SI+20H(9)源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方法EA=BP PA=SS×16+BP(10)源操作数为寄存器寻址方式3-6(1)源操作数为寄存器寻址方式(2)源操作数为基址加变址寻址方式(3)源操作数为基址加比例变址寻址方式(4)源操作数为比例变址寻址方式3-7(1)有错。
没有两个基址寄存器相加的寻址方式(2)有错。
两个操作数不能同时为存储器(3)有错。
立即数不能直接送到段寄存器(4)有错。
段寄存器CS不能作为目标操作数(5)有错。
目标操作数不能为立即数(6)正确。
(7)有错。
两段寄存器间不能传送数据(8)有错。
不能直接用“3”表示移3位(9)有错。
NOT指令中只有一个目标操作数(10)正确。
(11)有错。
源操作数不能为立即数(12)有错。
格式为IN AL, I/O端口地址,且100H>255,应放在DX中,DX在指令中出现(13)有错。
源操作数应为存储器操作数(14)有错。
第三章课后题答案注:存储单元或寄存器名用“()”,表示存储单元或寄存器的内容寄存器名用“[]”,表示寄存器内容为一个内存单元的地址习题答案:1、指出指令中源操作数的寻址方式1)立即数寻址2)直接寻址3)寄存器间接寻址4)寄存器相对寻址5)寄存器寻址6)基址变址相对寻址7)寄存器寻址8)段内间接寻址9)端口间接寻址10)寄存器相对寻址11)立即数寻址12)立即数寻址2、指令是否正确,若不正确说明原因1)错误,立即数不能直接传送到段寄存器,可以用MOV AX,0100H MOVDS,AX两条指令实现2)错误,数据类型不匹配源操作数字节操作,目的操作数字操作数3)正确4)错误,端口地址>0FFH时,必须使用端口间接寻址方式。
可以用下两条指令实现:MOV DX,310H OUT DX,AL5)正确6)正确7)错误,没有同时用两个变址寄存器寻址内存单元的指令。
8)正确允许段超越9)错误,数据类型不匹配10)错误,BP不能作为间址寄存器11)正确12)错误,立即数不能作为目的操作数13)错误,堆栈指令不能用立即数14)错误,不能在两个内存单元之间直接用MOV指令传送数据。
15)错误,数据类型不匹配16)正确17)错误,CS段寄存器不能做目的操作数18)错误,没有指明操作数类型是字还是字节19)错误,端口间接寻址时,间址寄存器只能是DX不能是其它寄存器20)错误,移位指令和循环指令当操作次数大于1时,只能用CL存储操作次数。
21)错误,交换指令中不能用段寄存器22)错误,堆栈操作只能是字类型3、写出物理地址的计算表达式1)PA= (DS) * 10H + (DI)2)PA= (DS) * 10H + (BX) + (SI)3)PA= (DS) * 10H + (BX) + (DI) +54)PA= (ES) * 10H + (BX)5)PA= (DS) * 10H + 1000H6)PA= (DS) * 10H + (BX)+(DI)+2000H7)PA= (SS) * 10H + (BP)+(SI)8)PA= (DS) * 10H + (DI)4、计算物理地址1)PA= (DS) * 10H + (BX)=30000H+2000H=32000H2)PA= (DS) * 10H + (BX)+(SI)+1000H=30000H+2000H+0100H+1000H=33100H3)PA= (DS) * 10H + (BX)+(SI)=32100H4)PA= (ES) * 10H + (BX)=40000H+2000H=42000H5、代码段可寻址的空间范围:0E0000H~0EFFFFH6、(SP)=1FFEH,(AX)=5000H, (BX)=5000H7、两条指令的相同点:同为减法指令,均执行(AX)-09H操作;不同点:SUB指令有返回结果,而CMP指令没有返回结果。
第三章习题答案一、单选题1.8086是高性能的第三代微处理器,是Intel系列的 B 位微处理器。
A.8 B.16 C.32 D.642.8086有20根地址线,可以寻址到的内存空间能达到 B 字节。
A.1K B.1M C.1G D.1T3.80486的内部所有部件都连接在 A 上,并通过 B 交换数据A.内部总线B.数据总线C.地址总线D.外部总线4. C 的任务就是在内部控制总线信号的控制下,把内部数据总线上的数据送上外部地址总线,或与外部数据总线的某些位交换数据,并产生相应的外部控制信号。
A.高速缓存部件B.代码预取部件C.总线接口部件D.指令译码部件5.在指令流水线技术中,预取指令部件一次可以从内部Cache取 C 字节的指令代码,送预取指令队列等候执行。
A.4 B.8 C.16 D.326.当存储器的读出时间大于CPU要求的时间时,为了保证CPU与存储器的周期配合,就要利用一个READY信号,使CPU插入一个 D 状态。
A.T1B.T2C.T3D.Tw7.指令队列的作用是 D 。
A.暂存操作数地址B.暂存操作数C.暂存指令地址D.暂存预取指令8.在80486微处理器中设置有4个系统地址寄存器,用来在保护方式下管理4个系统表。
其中用来存放全局描述符表的是 A 。
A.全局描述符表寄存器B.中断描述符表寄存器C.局部描述符表寄存器D.任务状态寄存器9.段寄存器和 D 一起为操作系统完成内存管理、多任务环境、任务保护提供硬件支持。
A.调试寄存器B.系统地址寄存器C.标志寄存器D.指令指针寄存器10. B 为中断允许标志。
该位置为1时,允许响应外部可屏蔽中断(INTR);该位置为0时,禁止响应外部可屏蔽中断。
A.OF B.IF C.DF D.ZF二、判断题1.8086的内部结构由总线接口部件BIU和执行部件EU两部分组成。
(T )2.总线实际上是一组导线,是各种公共信号线的集合,用于作为微型计算机中所有各组成部分传输信息共同使用的“公路”。
第三章习题集二.选择题(每小题1分,共15分)1. 逻辑地址1000:2000对应的物理地址为( B )。
A、1200HB、12000HC、2100HD、21000H2. 下面哪个寄存器使用时的默认段寄存器为SS( C )。
A、AXB、BXC、SPD、SI3. 当使用BP寄存器作基址寻址时,若无指定段替换,则内定在( B )段内寻址。
A.程序B.堆栈C.数据D.附加4.在下面四组寄存器中,第 D 组都可用于对存储器间接寻址方式的寄存器。
A. AX,BX,CX,IP;B. BX,SP,DX,SIC. IP,SP,BP,AXD. BP,BX,SI,DI5. 含有立即数的指令中,该立即数被存放在 A 。
A. 累加器中B. 指令操作码后的内存单元中C. 指令操作码前的内存单元中D. 由该立即数所指定的内存单元中6. 用段基值及偏移量来指明内存单元地址的方式称为( C )。
A、有效地址B、物理地址C、逻辑地址D、相对地址7. 已知物理地址为0FFFF0H,且段内偏移量为0B800H,若对应的段基地址放在DS中,则DS=( B )。
A、0FFFFHB、0F47FHC、2032HD、0F000H8. 含有立即数的指令中,该立即数被存放在 B 。
A. 累加器中B. 指令操作码后的内存单元中C. 指令操作码前的内存单元中D. 由该立即数所指定的内存单元中9.寄存器间接寻址方式中,操作数在 C 中。
A. 通用寄存器B. 堆栈C. 存储单元D. 段寄存器10.下列指令中,有语法错误的指令是(B D)。
A. MOV AX,[1000H]B. LEA AL,1000HC. MOV [1000H],ALD. MOV 1000H,AX11. 下列指令语法有错的是:CA. MOV AX,1000HB. MOV AX,BXC. MOV [AX],[1000H]D. MOV AX,[1000H]12. 8086/8088中除___C___两种寻址方式外,其它各种寻址方式的操作数均在存储器中。
第三章作业1答案思考题:1、简述80C51的指令寻址方式。
答:80C51的指令寻址方式有:寄存器寻址、立即寻址、寄存器间址、直接寻址、变址寻址、相对寻址、位寻址2、访问特殊功能寄存器SFR,可使用哪些寻址方式?答SFR只能直接寻址3、若访问外部RAM单元,可使用哪些寻址方式?答:外间RAM单元,只能通过MOVX指令进行寄存器间接寻址。
4、若访问内部RAM单元,可使用哪些寻址方式?答:片内RAM低128字节,可直接寻址、寄存器间接寻址。
(只能使用R0, R1作为间址寄存器。
片内RAM20~2FH单元,可以位寻址。
5、MOV、MOVC、MOVX指令有什么区别?分别用于哪些场合?答:MOV指令用于对内部RAM的访问。
MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。
MOVX指令采用间接寻址方式访问外部数据存储器,有Ri和DPTR两种间接寻址方式。
执行MOVX 指令时,在P3.7引脚上输出RD有效信号,或在P3.6 引脚上输出WR有效信号,可以用做外部数据存储器或I/O的读/写选通信号,与单片机扩展电路有关。
作业:1.给下段汇编语句加注释,汇编成机器语言,并说明该段程序的作用ORG 0000H 机器码MOV SP,#5FH ;栈顶指针指向内部RAM5FH单元C:0X0000 75815FMOV R7,#08H ;R7<- 08H,R7为计数器0X0003 7F08MOV R0,#3FH ;R0指向内部RAM3FH单元0X0005 783FCLOOP: POP ACC ; ACC<- (SP), SP<- SP-1 0X0007 D0E0 MOV @R0,A;把A中内容送入R0指向的单元(3FH)0X0009 F6DEC R0 ;R0<- R0-1 0X000A 18DJNZ R7,CLOOP ;R7<-R7-1 ,R7不为0跳转0X000B DFFASJMP $ ;原地踏步0X000D 80FE程序段作用:把内部RAM中58H-5FH单元的内容依次存入从38H-3FH的八个单元2.阅读下列程序,分析其功能。
微机原理第3章习题答案第3章习题参考答案1 分别指出下列指令中的源操作数和⽬的操作数的寻址⽅式。
答:源操作数⽬的操作数(1)MOV AX,[SI] 寄存器寻址寄存器间接寻址(2)MOV DI,100 寄存器寻址⽴即寻址(3)MOV [BX],AL 寄存器间接寄存器(4)MOV [BX][SI],CX 基址+变址寄存器(5)ADD DX,106H[SI] 寄存器变址(6)PUSH AX 寄存器(7)ADD DS:[BP],AX 带段超越寄存器间接寻址寄存器(8)OR AX,DX 寄存器寄存器2.设寄存器(DS)=2000H,(SS)=1500H,(ES)=3200H,(SI)=0A0H,(BX)=100H,(BP)=10H,数据段中变量VAL的偏移地址为50H。
试指出下列各条指令中源操作数的寻址⽅式是什么?对于存储器操作数,其物理地址是多少?答:操作数的寻址⽅式存储器操作数PA (1)MOV AX,[100H] 直接寻址20100H(2)MOV CX,ES:[BX] 带段超越的寄存器间接寻址32100H(3)MOV DX,[BX][SI] 基址+变址寻址200F0H(4)MOV AX,V AL[SI] 变址寻址200F0H(5)MOV BX,1234[BX] 基址寻址205D2H(6)MOV AX,[BP] 寄存器间接寻址15010H3. 判断下列指令有误错误,若有,则改之。
答:(1)PUSH CL 有错,对堆栈操作数总是16位的。
改为:PHSH CX (2)ADCAX,0ABH ⽆,只是CF的值是不确定的(0或1)(3)OUT 3EBH, AX 有,输出设备的端⼝地址若超过8位,应使⽤DX 间接寻址。
改为:MOV DX, 3EBHOUT DX,AX(4)MUL AL, CL 有错。
乘法指令中有AX或AL寄存器是隐含的。
改为:MUL CL(5)MUL AX, 25 有错。
乘法指令中不能⽤⽴即数。
改为:MOV BX,25MUL BX(6)ROL DX,5 有错。
微机原理第三章练习题及解一:单项选择题●指令MOV AX,[BX] 中,源操作数的缺省段是( A )。
A:DS B:ES C:SS D:CS●指令PUSH [BX] 中,目的操作数的段寄存器是( C )。
A:DS B:ES C:SS D:CS●指令MOVSB 中,目的块的段寄存器是( B )。
A:DS B:ES C:SS D:CS●下列指令中,不正确的指令是( D )。
A:MOV AX,BX B:MOV AX,[BX]C:MOV AX,CX D:MOV AX,[CX]●下列指令中, 不正确的指令是( D )。
A:MOV AL,BL B:MOV AL,[BX]C:MOV AL,CL D:MOV AL,[BL]●下列指令中,不正确的指令是( D )。
A:MOV [BX+SI],AX B:MOV AX,[BX + SI]C:MOV AX,SI D:MOV AX,[BX + CX]●若要使寄存器AL中的高4 位不变,低4 位0,使用指令( B )。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●若要使寄存器AL中的高4 位不变,低4 位1,使用指令( C )。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●若要使寄存器AL中的高4 位为0,低4 位不变,使用指令( A )。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●若要使寄存器AL中的高4 位为1,低4 位不变,使用指令( D )。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●条件转移指令JNZ的转移条件是( B )。
A:CF = 0 B:ZF = 0 C:CF = 1 D:ZF = 1●条件转移指令JZ的转移条件是( D )。
A:CF = 0 B:ZF = 0 C:CF = 1 D:ZF = 1●8086CPU响应可屏蔽中断的条件是( B )。
微机原理第3章习题(答案)1.下列各条指令是否有错?如果有,请指出错误之处并改正(1)MOVDS 1000H(2)MOV[100],23H(3)ADDAX [BX + BP+ 6](4)PUSHDL(5)INAX, [3FH](6)0UT3FFH AL(7)LESSS [SI](8)POP[AX](9)IMUL4CH(10)SHLBX 5(11)INT300(12)XCHGD, 0FFFH答:(1)错误。
不允许直接向段寄存器送立即数,可改为:MOVAX 1000HMOVD, AX(2)错误。
该指令在语法上是对的,即可以把一个立即数送入一个存储单元;但是如果考虑实际编译,则第一操作数前应加上BYTEPT或WORDPT说明,否则汇编程序会因不能确定操作数长度而指示出错。
可改为:MOVBYTEPTR[1O0] 23H(3)错误。
不能同时使用两个基址寄存器BX、BP进行间接寻址,可改为:ADDAX [BX + DI + 6](4)错误。
堆栈操作应以字为单位进行,而DL是一个字节。
可改为:PUSHDX(5)错误。
在输入/输出指令中,8位端口地址应直接写在操作数处。
可改为:INAX, 3FH(6)错误。
端口地址3FFH已超出8位二进制表示范围,16位端口地址应用DX可改为:MOVD, 3FFHOUTDXAL(7)错误。
LES指令的目操作数应该是通用寄存器,不能是段寄存器。
可改为:LESBX [SI](8)错误。
AX不能用于间接寻址,间接寻址只能用BXBP、SI、DI四个寄存器之一。
可改为:POP[BX](9)错误。
立即数不能做乘法指令的操作数,可改为:MOVBJL 4CHIMULBL(10)错误。
当逻辑移位的次数大于1时,应该用CL指示次数。
可改为MOVCL 5SHLBX CL(11)错误。
操作数300>255,已超出有效的中断类型码范围。
(12)错误。
XCHG指令不允许立即数做它的操作数。
可改为:MOVC, 0FFFHXCHGDXCX2•请指出以下各指令的源、目的操作数所使用的寻址方式(1)MOVSI 2100H(2)SBBDISP[BX], 7(3)AND[DI] , AX(4)ORAX [609EH](5)MOV[BXb DI + 30H], CX(6)PUSHES [BP](7)CALL[DI]DISP(8)JNZShort_label答:(1)源操作数:立即数寻址;目的操作数:寄存器寻址(2)源操作数:立即数寻址;目的操作数:基址寻址(3)源操作数:寄存器寻址;目的操作数:寄存器间接寻址(4)源操作数:直接寻址;目的操作数:寄存器寻址5)源操作数:寄存器寻址;目的操作数:(带位移量的)基址变址寻址(6)源操作数:带段超越的寄存器间接寻址;目的操作数:隐含寻址(7)只有一个操作数,为变址寻址(8)只有一个操作数,为相对寻址3. 已知DS=2000H 有关的内存单元值为:(21000H)=00H,(21001H)=12H,(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,符号COUNT 勺偏移地址为1200H。
习题一、选择题1.寻址方式指出了操作数的位置,一般来说_______。
A.立即寻址给出了操作数的地址B.寄存器直接寻址的操作数在寄存器内,而指令给出了存储器C.直接寻址直接给出了操作数本身D.寄存器直接寻址的操作数包含在寄存器内,由指令指定寄存器的名称答案:D2.寄存器寻址方式中,操作数在_________。
A.通用寄存器B.堆栈C.内存单元D.段寄存器答案:A3.寄存器间接寻址方式中,操作数在_________。
A.通用寄存器B.堆栈C.内存单元D.段寄存器答案:C4.下列指令中的非法指令是______。
A. MOV [SI+BX], AXB.MOV CL, 280C.MOV [0260H], 2346HD.MOV BX, [BX]答案:B5.设(SP)=0100H,(SS)=2000H,执行PUSH BP指令后,栈顶的物理地址是_____。
A.200FEHB.0102HC. 20102HD.00FEH答案:A6.指令LEA BX, TAB执行后,其结果是______。
A.将TAB中内容送BXB.将TAB的段基址送BXC.将TAB的偏移地址送BXD.将TAB所指单元的存储内容送BX答案:C7.下列正确的指令格式有______。
A.MOV [BX], 1B.MOV AL, 0345HC.MOV ES: PTR[CX], 3D. XLAT答案:D8.设(AX)=C544H,在执行指令ADD AH,AL之后,______。
A.CF=0,OF=0B.CF=0,OF=1C.CF=1,OF=0 D,CF=1,OF=1答案:C9.若AL、BL中是压缩BCD数,且在执行ADD AL, BL之后,(AL)=0CH,CF=1,AF=0。
再执行DAA后,(AL)=_____。
A.02HB.12HC.62HD.72H答案:B10.执行下列程序后AL的内容为_____。
MOV AL, 25HSUB AL, 71HDASA.B4HB.43HC.54HD.67H答案:C11.下列四条指令中,需要使用DX寄存器的指令是______。
微型计算机原理第三章80X86微处理器1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。
答:(1)BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。
(2)EU的作用:执行指令,并为BIU提供所需的有效地址。
(3)并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令队列中。
这样就实现了取指和执行指令的并行工作。
2.8086/8088CPU内部有哪些寄存器?其主要作用是什么?答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。
其主要作用是:(1)数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。
AX(Accumulator)称为累加器。
用该寄存器存放运算结果可使指令简化,提高指令的执行速度。
此外,所有的I/O指令都使用该寄存器与外设端口交换信息。
BX(Base)称为基址寄存器。
用来存放操作数在内存中数据段内的偏移地址,CX(Counter)称为计数器。
在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。
DX(Data)称为数据寄存器。
在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。
(2)地址寄存器:一般用来存放段内的偏移地址。
SP(Stack Pointer)称为堆栈指针寄存器。
在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。
BP(Base Pointer)称为基址寄存器。
作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。
SI(Source Index)称为源变址寄存器。
SI存放源串在数据段内的偏移地址。
第三章微机原理课后习题参考答案第三章微机原理课后习题参考答案————————————————————————————————作者:————————————————————————————————日期:第三章微机原理课后习题参考答案1. 指出下列指令的错误原因。
(1) AND AX, DL ;类型不匹配(2) ADD CS, DX ;CS不能作为目的操作数(3) MOV AX, IP ;IP不能作为指令的操作数(4) MOV [BP][SI], [SI] ;两个操作数不能同时为内存操作数(5) SUB [BP][SI], ES:DX ;段超越前缀只能用在内存操作数之前(6) XCHG AL, [SI][DI] ;没有[SI][DI]这种操作数形式(7) JGE AX ;条件转移指令的操作数只能是标号(8) PUSH DL ;对堆栈不能进行字节操作2. 用一条指令将BX清0。
(请给出3种方法)方法1:MOV BX, 0方法2:SUB BX, BX方法3:AND BX, 0 ;将BX和0做与,可以将BX清零方法4:XOR BX, BX3. 写出实现下列功能的指令序列。
(1) 判断AX的值,若AX等于0,则转到标号LABEL处。
(请写出3种方法)方法1:CMP AX, 0JZ LABEL ; 如果ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果,因此指令执行后AX内容不会受到破坏方法2:TEST AX, 0FFFF HJZ LABEL ; 如果ZF = 0,说明AX为0方法3:AND AX, 0FFFF HJZ LABEL(2) 将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。
MOV AH, ALAND AL, 0FH ; AL高4位通过与清零,而低4位保持不变MOV CL, 4SHR AH, CL ; 这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零(3) 若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。
第三章部分习题解答
1. 评价存储器性能的重要指标有:速度、容量、稳定性、性能价比等。
高速是计算机的主要技术指标,CPU不断访问存储器,而CPU的速度足够高,所以存储器的速度就直接影响着计算机的速度;一般来说,存储器的容量越大允许存放的程序和数据越多越有利于提高计算机的处理能力,所以说提高存储器的性能以成为计算机性能提高的关键。
2. 内存储器---------RAM(既可读又可写)---------静态RAM 速度高,不用刷新,价格高
-----动态RAM 集成度高,成本低,需要刷新
-----集成RAM 刷新电路集成在芯片内的动
态RAM
-----ROM(既可读又可写)--------掩模ROM 其中信息在制造过程中生成
-----PROM 可在芯片中一次性写入信息
-----EPROM 其中信息可擦去再写
-----EEPROM 其中信息可电擦后再写3.答(1) 有4KB个存储单元。
(2)每个存储单元有8位二进制。
(3)首地址为0000H,末地址为0FFFH。
4. 连线如下图所示,采用全译码电路。
5. 连线如右图所示,采用部分译码电路。
6. 连线如下图所示,采用部分译码电路。
微机原理第三章习题与参考答案第三章习题与参考答案3.1 已知 (DS) = 1000H,(ES) = 2000H,(SS) = 3000H,(SI) = 0050H,(BX) =0100H,(BP) =0200H,数据变量DISP的偏移地址为1000。
指出下列指令的寻址方式和物理地址。
(1) MOV AX,0ABH 立即寻址无(2) MOV AX,BX 寄存器寻址无(3) MOV AX,[l000H] 直接寻址 10000H(4) MOV AX,DATA 直接寻址 (DS*16+DATA )(5) MOV AX,[BX] 寄存器间接寻址 10100H(6) MOV AX,ES:[BX] 寄存器间接寻址 20100H(7) MOV AX,[BP] 寄存器间接寻址 30200H(8) MOV AX,[SI] 寄存器间接寻址 10050H(9) MOV Ax,[BX+l0] 寄存器相对寻址 1010AH(10) MOV AX,DISP[BX] 寄存器相对寻址 11100H(1l) MOV AX,[BX+SI] 基址变址寻址 10150H(12) MOV AX,DISP[BX][SI] 相对基址变址寻址 11150H3.2 分别说明下例指令采用的寻址方式和完成的操作功能。
(1) MOV CX,2000H 立即寻址将立即数2000H送CX寄存器(2) MOV DS,AX 寄存器寻址将AX寄存器内容送DS段寄存器(3) AND CH,[1000H] 直接寻址将[DS*16+1000H]单元的内容送CH寄存器(4) ADD [DI],BX 寄存器间接寻址将CL寄存器的内容送[DS*16+DI]单元(5) MOV SS:[3000H],CL 直接寻址将CL寄存器的内容送[SS*16+3000H]单元(6) SUB [BX][SI],1000H 直接寻址将立即数1000H送[DS*16+BX+SI+50H]单元(7) ADD AX,50H[BX][SI] 相对基址变址寻址将[DS*16+BX+SI+50H]单元的内容送AX寄存器(8) PUSH DS 寄存器寻址将DS寄存器的内容送[SS*16+SP]单元(9) CMP [BP][DI],AL 寄存器寻址将AL寄存器的内容送[SS*16+DI+BP]单元3.3 判断下列指令正误,如果错误请指出原因。
第 三 章 存 储 器习题答案一、填空题1、某存储器模块的容量为64K 字节,若采用2164(64K ×1位)组成,则需要2164 8 片,若改用2764(8K ×8位),则需 8 片。
解答:容量单个存储器芯片的存储存储器系统的存储容量=片个数构成存储器系统所需芯所以:64*82164=864*1K bitK bit=所需芯片个数片64*82764=88*8K bitK bit=所需芯片个数片2、1K ⅹ8位的RAM 芯片有 10 条地址线, 8 条数据线,若用其组成16K ⅹ8位存储器需要 16 片。
解答:存储单元的个数(字长)通常与地址线的位数相关,每个存储单元存储的二进制位数(位数)与数据线的位数相关。
存储容量为1K*8bit (8K*8位),表示每片RAM 有1K 个存储单元(K 1210=),每个存储单元存储8位二进制数,也可以写为1KB (B 表示8位二进制数,即1个字节Byte ),因此该RAM 芯片有10根地址线(A 0-A 9),8根数据线(D 0-D 7)。
3、现要用6116SRAM 芯片构成8K ×32位的存储器,共需此种芯片 16 片。
解答:8*326116=162*8K bitK bit=所需芯片个数片二、选择题1、SRAM 芯片6116的3个信号CE 、OE 、WE 电平分别为 时,6116的工作方式为读出。
( D )A.1,0,0 B.0,0,0 C.0,1,1 D.0,0,1解答:3个信号CE 、OE 、WE 为6116的控制信号,CE (书中用CS 表示):片选信号,低电平有效,CE 为低电平时,芯片被选中,此时可以进行读写操作,WE :写允许信号,低电平有效时允许将数据写入芯片,OE :输出允许信号,低电平有效时为读操作。
因此当6116处于读工作方式时CE 为0,OE 为0,WE 为1;处于写工作方式时CE 为0,OE 为1,WE 为0。
1.(1) 立即数寻址无物理地址(2)寄存器寻址无物理地址(3)存储器直接寻址2000H:0050H=20050H(4)存储器间接寻址2000H:00A0H=200A0H(5)存储器间接寻址2200H:00A0H=220A0H(6)存储器间接寻址1500H:0010H=15010H(7)存储器相对寻址2000H:(00A0H+0050H)=200F0H(8)存储器间接寻址2000H:0020H=20020H(9)存储器相对寻址2000H:(00A0H+0032H)=200D2H(10)基址变址寻址2000H:(00A0H+0020H)=200C0H(11)相对基址变址寻址1500H:(0010H+0020H+000AH)=1503AH(12)相对基址变址寻址2000H:(00A0H+0020H+0050H)=20110H3.(1) 1200H (2)0100H (3)2211H (4)4B2AH (5)4B2AH题目有误(6)4433H (7)6DC7H 题目有误(8)2000H4.(1)×目的操作数和源操作数类型不匹配 BX 16位 AH 8位(2) ×在汇编语言中是不允许两个内存单元间传递数据(3) ×不能连用两个变址,其中一个应为基址(4) ×在汇编语言中是不允许两个内存单元间传递数据(5) √(6) × CS不作为目的操作数,故不能对CS赋值(7) ×不能将立即数直接送入段寄存器(8)× 1000超出AL的0~255(9)×不允许在段寄存器间用mov传送(10) √(11) ×不能弹出一个数据到CS中(12) × 269H超出AL的256H(13) ×立即数不能作为目的操作数(14)× PUSH是字操作(15) ×字操作,与BYTE不符(16) √(17) √(18)×SRC不能为立即数(19)×未说明是字还是字节加;未指出操作类型(20)×移位位数大于1时由CL寄存器的值表示6. CF ZF SF OF PFAL=79H 不变AL=0F2H 0 0 1 1 0AL=8FH 1 0 1 0 0AL=8FH 1 0 1 0 1AL=0 0 1 0 0 1AL=0FFH 0 0 1 0 1AL=0 0 1 0 0 19.CLCNOT AXADD AX,0001HNOT DXADC DX,0000H11.AX=5000H BX=5000H SP=1FFEHPUSH AX 将AX里的值压入堆栈,PUSH BX 将BX里的值再压入堆栈,POP AX将堆栈顶的值弹出到AX里,即将BX的值赋给AX。
1.
(1)MOV DS,1000H 错立即数不能直接存入段寄存器
改为:MOV AX,1000H
MOV DS,AX
(2)MOV [100],23H 错两个操作数必须有一个是寄存器操作数
改为:MOV BX,100
MOV [BX],23H
(3)ADD AX,[BX+BP+6] 错基址变址寻址的时候必须用指定的基址和变址寄存器
改为:ADD AX,[BX+SI+6]
(4)PUSH DL 错入栈操作以字为单位
改为:PUSH DX
(5)IN AX,[3FH] 错对于IO地址应该用立即数表示
改为:IN AX,3FH
(6)OUT 3FFH,AL 错超过8位的IO地址应该用短格式
改为:MOV DX,3FFH
OUT DX,AL
(7)LES SS,[SI] 错段寄存器不能作为目的操作数
改为:LES BX,[SI]
(8)POP [AX] 错基址寻址不能用AX寄存器
改为:POP AX 或者POP [BX]
(9)IMUL 4CH 错立即数不能作为乘法指令操作数
改为:MOV BL,4CH
IMUL BL
(10)SHL BX,5 错当逻辑操作的位数大于1时,应该用CL来指示次数
改为:MOV CL,5
SHL BX,CL
(11)INT 300 错8086的中断区间是0~255
改为:INT 25H
(12)XCHG DX,0FFFH 错XCHG指令不能用立即数作为操作数
改为:MOV BX,0FFFH
XCHG DX,BX
3.功能
MOV AX,0 ;将0赋值给AX
LEA AX,[0000H] ;将偏移地址0000H 送到AX 中
LDS AX,MEM32 ;mem32中的低地址中的值是0000H
LES AX,MEM32 ; mem32中的低地址中的值是0000H
SUB AX,AX ;AX 自己减自己
AND AX,0000H ;AX 与0000相与
XOR AX,AX ;AX 和自己异或
SAL AX,CL ;当CL=16时清零。
功能是将AX 左移16位
SAR AX,CL ;当CL=16且AX 最高位为0时清零。
功能是将AX 右移16位 SHL AX,CL ;同SAL
SHR AX,CL ;同CL=16时清零。
功能是将AX 右移16位
SBB AX,AX ;当CF =0时清零,功能是AX 自己减自己
MUL 0 ;AX 乘以0
IMUL 0 ;同上
4. 我们首先假设这个数在AX 里面
ADD AX,0 ;判断PF
ADC AX,0 ;CF=0, 判断PF
SUB AX,0 ; 判断PF
SBB AX,0 ; CF=0, 判断PF
CMP AX,0 ; 判断PF
AND AX,0FFFFH; 判断PF
TEST AX,80H; 判断ZF
OR AX,0判断PF
SAL AX,CL;CL=0, 判断PF
SAR AX,CL;CL=0, 判断PF
SHL AX,CL;CL=0, 判断PF
SHR AX,CL;CL=0; 判断PF
5.
MOV BX ,OFFSET COUNT ;MOV BX,1200H
MOV SI,[BX] ; MOV SI,[21200H] ;SI = 1000H
MOV AX,COUNT[SI][BX] ;MOV AX,[23400H] ;AX=3040H
程序执行后:AX =3040H ,BX =1200H ,SI =1000H
8.
MOV AX,DATA ; AX=6655H
LEA SI,DATA ; SI=24C0H
MOV CL,[SI] ;CL=55H
LDS BX,DATA ; DS=8877H BX=6655H
程序执行后:AX=6655H BX=6655H CL=55H SI=24C0H DS=8877H
10.(B)
IP 转移范围是 [1000H+2-128,1000H+2+127]即 [0F82H,1081H]
11.最小工作模式下,控制信号M IO /=1 R DT /=1 RD =1 WR =0
数据总线上的数为:0508H
地址总线上的数为:49420H
12.
LEA SI,BUF1
ADD SI,18 ;
LEA DI,BUF2
ADD DI,18
STD
MOV CX,10
REP MOVSW
13.
MOV DI,OFFSET BLOCK
MOV AL,’e’
MOV CX,17
CLD
REPNE SCASB
JNE OTHER
DEC DI
PUSH DI
OTHER:…..
18.
LEA SI,X
LEA DI,Y
MOV DX,[SI+2] ;DX=5678H
MOV AX,X ;AX=1234H
ADD AX,X ;AX=2468H,CF=0
ADC DX,[SI+2] ;DX=0ACF0H
CMP DX,[DI+2] ;CF=0,ZF=0,OF异或SF =1 JL L2 ; 跳转
CMP AX,Y ;OF=0;SF=1
JL L1 ;JMP L1
JMP EXIT
L1: MOV AX,1 ;AX =1
JMP EXIT
L2: MOV AX,2
EXIT: ….
程序执行完毕后:DX = 0ACF0H AX =2
19.
(1)
LEA BX,DATA1
MOV CX,8 ;
MOV AX,0 ;
CACU: ADD AL,[BX];
DAA
ADC AH,0
MOV DL,AL
MOV AL,AH
DAA
MOV AH,AL
MOV AL,DL
INC BX
LOOP CACU
MOV RES,AX (2) MOV CX,4
LEA BX, DA TA2
LEA DX, DA TA1
LEA DI,RES
CLC
CACU: MOV AL,[DX]
SBB AL,[BX]
DAS
MOV [DI],AL
INC DX
INC BX
INC DI
LOOP CACU
用字符串操作:
LEA SI,DATA2
LEA BX,DATA1
LEA DI,RES
MOV CX,4
CLC
CLD
CACU: LODSB
SBB AL,[BX]
DAS
STOSB
INC BX
LOOP CACU。