求大神看看,为什么我的循环结束之后为什么没有进行Q3
CODE SEGMENT ;
ASSUME CS:CODE
IOCONEQU 8006H
IOA EQU 8000H
IOB EQU 8002H
IOC EQU 8004H
START:
MOV AL,90H
MOV DX,IOCON
OUT DX,AL
NOP
BEGIN: NOP
NOP
MOV AL,0
MOV DX,IOA
IN AL,DX
NOP
TEST AL,01
JNZ BEGIN
MOV AL,01
S1: MOV BL,8
S2: MOV CX,8
A1: RCL AL,1
NOP
MOV DX,IOB
OUT DX,AL
MOV BX,20
A2: INC BX
JNZ A2
LOOP A1
SUB BL,1
JNZ A2
Q3: MOV BL,8
Q4: MOV CX,8
B1: RCR AL,1
NOP
MOV DX,IOB
OUT DX,AL
MOV BX,20
B2: INC BX
JNZ B2
LOOP B1
ADD BL,1
JNZ Q4
JMP BEGIN
CODE ENDS
END START
这是一个是流水灯左移,我想后面再循环右移回来,,但Q3之后的代码没有执行!求教!!
[解决办法]
到不了 Q3 说明 BL 没能为 1 ,确实从上面来看,BX 为 0 才会到 LOOP 指令再到下面,这样 BL 确实无法为 1 了;所以,涉及到的 BX 或 BL 条件判断上有问题。