L'impression d'une nouvelle ligne dans la langue de l'assembly avec MS-DOS int 21h appels système
J'ai essayé d'imprimer une nouvelle ligne de tout l'impression de l'alphabet à l'aide du langage assembleur en nasmide depuis quelques jours et ne pouvez pas l'obtenir, ce que j'ai essayé jusqu'à présent a rien imprimé, imprimé seulement Un ou imprimé une multitude de symboles, Google n'a pas été utile pour moi j'ai donc décidé de poster ici.
Mon code pour l'instant est
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
- utilisez les commentaires dans votre assemblée
Vous devez vous connecter pour publier un commentaire.
Code pour l'impression des nouvelles de la ligne de
ascii ---> 10 Nouvelle Ligne
ascii ---> 13 Retour Chariot
Qui est le code de l'assemblée de la nouvelle ligne, le code est inspirated avec la machine à écrire.
Notre professeur nous a raconté l'histoire mais je ne suis pas très bonne en anglais.
Cheers 🙂
program.exe > foo.txt
. (Et oui,int 21h / ah=02h
est STDOUT, pas l'écran en particulier)mov ah, 02h
est redondant:int 21h
avecah=2
conserve AH (et tous les autres registres, à l'exception de AL, où il renvoie le caractère écrit). Quelques-uns utilisent le plein AX pour une valeur de retour, mais AH=02h ne l'est pas.Bien, tout d'abord:
Ne va pas vous faire du bien. Vous chargez 0Dh en DL, puis immédiatement à l'écraser avec 0Ah, sans jamais l'avoir utilisé la première valeur... Vous avez besoin pour faire de votre appel (int 21h) sur les DEUX personnages...
En outre, vous êtes à l'aide de DL pour les retours à la ligne remplace l'utilisation préalable pour le personnage... Vous avez besoin de sauvegarder et de restaurer la valeur comme nécessaire.
Fonctionne à 100%.
mov DL,BL
dans la boucle, comme une partie de l'impression. Aussi, vous êtes à la très près d'avoir une propre structure de boucle avec unjcc
en bas, mais a raté de peu. Il est également inutile d'utiliserequ
définit pour le CR et LF si vous n'allez pas les utiliser.vous pouvez simplement utiliser le
mais le déclarer comme un proc dans le fond de votre "main endp" vous pouvez donner le nom que la fonction de saut de ligne et de l'appeler si jamais vous avez besoin d'un saut de ligne
essayer cette