Weiss jemand eine geniale Lösung dazu?
Code: Alles auswählen
Macro beispiel
;hier steht Code
Sprungmarke:
;hier gehts weiter
EndMacro
beispiel
beispielCode: Alles auswählen
Macro beispiel
;hier steht Code
Sprungmarke:
;hier gehts weiter
EndMacro
beispiel
beispielCode: Alles auswählen
Macro beispiel
Repeat
;hier steht Code
If (irgendwas)
Break
EndIf
;hier steht noch mehr Code
Break
ForEver
EndMacro
beispiel
beispiel Code: Alles auswählen
Macro Sprung
;Hier geht's weiter
EndMacro
Macro Beispiel
;Hier steht Code
Sprung
EndMacro
Beispiel
Beispiel
Code: Alles auswählen
Macro Bei
;Hier steht Code
EndMacro
Macro Spiel
;Hier geht's weiter
EndMacro
Macro Beispiel
Bei
Spiel
EndMacro
Bei
Sprungmarke:
Spiel
BeiSpielCode: Alles auswählen
Macro beispiel
Debug a
If a = 1
!jmp @f ; springt nach vorne zum nächsten anonymen Label
EndIf
Debug "a ist nicht 1"
!@@: ; Anonymes Label
EndMacro
a = 1
beispiel
a = 2
beispielKann ich in meinem Fall nicht so tunNicTheQuick hat geschrieben:..., würde ich es so machen:
Muss aberDerren hat geschrieben:Die Sprungmarke gehört da einfach nicht rein
Genial!STARGÅTE hat geschrieben:Das Problem kann man mit sogenannten anonymen Labels beheben...
Code: Alles auswählen
! macro generateLabel {
! local Label1
! MyLabel1 equ Label1
! }
Macro beispiel
!generateLabel ; neuen Namen für 'MyLabel1' generieren
Debug a
If a = 1
!jmp MyLabel1 ; springt zum dem generierten Label 'MyLabel1'
EndIf
Debug "a ist nicht 1"
!MyLabel1:
!restore MyLabel1 ; vorherigen Name wieder herstellen, bei Verschachtelung
EndMacro
a = 1
beispiel
a = 2
beispielCode: Alles auswählen
! macro generateLabel {
! local Label1
! MyLabel1 equ Label1
! }
Macro beispiel
!generateLabel ; neuen Namen für 'MyLabel1' generieren
Debug a
If a = 1
!JMP MyLabel1 ; springt zum letzten MyLabel1 im Macro
EndIf
!generateLabel ; neuen Namen für 'MyLabel1' generieren
!JMP MyLabel1 ; springt in die nächste Zeile, zum aktuellen "MyLabel1"
!MyLabel1:
Debug "inneres MyLabel1"
!restore MyLabel1 ; vorherigen Name wieder herstellen, bei Verschachtelung
; nach dem restore ist wieder das vorherige MyLabel1 aktuell, also das in der nächsten Zeile
!MyLabel1:
Debug "aeusseres MyLabel1"
!restore MyLabel1 ; vorherigen Name wieder herstellen, bei Verschachtelung
EndMacro
a = 1
beispiel
a = 2
beispielCounter mit Zahlen nicht unbedingt, aber "Local Label1" erstellt immer einen neuen, einmaligen Namen.7x7 hat geschrieben:Verstehe ich das richtig, dass "Label1" sowas wie ein Counter ist
Man kann sagen, MyLabel1 ist sowas wie ein Macro, dem hier der eindeutige Name von Label1 zugewiesen wird.7x7 hat geschrieben:und "MyLabel1 equ Label1" dann ein (bei Aufruf) fortlaufendes Label erstellt?