跳转目的地太远:按3个字节

时间:2016-12-09 23:39:43

标签: assembly x86 masm irvine32

我的循环出现问题,其中包含的代码很长,它给了我错误function addBlurEvent() { $("#brochureItems").on("blur", ".item-ID", function(e) { var itemID = $(this); var itemIDVal = $.trim(itemID.val()); if (itemIDVal != "") { var item = ""; /* $.each(window.listOfItems, function(i, v) { if (v.No.search(itemIDVal) != -1) { item = v.Description; return; } }); */ if (item != "") { // only one input in a cell (td) // itemID.parent('.row').siblings(".item-desc").find("input").first().val(item); itemID.parent('.row').siblings(".item-desc").find("input").val(item); // no siblings of the inputs parent div exist in the TD cell itemID.parent('.row').siblings(":last").find("input").first().focus(); } else { //slideDownMsg("Item: " + itemIDVal + " not found."); //slideUpMsg(3000); itemID.focus(); } } else { itemID.parent('.row').siblings(".item-desc").find("input").val(""); itemID.parent('.row').siblings().last().find("input").val("") } }); $(".removeRow").on('click', function() { $(this).closest("tr").remove(); }); } 。当ı删除:

jump destination too far : by 3 byte(s)

这个部分在主PROC下面,它没有给出错误。但是需要这个字符串用户输入一个负数来给出一个消息。怎么能ı?

mov edx,offset str1 
call writestring

1 个答案:

答案 0 :(得分:1)

loop的范围有限。它只能在从下一条指令开始测量的指令流中向前跳转127个字节或向后跳转128个字节。

为了解决这个问题,您可以执行以下操作。

而不是

label1:

<lots of code>

loop label1 

如果标签不可及,您可以执行以下操作:

label1:

<lots of code>

loop tmp1
jmp tmp2
tmp1:
  jmp label1
tmp2:

或者根据没有范围限制的条件跳转使用不同的构造。