Ja oder Nein in ASM?
-
Hy,
Ich möchte eine art von if(bool_wert == true);.
Ich komme leider nicht weiter.
Kann mir jemand sagen was hier falsch ist?:Begin: call br MOV SI, cmder ; Pointer zum String call print ; Prozedur Stringausgabe cmp al, '1' JNE .loadfilete call wkey loop Begin .loadfilete: mov si, trylf print2: cld ; Strings in Richtung hoehere Adresse auslesen lodsb ; Zeichen von ds:si in al laden cmp al, 0x00 je end_print2 ; wenn Zeichenkette zuende (0), dann zum Funktionsende springen mov ah, 0x0E ; Interrupt 10h Funktion Zeichen ausgeben int 0x10 ; Zeichen ausgeben jmp print2 end_print2: mov al, '0' JMP NEAR Begin
Die Funktion .loadfilete soll nur bedingt gestartet werden.
Danke
RS
-
hmmm
cmp al, ';1'
meinst du da nicht eher
cmp al, '1' ???';1' sind ja schliesslich zwei zeichen = 2Byte = 16bit..
-
Ja klar. Hab ich auch in meinem Code so stehen.
Nur beim Copy & Paste hatte ich wohl einen alten Codeteil erwischt.
Irgendwie habe ich das gefühl das nach dem Jump zum Beginn AL wieder zurückgesetzt wird.
-
Auf jeden Fall vergleichst du AL mit dem Wert '1', was dem dezimalwert 49 entspricht. Wolltest du eventuell mit 1 (also ohne ') vergleichen?
-
Bedeutet das das ich mit '' einen String vergleiche und ohne '' eine Zahl?
-
naja '1' ist ein ASCII Zeichen TriP.. shcon sagte. dessen dezimalwert ist 49 und ist der Index in der Asciitabelle.
cmp al, '1' ist also das gleiche wie
cmp al, 49dps: mit dem d hinter der 49 bin ich mir nich sicher.. mein halt dass es dezimal ist nicht hex oder sonstwas
-
Ich danke Vielmals.