我编写了一个汇编代码,其中包括:
XOR BL,BL
MOV CX,0
TOP:
INC BL,1
MOV AH,2
MOV DL, BL
INT 21H
LOOP TOP
循环执行的次数非常多(肯定超过10,000)。循环执行如此高的时间背后可能的原因是什么?我是汇编语言的新手,发现我的代码与CX = 0无关。在此先感谢。
答案 0 :(得分:3)
您的计数器cx
未正确初始化。指令loop
做了两件事:
dec cx ;◄■■■ DECREASE THE COUNTER.
jnz label ;◄■■■ IF COUNTER IS NOT ZERO, JUMP TO LABEL TO REPEAT.
在您的代码中,计数器cx
被初始化为零,因此,当loop
指令执行时,它会cx - 1
,0 - 1
,所以{{1变成cx
,你的循环将重复0ffffh
次。
将另一个值移至计数器0ffffh
,例如cx
,这样您的循环将重复10次。
答案 1 :(得分:1)
Intel loop
指令先递减CX寄存器,然后检查零状态。
在TOP:
之前将CX设置为1进行测试。