在80x86汇编中,有没有像'je''jl''jg''jne'那样使用'call'的方法? 我只想在满足条件的情况下“打电话”..?
我想实施:
cmp eax, 1
je something
; and continuing from here
; ....
; ...
jmp end
something:
ret
使用je
谢谢!
答案 0 :(得分:4)
不直接,不 - 调用指令始终是无条件的。根据你使用je / jl / etc进行的操作,你可以通过像call [ebx]
之类的间接调用获得(某种程度上)类似的效果,并且拥有一个包含'a'地址的跳转表。当ebx = 0时将调用的null'过程:
.code
proc1 proc
; whatever
null_proc::
ret
proc1 endp
proc2 proc
; whatever
ret
proc2 endp
main proc
lea ebx, jmp_table[eax]
call [ebx]
main endp
.data
jmp_table dd null_proc, proc1, proc2
end
答案 1 :(得分:2)
使用适当的跳转命令跳转到call语句?你已经试过了吗?
答案 2 :(得分:1)
如何直接跳到通话地址?
cmp eax, 1
je address_of_the_call
; else code
; ....
; ....
答案 3 :(得分:1)
您也可以按下返回地址并跳转。