2016-05-20 28 views
0

zu springen Ich möchte von einer anderen Prozedur zu bestimmten Abschnitt meiner Hauptprozedur springen. Grundsätzlich habe ich einen Intro-Teil von meinem Haupt-Proc, und den Rest davon möchte ich durchlaufen, aber von einem anderen Verfahren. Ist das möglich?Gibt es eine Möglichkeit, zu einem bestimmten Abschnitt einer Prozedur in 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

Ja, es ist möglich, Etiketten egal wo sie sind. Warum hast du es nicht versucht? – Jester

+0

@Jester Ich habe versucht, eine Abschnittsbezeichnung innerhalb main, aber es sagte 'undefined Symbol" Abschnitt "'. Ich war mir nicht sicher, ob ich die richtige Syntax verwendete oder nicht. – 123

+1

Brauchen Sie nach dem Etikett keine doppelten Doppelpunkte, wenn sie sich in einem 'PROC' befinden, um sie außerhalb der Prozedur sichtbar zu machen? I.e. 'section ::' – Michael

Antwort

2

Nach diesem Link, einen Doppeldoppelpunkt macht das Etikett nicht-scoped

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

ich nur ein Beispiel gemacht und es funktioniert wie erwartet

.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 

Zur Kompilierung an der VS 2015-Eingabeaufforderung:

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