当前位置: 代码迷 >> 汇编语言 >> 求大神看看,为什么小弟我的循环结束之后为什么没有进行Q3
  详细解决方案

求大神看看,为什么小弟我的循环结束之后为什么没有进行Q3

热度:3589   发布时间:2013-02-26 00:00:00.0
求大神看看,为什么我的循环结束之后为什么没有进行Q3
CODE    SEGMENT ; 
        ASSUME CS:CODE
IOCON EQU 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 条件判断上有问题。
  相关解决方案