实现将DX:AX中存放的32位数扩大4倍,正确的程序段是( ) A.SHL AX,2 ROL DX,2 B.RCL AX,2 SHL DX,2 C.MOV CX,2 LOP:SHL AX,1 RCL DX,1 LOOP LOP D.SHL AX,1 SHL AX,1 RCL DX,1 RCL DX,1
正确答案:C解析:在使用移位指令对32位数进行扩大或缩小倍数操作时,一定要注意它的CF位,如果不考虑它的CF位,操作后的结果可能就是错误的。所以在本题中,要对一个32位数扩大4倍,即对32位数向左移2位。在移低字的时候用SAL或SHL命令都可以,但对低字操作后紧接着一定要对高字操作,这样才能保证CF的位不被落下。对高字操作时一定要使用RCL带进位循环左移。根据这些方面所以选项C的程序段是正确的。
举一反三
- 为了将AX和BX寄存器中存放的32位数据左移一位(其中AX寄存器中的数据为高16位),下面的程序段中应填写一条______指令。 SHL AX, 1 SHL BX, 1 ______ ______ A: ADC AX, 0 B: SHL AX, 1 C: ROL AX, 1 D: RCL AX, 1
- 阅读如下程序段,说明该程序段对DX(高16位)、AX(低16位)组成的32位数完成什么操作? MOV CL,12 MOV BX,AX SHR BX,CL MOV CL,4 SHL DX,CL SHL AX,CL OR DX,BX
- 假设(AX)=73H,(DX)=85H,执行下列后(AX)=______。 1 MOV AX, DX 2 NOT AX 3 ADD AX, DX 4 INC AX
- 【填空题】执行完下列程序段后 , AX= 。 MOV DX , 8F70H MOV AX , 54EAH OR AX , DX AND AX , DX NOT AX XOR AX , DX ROR AX, 1
- 设(DX)=10111011B,(CL)=3,(CF)=1,求下列指令单独执行后DX的内容:答案写成4位16进制数形式。 (1)SHR DX,1; DX = (2)SAR DX,CL; DX = (3)SHL DX,CL; DX = (4)ROR DX,CL; DX = (5)RCL DX,CL; DX =
内容
- 0
设(AX)=9ABCH,(DX)=8765H PUSH AX PUSH DX POP AX POP DX 上述4条指令执行后,(AX)=_(1)__H,(DX)=__(2)__H
- 1
在下列程序段中分别填入以下指令 (1)LOOP NEXT (2) LOOPE NEXT (3) LOOPNE NEXT 程序执行完后,AX,BX,CX,DX 的内容分别是多少? START: MOV AX,01H MOV BX,02H MOV CX,04H MOV DX,03H NEXT: INC AX ADD BX,AX SHR DX,1 ( )
- 2
MOV DX,1 MOV AX,0 MOV CX,10 DIV CX 执行这段代码后,DX是( ),AX是( )。
- 3
执行下列指令序列后,完成的功能是将(DX,AX)的值______。 MOV CL,04 SHR AX,CL MOV BL,DL SHR DX,CL SHL BL,CL OR AH,BL
- 4
执行下列指令序列后,完成的功能是将(DX,AX)的值除以______。 MOV CX,4 NEXT: SHR DX,1 RCR AX,1 LOOP NEXT (注:填写一个十进制数)