Drucken Sie eine neue Zeile in Assembler mit MS-DOS int 21h system-Aufrufe
Ich habe versucht, drucken Sie eine neue Zeile, wobei Sie auch drucken Sie das alphabet mit Assembler in nasmide den letzten paar Tagen und kann es nicht erhalten, was ich bisher ausprobiert habe, hat entweder nichts gedruckt, gedruckten nur Einen oder gedruckt werden eine Vielzahl von Symbolen, Google war nicht hilfreich für mich, also habe ich beschlossen, hier zu posten.
Mein code bisher ist
CR equ 0DH
LF equ 0AH
main:
mov AH,02H
mov CX,26
mov DL, 'A'
while1:
cmp DL, 'A'
add DL, 01H
int 21H
mov DL, 0DH
mov DL, 0AH
int 21H
cmp DL, 'Z'
je Next
jmp while1
Next:
mov AH,4CH
int 21h
- verwenden Sie Kommentare in Ihre Montage
Du musst angemeldet sein, um einen Kommentar abzugeben.
Code für den Druck neue Zeile
ascii - - - - > Neue Linie 10
ascii - - - - > 13 Carriage Return
Dass der code in assembly für new line, code ist inspirated mit schreiben Maschine.
Unser professor erzählte uns die Geschichte, aber ich bin nicht gut in Englisch.
Prost 🙂
program.exe > foo.txt
. (Und ja,int 21h / ah=02h
STDOUT, der Bildschirm nicht speziell)mov ah, 02h
ist redundant:int 21h
mitah=2
bewahrt AH (und alle anderen Register außer AL, wo es den gibt Zeichen geschrieben). Ein paar nutzen das volle AX-für einen Rückgabewert, aber AH=02h nicht.Nun, zunächst einmal:
Wird nicht tun Sie etwas gutes. Sie laden 0Dh in den DL und dann sofort überschreiben Sie ihn mit 0Ah, ohne jemals verwendet den ersten Wert..., die Sie brauchen, um Ihren Anruf (int 21h) auf BEIDEN Charaktere...
Außerdem, bist du mit DL für Zeilenumbrüche überschreibt die Vorherige Nutzung für den Charakter..., die Sie brauchen, zu speichern und wiederherzustellen, dass der Wert als notwendig.
100% funktioniert.
mov DL,BL
in der Schleife als Teil drucken. Auch Sie sind sehr nahe zu eine saubere Schleife-Struktur mit einemjcc
an der Unterseite, aber nur knapp. Es ist auch sinnlos zu verwendenequ
definiert für CR und LF, wenn Sie nicht gehen, um Sie zu benutzen.könnten Sie benutzen Sie einfach den
aber erklären Sie als proc unten auf dem "main endp" können Sie Namen, Funktion newline und nennen Sie es, wo immer Sie brauchen ein newline
versuchen, diese