我编写了一个汇编代码,其中包括:
XOR BL,BL
MOV CX,0
TOP:
INC BL,1
MOV AH,2
MOV DL, BL
INT 21H
LOOP TOP
循环执行的次数非常多(肯定超过 10,000 次)。循环执行时间如此之长的可能原因是什么?我对汇编语言非常陌生,发现与 CX=0 相关的代码没有任何有效的东西。提前致谢。
最佳答案
您的计数器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
,因此 cx
变为 0ffffh
并且循环将重复 0ffffh
次。
将另一个值移至计数器 cx
,例如 mov cx, 10
,这样循环将重复 10 次。
关于汇编语言: counter loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40045845/