关于跳转指令

GhostAdz 2003-08-21 03:45:02
在我的一个子程序段里

my proc
;....
;....
iret
my endp

其中有个地方用到了 jz stop

;这个stop在很后面,但也在这个子程序里,但是似乎距离太远了于是
:编译时出现 Relative jump out of range by 0006h bytes
;我用了 jz far stop 但是出现了 Expecting pointer type
;都是这行出错 该怎么办
答案适合就结贴!!
...全文
86 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaobird 2003-08-22
  • 打赏
  • 举报
回复
同上
zhyinfo 2003-08-21
  • 打赏
  • 举报
回复
没有 JZ FAR 这种写法。jz 是短跳转,应该在-128到127个字节范围内跳转。
W32API 2003-08-21
  • 打赏
  • 举报
回复
jz 为短跳转,根据 8086 的定义,采用 8 位相对地址,与 8 位有符号数的范围一致
GhostAdz 2003-08-21
  • 打赏
  • 举报
回复
谢谢大家
我和大家想的一样,也成功了
不过最终我把后面那些冗长的代码变为一个子程序 call一下就可以了

但是我想问一下 有没有jz far 这种写法呢 是合法的吗
W32API 2003-08-21
  • 打赏
  • 举报
回复
cmp ax,0
jnz next
jmp go
next:
......
go:
......
zuolihua 2003-08-21
  • 打赏
  • 举报
回复
up
gks686 2003-08-21
  • 打赏
  • 举报
回复
cmp ax,0
可优化为 or ax,ax
!!
POLOM 2003-08-21
  • 打赏
  • 举报
回复
先jz到一个较近的地方然后在那地方jmp到较远的地方。
cmp ax,0
jz L_NEAR
...
...
...
L_NEAR:
jmp L_FAR
...
...
...
...
...
...
...
...
...
L_FAR:
...
gks686 2003-08-21
  • 打赏
  • 举报
回复
先用jz跳至较近的一个地方,在此地方安排一个无条件近跳转语句.

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧