[asm & noob] prob avec une INT

prob avec une INT [asm & noob] - ASM - Programmation

Marsh Posté le 14-08-2002 à 20:16:26    

Bonjour a vous,
je debute en asm et ca commence mal :-/
j'essaye de compiler un bete code qui est censé afficher un simple message.
Ca marche sauf que il affiche plus de caractère que ce qui faut
et ca deconne encore plus si je declare plusieur chaine entre "DATA SEGMENT" et "DATA ENDS"
voici ce code:

Code :
  1. Data Segment
  2.    Message DB "bonjour a tous!$"
  3. Data EndS
  4. Code Segment
  5.    Assume Cs : Code, Ds : Data
  6. Main Proc
  7.    Mov Ah, 09h
  8.    Mov Dx, Offset Message
  9.    Int 21h
  10.    mov AH,4CH
  11. Int 21h ;
  12. Int 20h
  13. Main EndP
  14. Code EndS
  15. End Main

 
 
Pourriez vous m'eclairer ??
Merci d'avance pour vos réponses.
:hello:

Reply

Marsh Posté le 14-08-2002 à 20:16:26   

Reply

Marsh Posté le 14-08-2002 à 21:01:16    

pour déclarer les segments, je ne connais que cette méthode-là : http://www.members.kconline.com/st [...] page6.html

Reply

Marsh Posté le 14-08-2002 à 21:02:05    

mov ax, @data  
mov ds, ax  
 
(ou push @data, pop ds)
 
ds ne doit pas être correctement initialisé.

Reply

Marsh Posté le 14-08-2002 à 21:28:16    

youdontcare a écrit a écrit :

mov ax, @data  
mov ds, ax  
 
(ou push @data, pop ds)
 
ds ne doit pas être correctement initialisé.




 
:jap:

Reply

Marsh Posté le 14-08-2002 à 22:27:39    

youdontcare a écrit a écrit :

mov ax, @data  
mov ds, ax  
 
(ou push @data, pop ds)
 
ds ne doit pas être correctement initialisé.




 
Merci a toi,
j'ai tester le code que t'as lié.
Mais @data semble poser poser probleme.
 
Je compile avec tasm,je c pas si ca a un rapport,
ca me met ca comme erreur.

Code :
  1. Assembling file:   hello.asm
  2. **Error** hello.asm(31) Undefined symbol: @DATA
  3. Error messages:    1
  4. Warning messages:  None
  5. Passes:            1
  6. Remaining memory:  471k


 

Reply

Marsh Posté le 14-08-2002 à 22:36:28    

as-tu essayé en mettant
 
.model small
.data
 
message db "...$"
 
.code
 
push @data  
....
 
?
 
je n'ai jamais utilisé la syntaxe "data segment" & co.

Reply

Marsh Posté le 14-08-2002 à 22:44:29    

youdontcare a écrit a écrit :

as-tu essayé en mettant
 
.model small
.data
 
message db "...$"
 
.code
 
push @data  
....
 
?
 
je n'ai jamais utilisé la syntaxe "data segment" & co.




 
thx  :jap:  ca marche  :hap:  
j'ai utilser ca avec 'mov ax, @data' et la plus d'erreur et ca marche parfaitement.
Merci a toi youdontcare.
 
 

Reply

Marsh Posté le 15-08-2002 à 00:52:01    

encore une ptite question y as t'il un fonction de l'interruption 21h qui permet d'afficher en decimal le contenu de dx?

Reply

Marsh Posté le 15-08-2002 à 00:58:33    

je ne crois pas. en tout cas si elle existe, je ne l'ai jamais trouvée ...
 
comment faire ? tu veux afficher 192. tu divises par 10, il reste 19. tu remultiplies et prends la différence : 192 - 19*10 = 2. 19 / 10 = 1, 19 - 1*10 = 9. reste un nombre en dessous de 10. ensuite, il suffit de rajouter le caractère '0' au nombre pour l'afficher (eg add al, '0';)

Reply

Marsh Posté le 15-08-2002 à 01:10:35    

youdontcare a écrit a écrit :

je ne crois pas. en tout cas si elle existe, je ne l'ai jamais trouvée ...
 
comment faire ? tu veux afficher 192. tu divises par 10, il reste 19. tu remultiplies et prends la différence : 192 - 19*10 = 2. 19 / 10 = 1, 19 - 1*10 = 9. reste un nombre en dessous de 10. ensuite, il suffit de rajouter le caractère '0' au nombre pour l'afficher (eg add al, '0';)




Dommage,je v essayer ta methode,mais demain paske la j'en ai marre de reflechir en binaire.
 :sleep:  
en tout je crois que j'ai compris ,c logique en fait tu extrait chaque digit un a un.
 :jap: Encore merci ydc.


Message édité par Nico5779 le 15-08-2002 à 01:10:57
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed