(AX)=00H=0000 0000 0000 0000B ,(BX)=00H,(CX)=10H=0000 0000 0001 0000B
QQ:shr cx,1 ;是将cx逻辑右移1位,CX=0000 0000 0000 1000B,CF=0
RCR AX,1 ;带进位循环右移,AX=0000 0000 0000 0000 0000B,CF=0
ADD BX,1 ;bx=bx+1,BX=01H
LOOP qq ;CX-1,即CX=0000 0000 0000 0111B,不等于0,转到QQ继续循环。
为了看到每次循环的结果,将各次循环情况分别写在下面:
第二次循环情况:
QQ:shr cx,1 ;是将cx逻辑右移1位,CX=0000 0000 0000 0011B,CF=1
RCR AX,1 ;带进位循环右移,AX=1000 0000 0000 0000 0000B,CF=0
ADD BX,1 ;bx=bx+1,BX=02H
LOOP qq ;CX-1,即CX=0000 0000 0000 0010B,不等于0,转到QQ继续循环。
第三次循环情况:
QQ:shr cx,1 ;是将cx逻辑右移1位,CX=0000 0000 0000 0001B,CF=0
RCR AX,1 ;带进位循环右移,AX=0100 0000 0000 0000 0000B,CF=0
ADD BX,1 ;bx=bx+1,BX=03H
LOOP qq ;CX-1,即CX=0000 0000 0000 0000B,等于0,结束循环。
此时AX=4000H
AX和BX没什么直接关系,BX中存放实际循环的次数。
答案是对的:4000h。
ax和bx没有关系。没有 add bx,1 这句,答案还是4000h
第一次执行后:ax=0,cx=7:因为移位后为8,但是loop语句后就为7了。
第二次:shr 后,cx=3,但是标志位为1了,所以rcr后,ax=8000h,loop后cx=2,
第三次:shr后,cx=1,rcr后,ax=4000h,loop后cx=0,退出循环结束了。
因此,ax=4000h。
QQ:shr cx,1 ;是将cx逻辑右移1位,变成40h,十进制也就是64,代表循环次数
RCR AX,1 ;带进位循环右移
ADD BX,1 ;bx=bx+1
LOOP qq ;执行循环体,同时CX-1
AX最后应该还是00H
55555学了好久了,还是不懂