菜鸟请教一道简单汇编题MOV DX,1234HMOV AX,5678HMOV CX,4AGAIN:ROL AX,1RCL
1个回答

ROL是循环左移指令,它们移出的位不仅要进入CF,而且还要填补空出的位.而RCL是带进位的循环左移指令,用原CF的值填补空出的位,移出的位再进入CF.两者相近,但又不同,容易混淆.

AX循环左移4位,结果AX=6785H

DX循环左移4位,结果DX=2345H

关键点:RCL DX,1的执行结果,受ROL AX,1的影响;而ROL AX,1的执行结果,不受RCL DX,1的影响.

移位过程如下:

第1次执行循环体

ROL AX,1

0101011001111000→1010110011110000,CF=0

RCL DX,1

0001001000110100→0010010001101000,第0位的0=CF(ROL AX,1产生的)

第2次执行循环体

ROL AX,1

1010110011110000→0101100111100001,CF=1

RCL DX,1

0010010001101000→0100100011010001,第0位的1=CF

第3次执行循环体

ROL AX,1

0101100111100001→1011001111000010,CF=0

RCL DX,1

0100100011010001→1001000110100010,第0位的0=CF

第4次执行循环体

ROL AX,1

1011001111000010→0110011110000101,CF=1,AX=6785H

RCL DX,1

1001000110100010→0010001101000101,第0位的1=CF,DX=2345H