经典微机原理作业与答案第三章
微机原理第三章课后习题答案

ß 1. DS=1000H, BX=0200H, SI=0002H (10200H~10205H)依次存有10H,2AH,3CH,46H,59H,6BH ,给出执行指令后AX 的内容。
(1)MOV AX ,0200HAX=0200 (2)MOV AX ,[200H] 物理地址=1000H ×10H+0200H=10200H, AX=2A10H(3)MOV AX ,BXAX=0200H (4)MOV AX ,3[BX]物理地址=1000H ×10H +0200H+3H=10203H, AX=5946H (5)MOV AX ,[BX+SI] 物理地址=1000H ×10H+0200H +2H=10202H , AX=463CH(6)MOV AX ,2[BX+SI] 物理地址=1000H ×10H +200H+2H+2H=10204H , AX=6B59H ß 2.DS=1000H ,ES=2000H ,SS=3500H ,SI=00A0H , DI=0024H ,BX=0100H ,BP=0200H ,VAL=0030H ,指出寻址方式和物理地址。
(1)MOV AX ,[100H] (2)MOV AX ,VAL(3)MOV AX ,[BX] (4)MOV AX ,ES:[BX](5)MOV AX ,[SI] (6)MOV AX ,[BX+10H](7)MOV AX ,[BP] (8)MOV AX ,VAL[BP][SI](9)MOV AX ,VAL[BX][DI] (10)MOV AX ,[BP][DI](1)MOV AX, [100H] 直接寻址方式,10100H物理地址=DS ×10H+100H=10000H+0100H=10100H(2)MOV AX, V AL 直接寻址方式,10030H物理地址=DS ×10H+V AL=10000H+0030H=10030H(3)MOV AX, [BX] 寄存器间接寻址,10100H物理地址=DS ×10H+BX=10000H+0100H=10100H(4)MOV AX, ES:[BX] 寄存器间接寻址,20100H物理地址=ES ×10H+BX=20000H+0100H=20100H(5)MOV AX, [SI] 寄存器间接寻址,100A0H物理地址=DS ×10H+SI=10000H+00A0H=100A0H(6)MOV AX, [BX+10H] 寄存器相对寻址,10110H物理地址=DS ×10H+BX+10H=10000H+0100H+10H=10110H(7)MOV AX, [BP] 寄存器间接寻址,35200H物理地址=SS ×10H+BP=35000H+0200H=35200H(8)MOVAX, V AL[BP][SI] 相对基址变址寻址,352D0H 物理地址=SS ×10H+BP+SI+V AL=35000H+0200H+00A0H+0030H=352D0H (9)MOVAX, V AL[BX][DI] 相对基址变址寻址,10154H 物理地址=DS ×10H+BX+DI+V AL=10000H+0100H+0024H+0030H=10154H (10)MOV AX, [BP][DI] 基址变址寻址,35224H物理地址=SS ×10H+BP+DI=35000H+0200H+0024H=35224Hß 3.判断并说明原因(1)MOV DL ,AX 错,寄存器寻址方式中,目的操作数与源操作数长度必须一致错,寄存器寻址方式中,目的操作数与源操作数长度必须一致错,寄存器寻址方式中,目的操作数与源操作数长度必须一致 (2)MOV 8650H ,AX 错,目的操作数不可以是立即数错,目的操作数不可以是立即数(3)MOV DS ,0200H 错,MOV 指令不允许将立即数传入段寄存器 (4)MOV [BX],[1200H] 错, MOV 指令的两个操作数不能同时为存储器指令的两个操作数不能同时为存储器(5)MOV IP ,0FFH 错, IP 不能作为MOV 指令的目的操作数指令的目的操作数(6)MOV [BX+SI+3],IP 错, IP 不能作为MOV 指令的源操作数指令的源操作数(7)MOV AX ,[BX][BP] 错,BX 与BP 不可以同时出现在源操作数当中(8)MOV AL ,ES:[BP] 对(9)MOV DL ,[SI][DI] 错,SI 与DI 是两个变址寄存器,不可以同时出现在源操作数中。
微机原理第三章作业答案

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。
第三章微机原理习题答案

第三章习题答案一、 单选题1. 8086是高性能的第三代微处理器,是Intel 系列的系列的 B 位微处理器。
位微处理器。
A .8 B .16 C .32D .64 2. 8086有20根地址线,可以寻址到的内存空间能达到根地址线,可以寻址到的内存空间能达到 B 字节。
字节。
A .1KB .1MC .1GD .1T 3. 80486的内部所有部件都连接在的内部所有部件都连接在 A 上,并通过上,并通过 B 交换数据交换数据A .内部总线.内部总线B .数据总线.数据总线C .地址总线.地址总线D .外部总线.外部总线4. C 的任务就是在内部控制总线信号的控制下,把内部数据总线上的数据送上外部地址总线,或与外部数据总线的某些位交换数据,并产生相应的外部控制信号。
址总线,或与外部数据总线的某些位交换数据,并产生相应的外部控制信号。
A .高速缓存部件.高速缓存部件B .代码预取部件.代码预取部件C .总线接口部件.总线接口部件D .指令译码部件.指令译码部件5. 在指令流水线技术中,预取指令部件一次可以从内部Cache 取 C 字节的指令代码,送预取指令队列等候执行。
送预取指令队列等候执行。
A .4B .8C .16D .32 6. 当存储器的读出时间大于CPU 要求的时间时,为了保证CPU 与存储器的周期配合,就要利用一个READY 信号,使CPU 插入一个插入一个 D 状态。
状态。
A .T 1 B .T 2 C .T 3D .T w 7. 指令队列的作用是指令队列的作用是D 。
A .暂存操作数地址.暂存操作数地址 B .暂存操作数.暂存操作数C .暂存指令地址.暂存指令地址D .暂存预取指令.暂存预取指令8. 在80486微处理器中设置有4个系统地址寄存器,用来在保护方式下管理4个系统表。
其中用来存放全局描述符表的是中用来存放全局描述符表的是A 。
A .全局描述符表寄存器.全局描述符表寄存器B .中断描述符表寄存器.中断描述符表寄存器C .局部描述符表寄存器.局部描述符表寄存器D .任务状态寄存器.任务状态寄存器9. 段寄存器和段寄存器和 D 一起为操作系统完成内存管理、一起为操作系统完成内存管理、多任务环境、多任务环境、多任务环境、任务保护提供硬件支持。
微机原理第三章习题参考答案

第三章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章作业及答案

第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)有错。
微机原理第三章习题答案

习题3答案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, 0FFHJZ LABEL ; 如果ZF = 0,说明AX为0,TEST指令做与运算,可是不写回结果,只影响标志位。
; 和0与清零,和1与不变,所以和FFH做与的结果是AX本身,但是此时标志位已; 经改变了,所以可以利用标志位来判断,但是AX内容却没有受到任何破坏方法3:AND AX, 0FFH ;这个方法的原理和方法2其实是完全一致的JZ 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不变。
微机原理作业及答案讲解

微机原理作业第三章汇编语言程序设计题3.1A在下列程序运行后,给相应的寄存器及存储单元填入运行的结果:MOV AL,10HMOV CX,1000HMOV BX,2000HMOV [CX],AL BH XCHG CX,BXMOV DH,[BX] CLMOV DL,01HXCHG CX,BX CLMOV [BX],DLHLT DL AL=1OHBL=OOHBH=2OHCL=OOHCH=1OHDH=1OH(10O0H)=lOH(200OH)=0lH题 3.1B DL要求同题3.1A程序如下;MOV AL,50H ALMOV BP,1000HMOV BX,2000HMOV [BP],ALMOV DH,20HMOV [BX],DHMOV DL,01HMOV DL,[BX]MOV CX,3000HHLTAL=5OHBL=OOHBH=20HCL=OOHCH=30HDL=20HDH=2OHBP=100OH(10OOH)=5OH(20OOH)=20H题3.2,如在自1000H单元开始有一个100个数的数椐块。
要把它传送到自2000H开始的存储区中去,用以下三种方法,分别编制程序;1;不用数据块转送指令;2;用单个转送的数据块转送指令;3;用数据块成组转送指令;(1) LEA SI, 1OOOHLEA DI, 200OHMOV CX, 100L1: MOV AX, [SI]MOV[DI],AXLOOPLlHLT(2) LEASI,100OHLEADI,2000HMOVCX,100CLDL1: MOVSBLOOP L1HLT(3) LEASI, 100OHLEADI, 200OHMOVCX, 100CLDREP MOVSBHLT题3.3A 利用变址寄存器遍一个程序,把自1000H单元内开始的100个数转送到自1070H开始的存储区中去,LEASI,100OHLEADI,1070HMOVCX,100CLDREP MOVSBHLT题3.3B 要求用3.3A,源地址为2050H,目的地址为2000H,数据块长度为50,LEASI,205OHLEADI,200OHMOVCX,50CLDREPMOVSBHLT题3.4 编一个程序,把自1000H单元开始的100个数转送至1050H开始的存储区中(注意数据区有重叠)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8086第三章作业3-11在实模式下,若段寄存器中装入如下数值,试写出每个段的起始地址和结束地址(1)1000H 10000H-1FFFFH(2)1234H 12340H-2233FH(3)E000H E0000H-EFFFFH(4)AB00H AB000H-BAFFFH3-12对于下列CS:IP组合,计算出要执行的下条指令存储器地址。
(1)CS=1000H和IP=2000H 答:下条指令存储器地址:12000H(2)CS=2400H和IP=1A00H 答:下条指令存储器地址:25A00H(3)CS=1A00H和IP=B000H 答:下条指令存储器地址:25000H(4)CS=3456H和IP=ABCDH 答:下条指令存储器地址:3F12DH3-37 指出下列指令源操作数的寻址方式(1)MOV AX,1200H;立即数寻址(2)MOV BX,[1200H];直接寻址(3)MOV BX,[SI];变址寻址(4)MOV BX,[BX+SI+1200];相对基变址寻址(5)MOV [BX+SI],AL;寄存器寻址(6)ADD AX,[BX+DI+20H];相对基变址寻址(7)MUL BL ;寄存器寻址(8)JMP BX ;间接寻址(9)IN AL,DX ;寄存器间接寻址(10)INC WORD PTR[BP+50H] ;相对基址寻址小结:虽然对存储器的访问指令、输入/输出指令(IN指令和OUT指令)、跳转指令(JMP指令)都有直接寻址和间接寻址,但是形式是有很大差别的:1.直接寻址:(1)对于存储器的访问用方括号括起来的二进制数,如:MOV BX,[1200H](2)对于输入/输出指令(IN指令和OUT指令)用二进制数如:IN AX,8FH 又如: OUT 78H,AL(3)对于跳转指令(JMP指令)是以目标标号为直接地址的如: JMP ADDR12.间接寻址:(1)对于存储器的访问有分为基址寻址、变址寻址、基址加变址寻址以及带位移量的所谓相对基址寻址、相对变址寻址、相对基址加变址寻址如:MOV AX,[BP](2)对于输入/输出指令用DX做间接寻址寄存器如:IN AX,DX 又如: OUT DX,AL(3)跳转指令直接写明寄存器即可 (段内)如: JMP BX段间需组合:如: JMP DWORD PTR [BX+ADDR1]3-38指出8086/8088下列指令中存储器操作数地址的计数表达式。
(1)M OV AL,[DI] 答:存储器操作数地址的计数表达式为:(DS)×16+(DI)(2)M OV AX,[BX+SI] 答:地址的计数表达式为:(DS)×16+(BX)+(SI)(3)M OV 8[BX+SI],AL 答:地址的计数表达式为:(DS)×16+8+[(BX)+(SI)] (4)A DD AL,ES:[BX] 答:地址的计数表达式为:(ES)×16+(BX)(5)S UB AX,[1000H] 答:地址的计数表达式为:(DS)×16+1000H(6)A DC AX,[BX+DI+2000H] 答:地址表达式为:(DS)×16+(BX)+(DI)+2000H(7)M OV CX,[BP+SI] 答:地址的计数表达式为:(SS)×16+(BP)+(SI)(8)I NC BYTE PTR(DI)答:地址表达式为:(DS)×16+(DI)注:段寄存器的分工:1.代码段(程序段):CS2.数据段:①一般DS;②当用BP(及其组合)间接寻址偏移量时,用SS 段寄存器;③串操作时,源段(与SI组合)用DS;目标段(与DI组合)用ES3.堆栈段:①与堆栈相关的指令;②当用BP(及其组合)间接寻址偏移量时,用SS段寄存器;4.附加段:①加段超越运算符(如38-(4);;②串操作时,目标段(与DI 组合)用ES3-39 指出8086/8088下列指令的错误何在?1.MOV [SI],IP 答:IP不可访问:2.MOV CS,AX 答:CS不可访问:3.MOV BL,SI+2答:类型不匹配,或者变址寻址寄存器未加方括号。
应写成MOV BL,[SI+2]或MOV BX,SI+24.MOV 60H,BL 答:立即数不能做目标操作数。
5.PUSH 2400H 答:PUSH的源操作数不能是立即数。
6.INC [BX] 答:对于间接寻址的存储单元加1指令,数据的长度必须用BYTE PTR、WORD PTR或DWORD PTR类型伪指令加以说明,否则,汇编程序不能确定是对字节、字还是双字加1。
(P92)7.MUL –60H 答:无符号乘法指令,操作数不能用立即数。
8.ADD [2400H],2AH 答:[2400h]前要加类型说明9.MOV [BX],[DI] 答:在MOV指令中,两个操作数不能都是存储器操作数。
10.MOV SI,AL 答:两个操作数的长度不一样,类型不匹配。
有的同学所答非所问,问错在哪里,却作成了改成正确的。
3.40 MOV CS,AX指令会带来什么错误?答:这样做会影响后面指令,因为CS的改变不能按要求执行。
提示遇到了无效指令。
3-41 阅读下列程序段,指出每条指令执行以后有关寄存器的内容是多少?MOV AX,0ABCH ;AX寄存器的内容是:0ABCHDEC AX ;AX寄存器的内容是:0ABBHAND AX,00FFH ;AX寄存器的内容是:00BBHMOV CL,4 ;CL寄存器的内容是:04HSAL AL,1 ;AL寄存器的内容是:76HMOV CL,AL ;CL寄存器的内容是:76HADD CL,78H ;CL寄存器的内容是:0EEHPUSH AX ;(SS*16+SP)=0076H,AX寄存器的内容是:0076H POP BX ;BX寄存器的内容是:0076H3.42 指出RET与IRET两条指令的区别,并说明各用在什么场合?答:(1)RET与IRET是两条返回主程序的返回指令,但RET是与过程(子程序)调用指令CALL对应使用的过程返回指令,而IRET是与中断指令INT n对应使用的中断返回指令。
(2)RET指令应安排在过程的出口即过程的最后一条指令处,它的功能是从堆栈顶部弹出由CALL指令压入的断点地址值,迫使CPU返回到调用程序的断点去继续执行。
IRET指令总是安排在中断服务程序的出口处,由它控制从堆栈中弹出程序断点送回CS和IP中,弹出标志寄存器内容送回F中,迫使CPU返回到断点去继续执行后续程序。
3.43 说明MOV BX,DATA和MOV BX,OFFSET DATA指令之间的区别?答:MOV BX,DATA直接将DATA的值赋给BX,MOV BX,OFFSET DATA是将DATA在段内的偏移地址赋给BX.3.44 给定DS=1100H,BX=0200H,LIST=0250H,SI=0500H。
试指出下面各条指令寻址存储器的地址。
(1)M OV LIST[SI],EDX ; PA=DS*16+LIST+SI=11750H(2)M OV CL,LIST[BX+SI];PA=DS*16+LIST+BX+SI=11950H(3)M OV CH,[BX+SI];PA=DS*16+BX+SI=11700H(4)M OV DL,[BX+100H];PA=DS*16+BX+100H=11300H3.45 假定PC机存储器地地址区有关单元的内容如下:(20H)=3CH,(21H)=00H,(22H)=86H,(23H)=0EH,且CS=2000H,IP=0010H,SS=1000H,SP=0100H,FLAGS=0240H,这时若执行INT 8指令,试问:(1)程序转向从何处执行(用物理地址回答)?(2)栈顶6个存储单元的地址(用逻辑地址回答)及内容分别是什么?答:(1)程序转向0E89CH处执行,中断服务程序的入口地址在00020H-00023H 单元。
(2)栈顶6个单元的内容1000H:00FEH 0240H1000H:00FCH 2000H1000H:00FAH 0012H注:执行INT 8指令(2个字节)使F寄存器内容先入栈,断点再入栈保护,同时中断服务程序的入口地址赋值给CS和IP3-46 设SP=2000H,AX=3000H,BX=5000H,执行下列片段程序后,SP=?AX=?BX=?PUSH AXPUSH BXPOP AX答:执行以上片段程序后,SP=1FFEH;AX=5000H;BX=5000H注:8086/8088的堆栈方向与51单片机相反:执行PUSH 堆栈指针被修改:SP-2 SP执行POP 堆栈指针被修改:SP+2 SP3-48 设AX=5555H,BX=FF00H,执行下列片段程序后,AX=?BX=?CF=?AND AX,BX ;AX=5500HXOR AX,AX ;AX=0000HNOT BX ;BX=00FFH答:执行以上片段程序后,AX=0000H;BX=00FFH;CF=0注:“与”“或”“异或”指令使CF清零,“非”指令不影响CF3-50 若DS=3000H,BX=2000H,SI=0100H,ES=4000H,计算出下述各条指令中存储器操作数的物理地址。
1. MOV [BX],AH 答:存储器操作数物理地址为:(DS)×16+(BX)=32000H2.ADD AL,[BX+SI+1000H] 答:物理地址为:(DS)×16+(BX+SI+1000H)=33100H3.MOV AL,[BX+SI] 答:物理地址为:(DS)×16+(BX)+(SI)=32100H 4.SUB AL,ES:[BX] 答:物理地址为:(ES)×16+(BX)=42000H3-52 选用最少指令,实现下述要求的功能。
1.AH的高4位清零。
AND AH,0FH2.AL的高4位取反。
XOR AL,0F0H3.AL的高4位移到低4位,高4位清零。
(一)MOV CL,4SHR AL,CL ;逻辑移位,补0(二)MOV CL,4ROR AL,CLAND AH,0FH4.AH的低4位移到高4位,低4位清零。
(一)MOV CL,4SHL AH,CL ;逻辑移位,补0(二)MOV CL,4ROL AH,CLAND AL,0F0H3.53设BX=6D16H,AX=1100H,执行指令后的结果MOV CL,06H ;CL=6ROL AX,CL ;AX=4004HSHR BX,CL ;BX=01B4H3-54 设初值AX=0119H,,执行下列程序段后,AX=?MOV CH,AH ;(CH)=01HADD AL,AH ;(AL)=1AH ,CF=0DAA ;(AL)=20H ,CF=0XCHG AL,CH;;(CH)=20H ,AL=01H ,不影响标志位状态ADC AL,34H ;(AL)=35HDAA ;(AL)=35HMOV AH,AL ;(AH)=35HMOV AL,CH ;(AL)=20HHLT(AX)=3520H只写最后结果也行,但如果写错了,中间的过程起作用。