【问题标题】:Short jump out of range短跳超出范围
【发布时间】:2023-12-18 23:57:01
【问题描述】:

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

例子1:

label:
my code
    LOOP label

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

例子2:

label:
my code
    more code added
    LOOP label

;它不起作用并出现错误“short jump out of range”

【问题讨论】:

    标签: nasm


    【解决方案1】:

    LOOP 指令不能跳转到超过 127 字节的距离。您需要更改代码以使用 DEC ECXJNZ 指令。

    例如:

        MOV ECX, 10
    label:
        ;some codes
        LOOP label
    

    变成:

        MOV ECX, 10
    label:
        ;some codes
        DEC ECX
        JNZ label
    

    【讨论】:

      【解决方案2】:

      你试过near指令吗?

      【讨论】: