2012-08-27 49 views
4

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

例1:

label: 
my code 
    LOOP label 

;它做工精细,但当我添加更多的代码,它

例2:

label: 
my code 
    more code added 
    LOOP label 

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

回答

5

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

例如:

MOV ECX, 10 
label: 
    ;some codes 
    LOOP label 

成为:

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

您是否尝试过与near指令?

+0

它给出了错误:'操作数大小不匹配' – EmmanuelMess

+0

杰伊的解决方案工作正常吗? – Davide

+0

是的,它的确如此。 (不读这个) – EmmanuelMess