Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1263 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  [TASM] Re

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[TASM] Re

n°999961
arsenik11
Posté le 03-03-2005 à 18:20:33  profilanswer
 

Est ce que quelqu'un pourrait pourquoi ce code ne fonctionne pas ?
ça m'affiche ça :

Citation :


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¸ ë9‹Fü‹Vþ ƒÒ S‹ÚÁèÁêÁã Ã[@‹ØŽFØ´JÍ!‹Æÿ^ðƒÄ=  tP´IÍ!X_Y[ÉÃV€ Ð\ Ðl ÐC:\WINDOWS\dpmiload.exe                                                                                                                                                                                       
DOS SETBLOCK (4Ah) error  


 
Le code :

Citation :


; 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 !

mood
Publicité
Posté le 03-03-2005 à 18:20:33  profilanswer
 

n°1003506
db__
spécialiste de l'à peu près
Posté le 07-03-2005 à 12:41:26  profilanswer
 

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

n°1044070
haythem_be
CA for ever
Posté le 12-04-2005 à 12:50:53  profilanswer
 

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 :)
 

n°1044076
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-04-2005 à 12:54:55  profilanswer
 

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 '$'


---------------
J'ai un string dans l'array (Paris Hilton)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  [TASM] Re

 

Sujets relatifs
[TASM] Help Noob[ASM] Où est passé Tasm ?
ou trouver tasm ? 
Plus de sujets relatifs à : [TASM] Re


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR