微机原理第3章作业及答案
微机原理第三章课后习题答案

ß 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选择题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章作业及答案

第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 简要分析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。
经典微机原理作业与答案第三章

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下列指令中存储器操作数地址的计数表达式。
微机原理作业及答案第3章

一、选择题1、CPU执行算术运算指令不会影响的标志为是_D__。
A.溢出标志 B.符号标志C.零标志 D.方向标志2、TEST指令和__A__指令执行同样的操作,但不送回操作结果,仅影响标志位。
A.AND B.ORC.NOT D.XOR3、下列指令中,影响标志位的指令是__D____。
A.从寄存器取数指令 B.条件转移指令C.压栈指令 D.循环移位指令4、执行指令INC AX后,不受影响的标志为__B___。
A.ZF B.CF C.SF D.OF5、当无符号数运算产生溢出时,__D__标志位为1.A.SF B.ZF C.CF D.OF6、若用户堆栈位于存储区10000H-1FFFFH,则该堆栈的段地址是___D____。
A.10000H B.1FFFFH C.1000H D.0FFFFH7、使用直接寻址方式时,操作数总是在 C 中。
A.通用寄存器B. 堆栈C. 主存单元D. 段寄存器8、指令MOV AX,[BP+SI]指令源操作数的段地址是 C 。
A. CSB. DSC. SSD. ES9、假定(AX)=96H,(BX)=65H,依此执行ADD AX,BX指令和DAA指令后,(AL)=___C_。
A.0FBH B.01H C.61H D.0BH10、设AX=C544H,在执行指令ADD AH,AL后, C 。
A. CF=0,OF=0B. CF=0,OF=1C.CF=1,OF=0D. CF=1,OF=111、由379AH得到FFFFH,可采用的逻辑运算是 D 。
A.与 B.或C.求反 D.或、异或二、填空题1.若物理地址为2D0H,偏移量为0B0H,则段地址为___22H_____。
2.8086指令系统中有_逻辑_移位和_算术_移位两类,其中__SHL__和SAL两条指令属于不同的移位指令,但其功能完全相同。
3.串操作指令规定目的操作数使用___DI___寄存器,目的串必须在__附加_段中。
4.在8086中进行寄存器间接寻址时,可采用的寄存器有____BX____、_BP_____、__SI______和__DI______。
微机原理第三章习题答案

习题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章习题与答案解析

习题一、选择题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 的内容为 _____。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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. 请按下面的要求写出相应的汇编指令或指令序列。
(1) 将1234H送入DS中。
(2) 将5678H与AX中的数相加,结果放在AX中。
(3) 将DATAX和DATAY相加,其和放在DATAY中。
(4) 将AX中的高4位变为全0。
(5) 将BX中的低2位变为全1。
(6) 将CX中的D3~D7位取反。
【解】(1) MOV AX,1234HMOV DS,AX(2)ADD AX,5678H(3)MOV AX,DATAXADD AX,DATAYMOV DATAY,AX(4)AND AX,0FFFH(5)OR AX,0003H(6)MOV AX,CXAND AX,07HXOR CX,0FFFFHAND CX,0FFF8HADD CX,AX5. 若AL=0FFH,BL=03H,指出下列指令执行后标志AF、OF、ZF、SF、PF、CF的状态。
(1) ADD BL,AL (2) INC BL(3) SUB BL,AL (4) NEG BL(5) AND BL,AL (6) MUL BL(7) CMP BL,AL (8) IMUL BL(9) OR BL,AL (10)XOR BL,BL【解】执行后:AF OF ZF SF PF CF(1) ADD BL,AL 1 0 0 0 0 1(2) INC BL 0 0 0 0 0 不影响(3) SUB BL,AL 1 0 0 0 0 1(4) NEG BL 1 0 0 1 0 1(5) AND BL,AL 任意值0 0 0 1 0(6) MUL BL 任意值 1 任意值任意值任意值 1(7) CMP BL,AL 1 0 0 0 0 1(8) IMUL BL 任意值 1 任意值任意值任意值 1(9) OR BL,AL 任意值0 0 1 1 0(10) XOR BL,BL 任意值0 0 1 1 06. 已知存储器中有两个压缩BCD码6543和4672存放在从BUF开始的连续4个单元中(高字节放在高地址单元),试编制两数相减的程序,结果存放在后面的两个单元中。
【解】程序段如下:MOV BX,BUFMOV AX,[BX]MOV CX,[BX+2]SUB AL,CLMOV DL,ALDAAMOV AL,AHSBB AL,CHDAAMOV AH,ALMOV AL,DLMOV [BX+4],AX7. 假设DX=36A5H,CL=3,CF=1,确定下列各条指令执行后DX和CF的值。
(1) SHR DX,1 (2) SAR DX,CL(3) SHL DX,CL (4) SHL DL,1(5) ROR DX,CL (6) ROL DL,CL(7) SAL DH,1 (8) SAR DH,CL(9) RCL DX,CL (10)RCR DX,CL【解】(1)指令执行后DX:1B52H,CF:1(2)指令执行后DX:06D4H,CF:1(3)指令执行后DX:6D4AH,CF:0(4)指令执行后DX:364AH,CF:1(5)指令执行后DX:0C6D4H,CF:1(6)指令执行后DX:362DH,CF:1(7)指令执行后DX:6CA5H,CF:0(8)指令执行后DX:06A5H,CF:1(9)指令执行后DX:0B529H,CF:1(10)指令执行后DX:0A6D4H,CF:18. 编写程序段将寄存器AL中的8位二进制数的内容颠倒过来,即将原来的最高位变为最低位,次高位变为次低位,以此类推,若原AL的内容为01110001B,则颠倒之后变为10001110B。
【解】程序段如下:XOR AH,AH ;AH清零MOV CX,8 ;重复8次LP1:SHR AL,1 ;逻辑右移,将最最低位移入CFRCL AH,1 ;带进位的循环左移,将CF移入AH的最低位LOOP LP1MOV AL,AH ;存回AL9. 执行下列程序段,指出各相关寄存器的内容。
MOV AX,0A0BHDEC AXSUB AX,0FFHAND AX,00FFHMOV CL,3SAL AL,CLADD AL,25HXCHG AL,AHPUSH AXPOP BXINC BL【解】各相关寄存器的内容:MOV AX,0A0BH ;AX:0A0BHDEC AX ;AX:0A0AHSUB AX,0FFH ;AX:090BHAND AX,00FFH ;AX:000BHMOV CL,3 ;CL:03HSAL AL,CL ;AX:0058HADD AL,25H ;AX:007DHXCHG AL,AH ;AX:7D00HPUSH AX ;AX:7D00HPOP BX ;BX:7D00HINC BL ;BX:7D01H10. 用串操作指令将100H个字符从2100H处搬到1000H处,并且从中检索与AL中所存字符相同的存储单元,并将该单元的内容替换成空格,本程序只替换检索到的第一个相同的单元。
请在下列空格中填入合适的指令,使程序段完成上述功能。
┇MOV SI,2100H(1)MOV CX,100HCLD(2)MOV DI,1000HMOV CX,100H(3)JNZ K1(4)MOV [DI],20HK1: ┇【解】(1)MOV DI,1000H(2)REP MOVSB(3)REPNE SCASB(4)DEC DI11. 试分析下列程序段,如果AX和BX的内容分别为下列5种情况,问程序分别转向何处?(1) AX=147FH,BX=80DCH(2) AX=0B586H,BX=54B5H(3) AX=42C0H,BX=608AH(4) AX=0D023H,BX=9FD7H(5) AX=94B7H,BX=0B568HADD AX,BXJNO L1JNC L2SUB AX,BXJNC L3JNO L4JMP L5【解】(1) L1;不溢出,转移到L1(2) L1;不溢出,转移到L1(3) L2;溢出,不转移到L1,进位为0,转移到L2(4) L3;溢出,不转移到L1,进位为1,不转移到L2,借位为0,转移到L3(5) L4;溢出,不转移到L1,进位为1,不转移到L2,借位为1,不转移到L3,不溢出,转移到L412. 编程求出AX中存放的16位二进制数中‘1’的个数,将其存入CL中(若AX=1001010011001011B则将8存入CL)。
【解】程序段如下:MOV CX,16XOR BX,BXL1: SHL AX ,1;最低位移入CF RCL BL ,1 ;CF 移入最低位ADD BH ,BL XOR BL ,BL LOOP L1 MOV CL ,BH13. 已知BUF 单元有一个单字节无符号数X ,按要求编写一程序段计算Y (仍为单字节数),并将其存于累加器。
【解】程序段如下:XOR AX ,AX MOV AL ,BUF CMP AL ,20 JNB L1 MOV BL ,3 MUL BL JMP ENDL1: SUB AX ,20 END : HLTY=3X ,X<20 X-20,X ≥20。