Sers,
ich beschäftige mich seit kurzer Zeit mit Assembler und bin gerade dabei ein Programm zu schreiben, dass PI nach der Monte-Carlo-Methode berechnet. Ich bin gerade dabei, die Anzahl der Tropfen einzulesen und habe dafür das folgende Macro geschrieben:
Code:
get_dropcount Macro buffer
PUSHA
MOV DX , OFFSET buffer
MOV AH , 0Ah
INT 21h
CMP buffer.anz , 0
JE Null
JNE Ende
Null:
echo msg4 ; Null ausgeben
POPA
Ende:
echo msg5 ; Nicht Null ausgeben
POPA
EndM
Die Struktur von Buffer ist
Code:
puffer STRUC
max
DB 13
anz
DB ?
txt
DB 16 DUP (?)
puffer ENDS
buffer puffer <>
und echo ist ein Macro, dass das erste Argument als Text ausgibt.
Mein Problem ist, dass wenn "Null" ausgeführt wird danach auch "Ende" ausgeführt wird, was ich nicht will und das RET aus der Proc fehlt mir. (ich würde gerne ein Macrobibilithek aufbauen)
Deswegen hab ich folgende Fragen:
1) Gibt es eine Art "RET" auch in Macros oder muss ich einfach noche in Label "GanzEnde" ans Ende setzten hinter dem nichts mehr passiert?
2) Was ist der Vorteil / Nachteil eines Macros / einer Prozedur?
3) Okay, das ist noch eine andere Frage: Ich habe mal versucht nach jeweils POPA "PUSH 0" für Null: und "PUSH 1" für Ende: zu übergeben, um herauszufinden, ob eine Zahl eingegebn wzurde. Allerdings sind dann recht bizarre Dinge passiert. Wie kann ich sonst eine Art Result zurückgeben?
Gruß, Moritz
"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer