题目:
4-20 假设(AX)=0A5C6H,(CX)=0F03H,有以下程序段:
STC
RCL AX,CL
AND CH,CL
RCR AX,CL
上述程序执行后,(AX)=________,CF=_____________。
解析:
关键点:
STC:设置CF=1
0-16的二进制数:
1=1
2=10
3=11
4=100
5=101
6=110
7=111
8=1000
9=1001
10=1010
11=1011
12=1100
13=1101
14=1110
15=1111
16=10000
快速记忆:
2=10,2*2=4=100,2*4=8=1000,2*8=16=10000
RCL:带进位循环左移,移动多少位?看低8位的数,比如题中的AX=0A5C6H=1010 0101 1100 0110,由此得出高8位AH=1010 0101,低8位AL=1100 0110,所以AX高8位=1010 0101,低8位=1100 0110
十六进制转二进制:十六进制一个位对应二进制4个为,不够则补0
RCR:带进位循环右移
与(AND):两个都为1得1
或:有一个1就是1
STC //CF=1
执行完后CF=1
RCL AX,CL
RCl表示AX带符号循环左移CL位
由于(CX)=0F03H=0000 1111 0000 0011
得出高8位为CH=0000 1111,CL=0000 0011
CL=11(二进制)=3(十进制)左移CL(3)位
AX=1010 0101 1100 0110
再加上CF(CF=1)
AX=1 1010 0101 1100 0110进行循环左移3位=>
AX=10 0101 1100 0110 1 10 ,CF=1
AND AH,CH //AH,CH与操作
AH=AH &&CH,AH与CH的结果放入AH中
AX=1 0010 1110 0011 0110,CF=1
AX=0010 1110 0011 0110,可得出高8位AH和低8位AL,无需带符号
AH=0010 1110
AL=0011 0110
CX=0F03H=0000 1111 0000 0011
CH=0000 1111
CL=0000 0011
AH=CH与AH,2个数都为1,则为1,其余都为0,0000 1111&&0010 1110=0000 1110=AH,计算过程如下:
0000 1111
0010 1110
0000 1110
注意:执行AND操作后,CF和OF置0
AH=0000 1110
RCR AX,CL
CL=0000 0011
由上面AH=CH与AH,得新的AH=0000 1110,替换AH
AX=0010 1110 0011 0110,替换高8位
AX=0 0000 1110 0011 0110,CF=0,由于执行AND操作后,CF和OR都置0
执行RCR AX,CL=>执行AX右移CL=0000 0011(3)位,得
110 0 0000 1110 0011 0,CF=1
去掉符号CF=1得
AX=10 0 0000 1110 0011 0,CF=1
转换为十六进制:
AX=1000 0001 1100 0110
最后答案为:
AX=81C6H,CF=1