nasm - 短跳超出范围

标签 nasm

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

示例1:

label:
my code
    LOOP label

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

示例2:

label:
my code
    more code added
    LOOP label

;它不起作用并且出现错误“短跳超出范围”

最佳答案

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

例如:

    MOV ECX, 10
label:
    ;some codes
    LOOP label

成为:

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

关于nasm - 短跳超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12136480/

相关文章:

assembly - 如何在汇编中打印字符串的长度

c++ - 如何汇编、链接和编译 C++、NASM 文件和 .o 驱动程序的组合

c - 在 C 中返回 char* 的 x86 函数

assembly - Intel x86 32位寄存器困惑

c - 为什么 C 代码中的 1.0f 在生成的程序集中表示为 1065353216?

c++ - 在 VS 代码中调试 NASM

assembly - BIOS 总是无法执行磁盘操作

assembly - 引导加载程序崩溃

windows - 尝试使用纯 Win64 API(无 C 运行时)从 x64 汇编器读取控制台输入

assembly - 由 nasm 插入的冗余 DS 段覆盖前缀?