2016-05-20 3 views
0

Я хочу перейти к определенному разделу моей основной процедуры из другой процедуры. В основном у меня есть вступительная часть моего основного proc, а остальная часть этого я хочу пропустить, но из другой процедуры. Это возможно?Есть ли способ перейти к определенному разделу процедуры в MASM

main PROC 
    call otherProc 
    section: 
     ;Do something else 
main ENDP 


other PROC 
    jmp main.section ; Jump to section inside main...is this possible? 
other ENDP 
+1

Да, возможно, этикетки все равно, где они. Почему ты не попробовал? – Jester

+0

@Jester Я попытался использовать метку раздела внутри main, но он сказал раздел «undefined symbol». Я не был уверен, использую ли я правильный синтаксис или нет. – 123

+1

Вам не нужны двойные двоеточия после метки, когда она находится внутри 'PROC', чтобы сделать ее видимой вне процедуры? То есть 'section ::' – Michael

ответ

2

По этой ссылке, используя двойное двоеточие делает ярлык не в области видимости

http://coding.derkeiler.com/Archive/Assembler/alt.lang.asm/2006-11/msg00909.html

Я просто привел пример, и он работает, как ожидалось

.686P 
.MODEL FLAT 
.STACK 4096 

EXTERN  _printf  :PROC 

.DATA 
msg  BYTE "testing", 0dh, 0ah, 0 

.CODE 

_main PROC 

    push ebp 
    mov  ebp, esp 

    call _other 
lbl1:: 
    add  esp, 4 
    push OFFSET msg 
    call _printf 
    add  esp, 4 

    xor  eax, eax 
    pop  ebp 
    ret 

_main ENDP 

_other PROC 

    jmp  lbl1 
    ret 

_other ENDP 

END 

Для компиляции в командной строке VS 2015:

ml jumps.asm /link legacy_stdio_definitions.lib msvcrt.lib