You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

汇编JE指令相对跳转超出范围报错求助(Apple1.ASM)

解决汇编JE跳转超出范围的编译错误

问题原因

你的je endgame报错是因为短条件跳转指令的范围限制:je属于x86的短跳转指令,只能跳转到当前指令前后127字节范围内的标签,而endgame标签距离该指令有021Ah字节(约538字节),超出了短跳转的有效范围。

修复方案(通用兼容版)

把原代码中的条件短跳转改成「反向短跳转+无条件长跳转」的组合,避开范围限制:

proc escpressed
mov ah,1h
int 16h
cmp al,27
jne .skip_endgame  ; 反向跳转到邻近标签,短跳转范围足够
jmp endgame        ; 无条件长跳转,支持跨大距离跳转
.skip_endgame:
ret
endp escpressed

备选方案(汇编器支持时)

如果你的汇编器(如MASM)支持指定跳转长度,可以直接用近条件跳转指令,替换je endgame为:

je near ptr endgame

这种方式更简洁,但兼容性不如第一种方案,不同汇编器的语法可能略有差异(比如NASM中直接用je endgame会自动识别为近跳转,若范围超出短跳转的话)。

内容的提问来源于stack exchange,提问作者steven FM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:22:06