首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

关于跳转指令的有关问题,很急非常急近日结贴

2012-02-27 
关于跳转指令的问题,很急!!非常急!!近日结贴我的代码段比较长,用到一些跳转指令时会出现如下错误:error A2

关于跳转指令的问题,很急!!非常急!!近日结贴
我的代码段比较长,用到一些跳转指令时会出现如下错误:
error A2053: Jump out of range by 73 byte(s)
error A2053: Jump out of range by 68 byte(s)
error A2053: Jump out of range by 66 byte(s)
error A2053: Jump out of range by 61 byte(s)
error A2053: Jump out of range by 59 byte(s)

是不是说溢出了,请问该如何解决?多谢
 

[解决办法]
是呀,我用的也是MASM,错误代码A2053不是LZ所说的.

Jump out of range by 59 byte(s) 
我想应该是转移指令对IP的修改超过了范围.

在8086CPU中:
短转移IP的修改范围为-128~127
近转移IP的修改范围为-32768~32767

初学不对之处请原谅!!!!

[解决办法]
MASM都有几个版本啊,经典的MASM6.14版本就是16位的,也就是使用AX,BX,CX,DX等16位的寄存器.在此条件下的跳转是
很严格的,有长跳,短跳,具体怎么跳我也一时说不清,因为我也很久没在16位下跳了
在MASM32,也就是MASM8版本里,代码最开始有一段:
.model flat,stdcall
flat告诉编译器在整个内存段都可以"跳",想怎么跳怎么跳,因为是32位的平坦地带~相对于16位就是那个著名的"分段寻址":
cs:ip,错位相加,加出来竟然只有16位.这就是它的著名初.当初的程序员非常聪明,至今我还在感叹~~
[解决办法]
可能是楼主的ja, je之类的条件跳转出了-128~+127的范围了,仔细检查一下,找到出错的代码。如果必须跳得很远的话,安插几条jmp搞空中接力,可以跳出30000多米远。

热点排行