Aide affighage chiffre asm 8086

MayouMX Messages postés 16 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 28 octobre 2009 - 25 mai 2004 à 15:45
PCBill Messages postés 48 Date d'inscription lundi 25 décembre 2006 Statut Membre Dernière intervention 29 septembre 2009 - 1 juin 2008 à 20:31
Bonjour a tous,
je dois programmer un pong en assembleur et la je butte pour l'affichage des scores.

J'ai créer un segment qui ressemble a ca :

exemple a le tableau du 8
c'est le meme principe pour les autes nombres.
les nombres correspondent a la couleur a afficher

var segment

cpt dw 0

tab8 db 0,57,57,57,57,0
db 57,0,0,0,0,57
db 57,0,0,0,0,57
db 57,0,0,0,0,57
db 0,57,57,57,57,0
db 57,0,0,0,0,57
db 57,0,0,0,0,57
db 57,0,0,0,0,57
db 0,57,57,57,57,0
var ends

Ensuite je voudrais a partir de ces tableaux afficher mes nombres, g donc créer cette procédures :

Affiche8 PROC
PUSH AX
PUSH BX
PUSH CX
PUSH ES

MOV AX,0A000h ;Adresse du tab d'octet
MOV ES,AX
MOV cpt,0 ;variable pour avancer ds le tableau
MOV BX,465 ; indice du premier point a afficher
MOV CX,6
l1:
PUSH BX ; on sauvegarde BX qui contient l'indice d'affichage
MOV BX,cpt ; on met le cpt dans BX
MOV AL,tab8[BX] ; on recupere la valeur du tableau
ADD BX,1 ; on incremente le compteur
MOV cpt,BX ; incrémente le compteur
POP BX ; on recupere l'indice de l'affichage
MOV ES:[BX],AL ; nouvelle couleur pour l'affichage
ADD BX,1 ; incrémente la position d'affichage
LOOP l1

MOV BX,785 ;indice de la seconde ligne a afficher
MOV CX,6
l2:

on refait la meme chose

LOOP l2

POP ES
POP CX
POP BX
POP AX
RET
Affiche8 ENDP

Voila, cette procédure ne m'affiche qu'un seul point a la place d'une barre correspondant au dessus du 8.
Je n'arrive a trouver l'erreur...est ce que c l'acces au tableau qui n'est pas bon ?

Si qqun pouvais me donner un coup de main, ce serai vraiment du bonheur !!

Merci d'avance pour vos reponse

Mayou... :)

1 réponse

PCBill Messages postés 48 Date d'inscription lundi 25 décembre 2006 Statut Membre Dernière intervention 29 septembre 2009
1 juin 2008 à 20:31
Bonsoir,

Peut être que cette procédure d'affichage t'aidera :

displaywholenumber PROC
;-----------------------------------------------------------
;display the non signed decimal number that is stocked in AX
;-----------------------------------------------------------
          push AX
          push dx
          push cx
          mov bx,10           ;BX est le dénominateur
          mov cx,0            ;CX is our counter

          decompose:
              mov dx,0              div bx          ;AX/BX what remains DX and quotient = AX
              push dx         ;stock what remains in the stack
              inc cx
              cmp ax,0        ;quotient = 0 ?
              jnz decompose   ;if not continue decomposition
            
          displ:
              pop ax           ;load a number from the stack
              call displayn    ;in order to display it
              loop displ       ;repeat displayin until CX = 0
              pop cx
              pop bx
              pop ax
              ret
displaywholenumber ENDP
0
Rejoignez-nous