作业帮 > 数学 > 作业

菜鸟请教一道简单汇编题

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/23 02:24:52
菜鸟请教一道简单汇编题
MOV DX,1234H
MOV AX,5678H
MOV CX,4
AGAIN:ROL AX,1
RCL DX,1
LOOP AGAIN
答案上DX是2345,我还是搞不懂为什么是这样啊,我的做法是如果CF开始是,那DX就是2348,如果CF开始是0那DX就是2340,请问我错在哪里啊?
问题是要求最后 DXAX的值,AX的很好求,我求出来了,就差DX了,麻烦各位了.
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