2017-05-16 2 views
0

Hallo, ich bin wirklich neu in der Sprache.Wie drucke ich, was ich int MASM möchte?

Ich mag meine Zeichen und Variablen Werte und Strings auf meinem DOS-Bildschirm

und ich suche nach vielen Sachen

und die meisten von ihnen sagten mir, habe zu verwenden ‚drucken int‘ Anweisung

.code 
    main PROC 
     mov dl, 'a' 
     mov ah, 2h 
     int 21h 
     exit 
    main ENDP 
    end main 

Ich habe einen Code wie folgt geschrieben, durch die Bewältigung von Internets.

aber ich habe nicht, was 'mov ah, 2h' ist für und

'int 21h' es immer trigers einen Speicherfehler

Ich brauche

wie man weiß, eine bekommen string, ganzzahlige Eingabe durch den Benutzer,

, wie die Werte gedruckt werden, die ich möchte.

bitte helfen

+0

Start hier: http://www.phatcode.net/res/223/files/html/toc.html – Tommylee2k

+0

Was bedeutet "Ausgang"? Was ist ein Speicherfehler? Wird es zurückgegeben, nachdem Sie den Code ausgeführt haben, oder wird es vom Assembler (Compiler) zurückgegeben? Jedenfalls ist der 'mov ah, 2h' der Unterbefehl zum Interrupt-Dienst. Betrachten Sie es als einen großen Switch-Fall. Alle anderen Parameter werden in null oder mehr Register gesetzt. (Auch hier ist ein Spickzettel für die anderen Dienste: http://spike.scu.edu.au/~barry/interrupts.html) –

+0

Ich meinte Ausnahme ausgelöst für Speicherfehler, sorry – unlimitedcoding

Antwort

0

Ihr Programm wird nicht funktionieren, weil dieser Code eine DOS ausführbaren und modernen Windows-Version erzeugt sie nicht mehr unterstützen (here for reference).

für das, was Ihr Code tun, lassen Sie uns Ihren Code analize:

.code 
    main PROC 
     mov dl, 'a' ; Move character 'a' to the dl register 
     mov ah, 2h ; set the ah register to match with the 02 function code (write to STDOUT) 
     int 21h ; trigger the 21h interrupt 
     exit 
    main ENDP 
    end main 

, wenn Sie auf diese Weise lesen Charakter machen wollen (das, wie ich vorher schreiben, wird nicht mehr unterstützt) lesen here, und schauen, um die LESEN Charakter STDIN

EDIT: hier eine einfache Echofunktion:

; retrive a char from input 
mov ah, 1h 
int 21h 
;print that char back 
mov dl, al 
mov ah, 2h 
int 21h 
+0

Ich sehe, dass dies nicht mehr funktioniert und dass die Seite, die Sie verlinkt haben, nützlich ist, aber ich weiß nicht, wie ich diese Informationen verwenden soll :( können Sie mir eine einfache Probe für mich geben, um zu wissen, wie man sie benutzt? – unlimitedcoding

+0

Sie müssen sich auf ah bewegen Funktionscode (01), und dann haben Sie das eingelesene Zeichen gespeichert in al. Siehe [hier] (http://spike.scu.edu.au/~barry/interrupts.html#ah01) –

+0

Ich bearbeitet mit einem einfachen Beispiel , check 'em –