当前位置:文档之家› 微机原理第三章习题与参考答案

微机原理第三章习题与参考答案

第三章习题与参考答案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)MOV CH,2000H 错两个操作数的长度不一致(2)XOR DL,BH 对(3)ADD 100,AH 错目的操作数不能为立即数(4)MOV DS,2200H 错立即数不能直接传送给段寄存器(5)IN AL,250H 错源操作数必须为口地址(6)MOV [BX][SI],[DI] 错两个操作数不能同时为存储器(7) LEA AX,BL 错源操作数必须为地址标号(8)MOV CX,ES:BX 错寄存器寻址不能用段超越前缀3.4 设DS=1000H,SS=2000H,AX=1000H,BX=0020H,CX=2000H,BP=0002H,SI=0010H,DI=0030H,(10050H)=0102H, (10052H)=1E40H,(1E4F6H)=091DH。

试问下列各指令执行后的结果如何?(l) MOV CL,[BX+20H][SI] CL←[DS*16+0020H+20H+0010H]=[10050H]=02H(2) MOV [BP][DI], CX [SS*16+0002H+0030H]=[20032H]←CX(3) MOV AX, [BX+31H] AX←[DS*16+0020H+31H]=[10051H]=4001H(4) LDS SI, [BX] [DI] AX←[DS*16+0020H+0030H]=[10050H]=0102HDS←[DS*16+0020H+0030H+2]=[10052H]=1E40H(5) MOV [SI] , BX [DS*16+0010H]=[10010H] ←BX(5) XCHG CX, [BX+32H] CX←[10052H]=1E40H [10052H]←CX=2000H(6) XCHG [BX+21H][SI], AX AX←[10051H]=4001H [10051H]←CX=2000H3.5 已知(DS) = 2000H, (BX) = 0100H, (SI) = 2, (20100H) = 34H, (20l01H )= 12H, (20102H) = 78H, (20103H) = 56H, (2010AH) = 0FFH, (21200H) = 2AH, (21201H) = 4CH, (2010BH) = 0,(21202H)=0B7H, (2l203H)=65H, 试说明下列各指令执行后AX寄存器的内容。

(1) MOV AX,1200H AX=1200H(2) MOV AX,BX AX= 0100H(3) MOV AX,[BX] AX=[ DS*16+0100H]=[20100]=1234H(4) MOV AX,1100H[BX] AX=[ DS*16+0100H+1100H]=[21200H]=4C2AH(5) MOV AX,[BX][SI] AX=[ DS*16+0100H+0002H]=[20102H]=5678H(6) MOV AX,[BX+SI+1100H] AX=[ DS*16+0100H+0002H+1100H]=[21202H]=65B7H(7) MOV AX,[1200H] AX=[ DS*16+1200H]=[21200H]=4C2AH(8) MOV AX,[BX+10] AX=[ DS*16+0100H+0010H=[2010AH]=XXFFH3.6 连续执行以下指令,根据指令执行结果填空。

MOV AX, 1234H AL= 34H AH= 12H CF= 0MOV ES, AX ES= 1234H AH= 12H CF= 0ADC AL, AH AL= 12H AH= 12H CF= 0DEC AX, AL= 11H AH= 12H CF= 0MOV DX, 256 DL= 00H DH= 01H CF= 0SUB AX, DX AL= 11H AH= 11H CF= 03.7 已知标志寄存器各标志位为0,每条指令执行前AX=FFFFH,BX=8000H,CX=0000H,试分析单独执行下列单条指令后标志寄存器CF、AF、ZF、SF、OF的状态。

(1)MOV AX, BX CF=0、AF=0、ZF=0、SF=1、OF=0(2)XOR AX, AX CF=0、AF=0、ZF=1、SF=0、OF=0(3)MOV AX, 0001H CF=0、AF=0、ZF=0、SF=0、OF=0(4)ADD AX, 00001H CF=1、AF=1、ZF=1、SF=0、OF=0(5)MOV CX, 0FFFFH CF=0、AF=0、ZF=0、SF=1、OF=0(6)DEC CX CF=0、AF=1、ZF=0、SF=1、OF=0(7)MOV BX, 0 CF=0、AF=0、ZF=1、SF=0、OF=0(8)SUB BL, 80H CF=1、AF=1、ZF=0、SF=1、OF=0(9)SHL AX,1 CF=1、AF=0、ZF=0、SF=1、OF=0(10)INC AX CF=0、AF=1、ZF=0、SF=0、OF=03.8 设 DS=l000H, SS=2000H, AX=lA2BH, BX=l200H, CX=339AH, BP=l200H,SP=1350H, SI=l354H, (ll350H ) =0A0H, (ll35lH ) =30H, (1l352H ) =8088H, (lI354H ) =0E752H, (l26A4H ) =00l6H, (2l350H ) = 7788H。

试分析单独执行下列单条指令后空格的内容为何值。

(l) MOV BX, l352H ; BX= l352H .(2) MOV CX, [ l352H ] ; CX= 8088H(3) MOV 0l50H [ BX ], CH ;(l1350H)= 33H ,(4) MOV AX, 0150H [ BP ] ; AX= 7788H(5) POP AX ; AX= 7788H , SP = 1352H(6) ADD [SI], CX ;(11354H) = 1AECH , SF= 0 ,ZF= 0 , CF= 1 , OF= 0 。

(7) SUB BH, 0l50H[BX][SI] ;BH = FCH , SF= 0 , ZF = 0 , CF = 1 , OF = 0 。

(8) INC BYTE PTR 0l52H[BX] ;(l1352H)= 89H , CF= 0 。

(9) INC WORD PTR 0152H[BX] ;(1l352H)= 8089H, CF= 0 。

3.9 编写完成如下操作的程序段:(1)将立即数2000H送DX,立即数88送AH。

MOV DX,2000H ;MOV AH,88H(2)将立即数1234H送存储单元2345H中。

MOV SI,2345H ;MOV (SI),1234H(3)用相对寻址的方法将立即数1234H送存储单元2345H+10中。

MOV SI,2345H ;MOV (SI+10),1234H3.10 已知AX=5678H,BX=6789H,DX=FFFFH,试分析下面的程序段完成什么操作?MOV CL,04SHL DX,CLMOV BL,AHSHL AX,CLSHR BL,1OR DL,BL3.11 编写程序实现将十进制数7832与3468相加,结果转换为十进制数并保存在BX中。

MOV AL,32HADD AL,68HDAAMOV BL,ALMOV AL,78HADC AL,34HDAAMOV BH,AL3.12 编写程序实现下述功能:(1)将CX寄存器的低8位清零,其高8位为FFH。

MOV CL, 00HMOV CH, FFH(2)将CL寄存器的最高位置0,其余位置1。

MOV CL, EFH(3)将DL寄存器的高4位保持不变,低4位取反。

MOV AL,DLNOT DLMOV CL, 4SHL DL ,CLSHR DL,CLAND AL,FOHADD DL,AL(4)测试AX中的第8位,当为0时将AL置00H,否则置FFH。

TEST AH,01H OR TEST AX,0100HJZ LOOP1MOV AL,FFHHLTLOOP1:MOV AL,00HHLT3.13 试分析下列各程序段按有符号数运算和无符号数运算后的结果。

(l) MOV BL, 95HMOV AL, l7HADD AL, BLDAAAL= 12H , BL = 95H , CF= 1 ,OF 0(2) MOV AX, 8000HADD AX, 7FFFHINC AXAX = 0000H , CF = 0 ,OF 0 ,(3) MOV AX, 0FFFFHSTCMOV DX, 7796HSBB AX,DXAX = 8868H , CF = 0 ,OF 03.14 如果AL=8FH,则执行CBW指令后,AX= FF8FH ,如果AX=8000H,则执行CBD指令后,DX AX= FFFF 8000H 。

相关主题