2016-05-12 26 views
-4

Ich habe versucht herauszufinden, warum mein Code nicht funktioniert.Warum springt dieser Code niemals zu der Bezeichnung "True"?

Ich brauche diese cmp in einer größeren Version dieses Codes als Hauptmenü Optionen zu fragen implementieren mit bestimmten Aktionen jedoch fortfahren, wenn al, '1' Vergleich nicht je zu erkennen und es springt direkt zu jne.

Ich weiß, dass das wahrscheinlich der Fehler beim Vergleich ist, aber was ist der richtige Weg, es zu tun?

.model small 

.stack 100h 

.data 

wm db 0ah, 0dh, "Welcome! please select one of the following options: $" 

op1 db 0ah, 0dh, "Please submit 1 to true and 2 to false: $" 

op1_1 db 0ah, 0dh, "its true!!! $" 

op1_2 db 0ah, 0dh, "its false!!!! $" 


.code 

main PROC 

    mov ax,@data 

    mov ds, ax 
    mov dx, offset wm 
    mov ah, 09h 
    int 21h 

    mov dx, offset op1 
    mov ah, 09h 
    int 21h 

    mov ah, 0ah 
    int 21h 

    cmp al, '1' 
    je true 
    jne false 


success: 

    mov ah,4ch     ; function: DOS Exit Program 
    mov al, 0     ; specify return code 0 
    int 21h     ; adios amigo! 

true: 

    mov dx, offset op1_1 
    mov ah, 09h 
    int 21h 
    jmp success 

false: 

    mov dx, offset op1_2 
    mov ah, 09h 
    int 21h 
    jmp success 

main ENDP 

END main 
+1

Ziehen Sie Ihre Fragen lieber in Frage, anstatt sie mit Symbolen zu markieren. –

+0

Die Frage wurde fett formatiert, damit Sie die Frage vom Code trennen können. Ich habe den Code als Referenz von dem, was ich mache, aber ich habe zuerst angegeben, was ich erreichen wollte –

+1

Sie sollten Ihren gesamten Code in einen Codeblock stecken. Ich weiß nicht asm so kann nicht sicher sein, dass ich es richtig mache. –

Antwort

5

Sie passieren nicht genügend Informationen 0ah mit

mov ah, 0ah 
int 21h 

die Pufferinformationen erfordert zu funktionieren, und gibt eine Folge von Zeichen in einen vom Benutzer bereitgestellten Puffer. Ich schlage vor, Sie

mov ah, 08h 
int 21h 

verwenden, die ein einzelnes Zeichen in al kehrt als Sie erwarten. Es gibt nicht das Zeichen zurück, aber die Funktion 01h tut es.