Re [TASM] - ASM - Programmation
Marsh Posté le 07-03-2005 à 12:41:26
Bonjour
je ne fais plus d'assembleur dos depuis longtemps et j'ai oublié les appels int 21h. Mais je ne serais pas surpris que le problème vienne du fait que la chaine ne soit pas terminé par un 0 donc il écrit tout ce qu'il y a un mémoire jusqu'à trouver un octet nul.
je suggère de supprimer la ligne mov nb, 't'
et remplacer la ligne nb db ? par nb db 't',0
Marsh Posté le 12-04-2005 à 12:50:53
non, mais plutot un $; car la fonction 9 de l'interruption 21h affiche une chaine de caractére mais a condition:
1- le debut de la chaine ( l'offset) doit etre dans DX
2- cette chaine doit se terminer par un $
pour la premiere condition tu peux utliser soit LEA DX, nom_chaine, soit mov DX, offset nom_chaine
mais pour toi je ne vois pas l'utilité de la fonction 9
tu peux utiliser les services de la fonction 2 de l'int 21h
( le caractére à afficher doit etre placé dans DL)
N.B: n'oublie pas qu'en assembleur tu doit envoyer le code ASCII du caractére à afficher C.A.D pour afficher 0 tu charge DL par 30h; si vous voulez d'autre explication sur l'affichage n'hesitez pas
Marsh Posté le 12-04-2005 à 12:54:55
arsenik11 a écrit : Est ce que quelqu'un pourrait pourquoi ce code ne fonctionne pas ? |
parce que ta chaine n'est pas terminée par '$'
Marsh Posté le 03-03-2005 à 18:20:33
Est ce que quelqu'un pourrait pourquoi ce code ne fonctionne pas ?
ça m'affiche ça :
t BÛ ÛGÛ2Ðì»S >Þq u
ìjÐ0 QRVWðTX;Ät¸ ëè _^ZYËÈ, SQWÈØºÂ¸ =Í!s¸ é ØVܹ ´?Í!s
´>Í!¸ éï °3É3Ò´BÍ!s
´>Í!¸ éÙ FøVú´>Í!FÜ=MZt¸ éÁ FäÐÁàÁêFÔVÖ~ÞFàÿ tHÐÁà ÁêÇÒ +FÔVÖFüVþFøVú+FÔVÖ Ò SÚÁèÁêÁãÃ[@Ø´HÍ!s¸ ë\FØFÚFòÈØºÂÐÀ^ظKÍ!s¸ ë9FüVþ Ò SÚÁèÁêÁãÃ[@ØFØ´JÍ!Æÿ^ðÄ= tP´IÍ!X_Y[ÉÃV Ð\ Ðl ÐC:\WINDOWS\dpmiload.exe
DOS SETBLOCK (4Ah) error
Le code :
; Directives d'assemblage
; ------------------------------
.386
code segment use16
assume cs:code, ds:code, ss:code
org 100h
; -------------------------------
debut:
mov nb, 't'
mov dx, offset nb
mov ah, 09h
int 21h
; Fermeture du programme
; ------------------------------
ret
; Déclaration de la variable
nb db ?
code ends
end debut
; -------------------------------
Merci d'avance !