Vous n'êtes pas identifié.
en fait ça concerne l'effacement de l'écran et l'affichage de bmps:
void disp_bmp (BMPTabType BmpTab,int segmt) { asm mov ax,segmt asm mov es,ax asm mov si,BmpTab asm xor di,di asm mov cx,0x200 asm cld asm rep movsw }
là avec le suffixe 'movsw' on copie mot par mot, mais les tableaux font quand même 1024 octets!! alors ça ferait qqchose de changer leur array et de le mettre à 512 (en changeant leur contenu, mais kan c en hexa c facile, on enlève 1 '0x' sur 2...)
Sinon pareil pour l'écran:
voila une routine faite par 2072:
void clearpage(short page) { asm mov ax,page asm mov es,ax asm xor di,di asm mov cx,0x400 asm shr cx,1 asm xor ax,ax asm cld asm rep stosw }
là on voit que l'on copie 1024 mots, soit 512 mots sur 2 buffers, alors que c'est censé n'en effacer qu'un seul, n'est-ce pas ?
ou alors, faut il mettre le suffixe stosb ?
Donc vous l'aurez (ou pas) compris mon objectif est d'avoir des routines d'effacage d'écran claires car ç m'embrouille tout ça, car g l'impression que les routines de db-lib ont du mal à effacer les buffers de gx2
Hors ligne
ya un truc que je comprends pas dans cette fonction...
pourquoi mettre :
asm mov cx,0x400 asm shr cx,1
alors qu'on pourrai mettre directement :
asm mov cx,0x200
mais en tout cas dans le cas ci dessus, c'est bien asm rep stosw
puisqu'au final, cx contient 0x200 soit 512 -> utiliser des mots...
sinon je ne comprend pas pourquoi la fonction toute simple de db lib ne marcherait pas....
Hors ligne
oauis pour le
asm mov cx,0x400
asm shr cx,1
c'est juste pour être plus clair... on efface bien 1024 mais on divise par 2 puisqu'on efface mot/mot...
Hors ligne
là avec le suffixe 'movsw' on copie mot par mot, mais les tableaux font quand même 1024 octets!! alors ça ferait qqchose de changer leur array et de le mettre à 512 (en changeant leur contenu, mais kan c en hexa c facile, on enlève 1 '0x' sur 2...)
ms qu' est ce que ca change que ca soit codé en 1024 octet ou en 512 mots puisque c' est lu en 512 mots ???
Hors ligne