Hallo zusammen, ich habe einen Assemblercode, den ich mit verschiedenen Optionen assemblieren kann. Diese stecken in Defines, im Beispiel: #define Version "12.34 " .set Schalter1 = 'e' .set Schalter2 = 'x' Nun möchte ich einen Startup-Prompt haben, der diese Optionen anzeigt. Wenn beide Schalter gesetzt sind ist das ja kein Problem: PromptMessage: .db "SoftwareXY ",Version,Schalter1, Schalter2," (c)" Habe ich aber nun einen Schalter nicht aktiv, stolpert der Assembler über den fehlenden Wert. Hat einer eine Idee wie man das behebt ? Danke und Gruß Uli
So: #if (Debug != 0) #message "*** Debug eingeschaltet" #endif Einfach mehrere .db Strings mit if-Abfragen aneinanderformatieren. Sieht allerdings extrem Sch.. aus! Grüße marc
...ich will ja nicht undankbar sein, aber mit verschiedenen Zeilen und #if's kann ich es auch.... Aber wenn das nicht zwei sondern fünf Schalter mit beliebigen Kombinationen sind, wird's ein bisserl länglich. Ich suche also eine Möglichkeit, im Präprozessor einzelne Character zu einem String zusammenzubauen. Gruß Uli
Definiere für nicht implementierte Schalter nen Leerstring:
1 | #define M1 "Hallo" |
2 | #define M2 "x" |
3 | #define M3 "" ; leer |
4 | #define M4 "z" |
5 | |
6 | .db M1 \ |
7 | M2 \ |
8 | M3 \ |
9 | M4 \ |
10 | , 0 |
Peter
Hallo Peter, vielen Dank, das hat mich ein bisserl weiter gebracht. Aber gleich darauf folgte das zweite Problem: Wenn ich die Optionen als Strings definiere, kann ich sie nicht mehr mit #if-Statements für die bedingte Assemblierung nutzen. Mit Assemblerdirektiven würde das gehen, da dort auch ein Typ Char erlaubt ist: .set Schalter = 'A' .if Schalter == 'A' ----code---- .endif Nun kann ich nicht in eine Schachtel mit Assemblerdirektiven etwas für den Präprozessor packen, da dieser immer zuerst läuft und somit die #defines unabhängig von den Bedingungen der Assembler-Direktiven alle sequenziell abgearbeitet werden. Ich helfe mir im Moment mit einem numerischen Schalter im Präprozessor, aber so richtig elegant ist das irgendwie nicht. Gruß Uli
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.