微机原理第3章习题分析
- 格式:ppt
- 大小:177.50 KB
- 文档页数:37
习题一、选择题1.寻址方式指出了操作数的位置,一般来说_______。
A.立即寻址给出了操作数的地址B.寄存器直接寻址的操作数在寄存器内,而指令给出了存储器C.直接寻址直接给出了操作数本身D.寄存器直接寻址的操作数包含在寄存器内,由指令指定寄存器的名称答案:D2.寄存器寻址方式中,操作数在_________。
A.通用寄存器B.堆栈C.内存单元D.段寄存器答案:A3.寄存器间接寻址方式中,操作数在_________。
A.通用寄存器B.堆栈C.内存单元D.段寄存器答案:C4.下列指令中的非法指令是______。
A.MOV[SI+BX],AXB.MOVCL,280C.MOV[0260H],2346HD.MOVBX,[BX]答案:B5.设(SP)=0100H,(SS)=2000H,执行PUSHBP指令后,栈顶的物理地址是_____。
A.200FEHB.0102HC.20102HD.00FEH答案:A6.指令LEABX,TAB执行后,其结果是______。
A.将TAB中内容送BXB.将TAB的段基址送BXC.将TAB的偏移地址送BXD.将TAB所指单元的存储内容送BX答案:C7.下列正确的指令格式有______。
A.MOV[BX],1B.MOVAL,0345HC.MOVES:PTR[CX],3D.XLAT答案:D8.设(AX)=C544H,在执行指令ADDAH,AL之后,______。
A.CF=0,OF=0B.CF=0,OF=1C.CF=1,OF=0D,CF=1,OF=1答案:C9.若AL、BL中是压缩BCD数,且在执行ADDAL,BL之后,(AL)=0CH,CF=1,AF=0。
再执行DAA后,(AL)=_____。
A.02HB.12HC.62HD.72H答案:B10.执行下列程序后AL的内容为_____。
MOVAL,25HSUBAL,71HDASA.B4HB.43HC.54HD.67H11.下列四条指令中,需要使用DX寄存器的指令是______。
第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.1已知DS=091DH,SS=1E4AH,AX=1234H,BX=0024H,CX=5678H,BP=0024H,SI=0012H,DI=0032H,(09226H)=00F6H,(09228H)=1E40H , (1E4F6H)=091DH。
在以上给出的环境下,试问下列指令段之行后的结果如何?(1)MOV CL,[BX+20H][SI];物理地址=DS*10H+BX+SI+20H=091D0H+0024H+0012H+0020H=09226H(09226H)=00F6H,(09226H)=F6H, (09227H)=00H执行后:CL=F6H(2)MOV [BP][DI], CX物理地址=SS*10H+BP+DI=1E4A0H +0024H+0032H=1E4F6HCX=5678H 执行后:(1E4F6H) = 5678H(3)LEA BX, [BX+20H][SI];BX=BX+20H+SI=0056HMOV AX, [BX+2];物理地址=DS*10H+BX+2=091D0H +0058H=09228H(09228H)=1E40H 执行后:AX=1E40H(4)LDS SI, [BX][DI];物理地址=DS*10H+BX+DI=091D0H +0056H=09226H(09226H)=00F6H (09228H)=1E40H执行后:BX=(09226H)=00F6HDS=(09228H)=1E40HMOV [SI],BX物理地址=DS*10H+SI =1E400H +0012H=1E412HBX=0024H,执行后:(1E412H)=0024H(5)XCHG CX,[BX+32H]物理地址=DS*10H+BX+32H =091D0H +0056H =09226H(09226H)=00F6H , CX=5678H执行后:(09226H)=5678H , CX=00F6HXCHG [BX+20H][SI], AX物理地址=DS*10H+BX+20H+SI =091D0H +0056H =09226H(09226H)=5678H , AX=1234H执行后: (09226H)=1234H , CX=5678H3.2设DS=1000H,SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,SP=1350H,SI=1354H,(11350H)=0A5H,(11351H)=3CH,(11352H)=0FFH,(11353H)=26H,(11354H)=52H,(11355H)=0E7H,(126A4H)=9DH,(126A5H)=16H,(21350H)=88H,(21351H)=51H。
习题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不变。
习题一、选择题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)=C544HA.CF=0,OF=0 ,在履行指令B.CF=0,OF=1ADD AH,AL 以后,C.CF=1,OF=0______。
D,CF=1,OF=1答案: C9.若 AL 、 BL 再履行 DAA 中是压缩BCD后, (AL)=_____数,且在履行。
ADD AL, BL 以后,(AL)=0CH , CF=1 ,AF=0 。
A.02HB.12HC.62HD.72H 答案: B10.履行以下程序后AL 的内容为 _____。
3.1 8086/8088 CPU的地址总线有多少位?其寻址范围是多少?答:20条,寻址范围:0~220-1 (1MB)3.2 8086/8088 CPU分为哪两个部分?各部分主要由什么组成?答: BIU(Bus Interface Unit总线接口单元)、EU(Execution Unit执行单元)3.4 8086/8088 CPU中有几个通用寄存器?有几个变址寄存器?有几个指针寄存器?通常哪几个寄存器也可作为地址寄存器使用?答:八个通用寄存器:AX、BX、CX、DX、SP、BP、SI、DI;三个指针寄存器:IP、SP、BP。
指令指针IP总是指向下一条将要执行的指令在代码段中的偏移地址。
当堆栈中有压入的数据时,堆栈指针SP总是指向栈顶;两个间址指针寄存器:源变址SI和目的变址寄存器DI;在寄存器间接寻址方式中,只有BX、BP、SI、DI能充当地址寄存器。
3.8 在8086/8088 CPU工作在最小模式时,(1)当CPU访问存储器时,要利用哪些信号?(2)当CPU访问外设接口时,要利用哪些信号?(3)当HOLD有效并得到响应时,CPU的哪些信号置高阻?答:当MN/MX为高电平时工作于最小模式、否则为最大模式。
(1)地址线信号、数据线信号、RD、WR、M/IO、DEN、ALE、BHE、DT/R。
(2)地址线信号、数据线信号、RD、WR、M/IO、READY、DEN、ALE、DEN。
(3)DEN、DT/R3.9 当在8086/8088 CPU工作在最大模式时,(1)S—2、S—1、S—0可以表示CPU的哪些状态?(2)CPU的RQ——/GT——信号的作用?答:(1)(2)多处理器的总线控制信号。
共享总线的其他主控者通过该信号申请总线控制权和获得总线授予权。
3.10 试求出下面运算后各个标志位的值,并说明进位标志和溢出标志的区别? 1278H+3469H答:0 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0+ 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1= 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1SF=0、CF=0、ZF=0、PF=1、AF=1、OF=03.12什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?答:逻辑地址:在存储器寻址中,程序员在程序中指定的地址称之为逻辑地址。
微机原理第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。
微机原理第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 有错。