汇编语言:计数器循环

时间:2016-10-14 14:38:26

标签: assembly counter x86-16

我编写了一个汇编代码,其中包括:

    XOR BL,BL
    MOV CX,0 
TOP: 
    INC BL,1
    MOV AH,2 
    MOV DL, BL 
    INT 21H
    LOOP TOP

循环执行的次数非常多(肯定超过10,000)。循环执行如此高的时间背后可能的原因是什么?我是汇编语言的新手,发现我的代码与CX = 0无关。在此先感谢。

2 个答案:

答案 0 :(得分:3)

您的计数器cx未正确初始化。指令loop做了两件事:

dec cx            ;◄■■■ DECREASE THE COUNTER.
jnz label         ;◄■■■ IF COUNTER IS NOT ZERO, JUMP TO LABEL TO REPEAT.

在您的代码中,计数器cx被初始化为零,因此,当loop指令执行时,它会cx - 10 - 1,所以{{1变成cx,你的循环将重复0ffffh次。

将另一个值移至计数器0ffffh,例如cx,这样您的循环将重复10次。

答案 1 :(得分:1)

Intel loop指令先递减CX寄存器,然后检查零状态。

TOP:之前将CX设置为1进行测试。