[ASM] Parcours d'un tableau "BYTE" et "WORD"

Parcours d'un tableau "BYTE" et "WORD" [ASM] - ASM - Programmation

Marsh Posté le 14-03-2004 à 17:22:58    

Bonjour,
 
est-ce que ceci marche:
 

donnees segment 'date'
tablo db 4 dup ('0','0','0','$')
donnees ends
code segment 'code'
assume ds:donnees
mov si,0
boucle: cmp byte ptr[tablo+si],'$'
        jne continue
        jmp fin
continue: mov dl,byte ptr[tablo+si]
          mov ah,2
          int 21h
          inc si
fin:      mov ah,4ch
          int21h
code end


 
 

donnees segment 'data'
tablo dw 4 dup ('0','0','0','$')
donnees ends
code segment 'code'
assume ds:donnees
mov si,0
boucle: cmp byte ptr[tablo+si],'$'
        jne continue
        jmp fin
continue:  
          lea dx,word ptr[tablo+si]
          mov ah,9
          int 21h
          inc si
          inc si
     
 
fin:      mov ah,4ch
          int21h
          code end


 
 
Merci
 
si ca ne marche pas, merci de m'indique ou sont les bourdes.


Message édité par jijiz le 14-03-2004 à 17:36:07
Reply

Marsh Posté le 14-03-2004 à 17:22:58   

Reply

Marsh Posté le 14-03-2004 à 17:33:31    

non.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 14-03-2004 à 17:38:48    

j'ai édité ma question, tu édite ta réponse??? :ooooo)

Reply

Marsh Posté le 14-03-2004 à 17:39:31    

"Un mot aimable est comme un jour de printemps."


Message édité par jijiz le 14-03-2004 à 17:39:42
Reply

Marsh Posté le 14-03-2004 à 17:48:24    

Y-a-t il une âme charitable?

Reply

Marsh Posté le 14-03-2004 à 17:49:45    

1) c'est censé faire quoi ?
 
2) deux versions ?
 
3) de mémoire la fonction 9h affiche jusqu'au '$', tu as l'air de croire que ça va t'afficher caractère par caractère...
 
4) pour des dw ? tu veux afficher des caractères ou un autre truc ?
 
5) si tu laisses ça comme ça, t'auras rien d'autre comme réponse...

Reply

Marsh Posté le 14-03-2004 à 17:51:52    

je crois que ça affiche quelque chose à l'écran. l'algo avec les bytes devrait fonctionner. Par contre avec les words, ya pas de raison que ça fonctionne comme il faut. Faut voir en fait ce que fait le service 2h, s'il affiche une chaîne ou un byte. Mais un word, ça m'étonnerait même que ça existe. Donc pour moi, le 2è algo ne peut pas marcher.
 
Edit: et surtout comparer un seul byte sur les deux, ça tombe sous le sens: la boucle jouant sur des words, si le '$' se trouve à la mauvaise place, tu n'arriveras jamais dessus.


Message édité par drasche le 14-03-2004 à 17:53:01

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 14-03-2004 à 18:17:32    

jijiz a écrit :

"Un word aimable est comme une b... de printemps."


 
ok je sors


Message édité par red faction le 14-03-2004 à 18:18:23
Reply

Marsh Posté le 14-03-2004 à 18:18:52    

jijiz a écrit :

"Un mot aimable est comme un jour de printemps."


 
 
Un word aimable est comme une b...  le printemps  :o  
 
ok je sors
 

Reply

Marsh Posté le 14-03-2004 à 19:03:19    

je veux percourir les deux tableau et afficher carac par carac

Reply

Marsh Posté le 14-03-2004 à 19:03:19   

Reply

Marsh Posté le 14-03-2004 à 19:08:31    

bin le second algo peut pas marcher alors [:spamafote]
 
parce que tu sais pas forcément où sera le '$' dans le word, en poids fort ou en poids faible.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 14-03-2004 à 19:31:57    

pr le premier, v'là une solution ki marche :

Code :
  1. donnees segment 'date'
  2. tablo db 4 dup ('1','2','3','$')
  3. donnees ends
  4. code segment 'code'
  5. assume ds:Donnees, cs:code
  6. debut:
  7. MOV AX,DONNEES
  8. MOV DS,AX
  9. mov dx,0
  10. mov si,0
  11. boucle:
  12. cmp byte ptr[tablo+si],'$'
  13.         jne continue
  14.         jmp fin
  15. continue:
  16. mov dl, byte ptr[tablo+si]
  17.         mov ah,2
  18.         int 21h
  19.         inc si
  20. jmp boucle
  21. fin:   
  22. mov ah,4ch
  23.         int 21h
  24. code ends
  25. end debut


 
pr le second, on pourrait faire un truc du genre :

Code :
  1. donnees segment 'data'
  2. tablo dw 4 dup ('1','2','3','$')
  3. donnees ends
  4. code segment 'code'
  5. assume ds:Donnees, cs:code
  6. debut:
  7. MOV AX,DONNEES
  8. MOV DS,AX
  9. mov si,0
  10. boucle:
  11. cmp word ptr[tablo+si],'$'
  12.         jne continue
  13.         jmp fin
  14. continue
  15.         mov dx,word ptr[tablo+si]
  16.         mov ah,2
  17.         int 21h
  18.         inc si
  19. jmp boucle     
  20. fin:    mov ah,4ch
  21.         int 21h
  22. code ends
  23. end debut


 
mais ca affiche "1 2 3" au lieu de "123" (pr corriger ça il faudrait mettre 2 inc kom tu l'as fait, mais ca pourrait etre problématik pr les tablos de longueur impaire). de tt façon, utiliser des word pr gérer les caractères, c une perte de place inutile...


---------------
HardGamers.org
Reply

Marsh Posté le 14-03-2004 à 19:39:22    

Voila ca marche

donnees segment 'date'
tablo db 4 dup ('1','2','3','$')
donnees ends
 
 
code segment 'code'
assume ds:Donnees,cs:code
 
debut:
 MOV AX,DONNEES
 MOV DS,AX
       mov si,0
      ;mov dx,0
boucle:      cmp byte ptr[tablo+si],'$'
        jne continue
        jmp fin
continue: mov dl,byte ptr[tablo+si]
          mov ah,2
          int 21h
          inc si
          JMP boucle
fin:      mov ah,4ch
          int 21h
code ends
end debut


 

donnees segment 'data'  
 tablo dw 6 dup ('1','2','3','4','5','$')
donnees ends  
 
code segment 'code'  
assume ds:Donnees, cs:code  
 
debut:
 MOV AX,DONNEES
 MOV DS,AX
 
 mov si,0  
 
boucle:  
 cmp word ptr[tablo+si],'$'  
        jne continue  
        jmp fin  
 
continue:  
        mov dx,word ptr[tablo+si]  
        mov ah,2
        int 21h  
        inc si
        inc si
 jmp boucle      
 
fin:    mov ah,4ch  
        int 21h  
 
code ends
end debut

Reply

Marsh Posté le 14-03-2004 à 19:40:21    

VIVE MONSIEUR TOMATE QUI MA GRIllé

Reply

Marsh Posté le 21-04-2004 à 00:53:48    

Encore une petite correction..."inc si et inc si" chez moi ça fait "add si, 2"


Message édité par christophe_d13 le 21-04-2004 à 00:55:31
Reply

Sujets relatifs:

Leave a Replay

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