菜鸟问题,怎么判断CF跳转

来源:百度知道 编辑:UC知道 时间:2024/05/18 15:50:18
用SHR,将最低位移入CF,
再用JC FLAG
判断每个二进制数位上的数是0还是1,这样做可以吗?
CODE SEGMENT
ASSUME CS:CODE
MAIN PROC FAR
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV AH,1H
INT 21H
SHR AL,1D
JC NEXT;我运行的时候为什么不管AL是什么值,都不会跳转
MOV DL,0H
ADD DL,30H
NEXT:
MOV DL,1H
ADD DL,30H
MOV AH,2H
INT 21H
RET
MAIN ENDP
CODE ENDS
END START

如果CF=0,继续执行,到NEXT:之前DL=30h,然后进入NEXT:,执行两句后DL=31h,这样无论CF是不是等于0都会执行
MOV DL,1H
ADD DL,30H

所以在NEXT:之前应该跳转出去,比如MOV AH,2H之前加个SHOW:,那么在NEXT:之前加JMP SHOW

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

可以,算术右移和逻辑右移都会把最低位移入CF中,如果最低位是1,那CF就是1,,按照你说的完全可以

你的SHR AL,1D不对 ,正确的应该用CL才对的,当你的循环移位超过1位时必须要用CL,把你移位的位数先传送给CL,然后再SHR