跳远超出范围

ibi*_*med 4 nasm

我的循环有问题,它包含的代码很长,它给我错误"短跳超出范围",所以我想知道是否有办法通过不减少量的循环工作代码在里面?

例1:

label:
my code
    LOOP label
Run Code Online (Sandbox Code Playgroud)

; 它工作正常,但当我在其中添加更多代码

例2:

label:
my code
    more code added
    LOOP label
Run Code Online (Sandbox Code Playgroud)

; 它不起作用,错误出现"短跳超出范围"

Jay*_*Jay 6

LOOP指令不能跳转到超过127个字节的距离.你需要改变你的代码中使用DEC ECXJNZ说明.

例如:

    MOV ECX, 10
label:
    ;some codes
    LOOP label
Run Code Online (Sandbox Code Playgroud)

成为:

    MOV ECX, 10
label:
    ;some codes
    DEC ECX
    JNZ loop
Run Code Online (Sandbox Code Playgroud)