begin process at 2012 05 25 11:48:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Newbii

 > 

pb affichage ligne


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb affichage ligne

samedi 14 août 2004 à 00:54:08 | pb affichage ligne

mat74

salut a ts

voila j'ai fait une fonction pr faire des lignes , j'ai deciner un carre a 100,100 jusqu'a 200,200 et sa marche nickel mais ia un ptit pb qd j'essaie de tracer une ligne qui depasserai x=256 il ne m'affiche pas la ligne mais seulement son premier point . je passe les param par la pile . je ne sais pas trop de quoi sa vient si qq1 pouvait m'aider .
voila le code c'est un peu long mais bon :




.386


code segment use16

assume cs:code, ds:data, ss:pile


debut:

mov ax, data
mov ds, ax

; demarrer le mode vga
mov ah, 0 ; num de la fonction
mov al, 12h ; mode video desiré la 640*480 16coul
int 10h

; affichage du carre
; x y c l o ( c=couleur,l=longeur,o=orientation )
push 100 100 1 100 1
call ligne
push 100 200 2 100 1
call ligne
push 100 100 3 100 0
call ligne
push 200 100 4 100 0
call ligne

; affichage de la ligne
push 255 0 4 100 1
call ligne

; lire caractere pr attendre l'appuis d'1 touche
mov ah, 08h
int 21h

; remettre le mode normal
mov ah, 00h
mov al, 03h
int 10h

; fin prog
mov ah, 4Ch
int 21h


; la fonction pr affiche des lignes

ligne proc near
mov bp, sp

pushf
push ax bx cx dx

; mettre ds cx le 1er param , x
mov cx, ss:[bp+10]
; mettre ds dx le 2eme param , y
mov dx, ss:[bp+8]
; mettre ds al le 3eme param , la couleur
mov al, ss:[bp+6]
; la fonction pr afficher un pixel
mov ah, 0ch

boucle:

; appel de l'interruption
int 10h

; on met ds bx le dernier param , l'orientation
mov bx, ss:[bp+2]
; comparer avec un
cmp bx, 1
; si c'est egale la ligne est horizontal
je horizontal

; sinon la ligne est vertical
; on augmente dx , y
inc dx
; on met ds dx la longueur
mov bx, ss:[bp+4]
; on ajoute y
add bx, ss:[bp+8]
; puis on compare avec dx
cmp dx, bx
; si il ne sont pas egale on recommence
jle boucle
; sinon c'est la fin
jmp fin

horizontal:
; on augmente cx , x
inc cx
; on met ds bx la longueur
mov bx, ss:[bp+4]
; on ajoute x
add bx, ss:[bp+10]
; puis on compare avec cx
cmp cx, bx
; si il ne sont pas egale on recommence
jle boucle
; sinon on arrete

fin:

pop dx cx bx ax
popf

ret 10
ligne endp

code ends


data segment use16


data ends


pile segment stack

remplissage db 256 DUP (?)

pile ends



end debut


jeudi 2 septembre 2004 à 02:01:35 | Re : pb affichage ligne

Gobillot

à mon avis c'est dans les ADD, il faut préciser Word sinon il prend Byte et là c'est tronqué.
add bx, Word ptr ss:[bp+10]

Daniel


Cette discussion est classée dans : ligne, mov, bx, ss, bp


Répondre à ce message

Sujets en rapport avec ce message

Assembleur et langage C sous Linux [ par lapinfroid ] Bonjour a tous ,avant toute chose , je tiens a preciser que j en ai aucune notion d'assembleur Je pratique plutot le C et le JavaDans un programme C , boot secteur [ par henri12 ] salutje viens de decompiler le boot secteur d une disquette de demarrageje voudrais savoir ou puis je mettre 15 octet de code que je veux faire execut débutant besoin d'aide sur programme ... [ par babar34fr ] Bonjour a tous je vient vers vous afin d'avoir un peu d'aide , Débutant en asm , j'ai télécharger le logicie w32dasm ( en parlant de celui-ci , est-ce Executer 2 action en meme temps [ par HirOinEvOl ] Bonjour, je souhaite exécuter les deux codes suivant mais simultanément pour qu'ils puissent tournés en parrallèles. Je n'ai trouvé aucun moyen de l correction d'un code [ par marooh ] bonjour,j'ai écrit un code assembleur qui permet de comparer deux tableaux,ce code je veux l'inserer dans un code c. si vous pouvez bien me le corrige Affichage décroissant et alphabétique de 2 listes(Nom_Prénom et Note) [ par m_didi9 ] [code=autre]Data SEGMENT Mess1 DB 10,13, 'Entrez la liste des Noms :' DB 10, 13, '$' Mess2 DB 'Entrez la liste des Notes :' DB 10, 13, '$' Mess3 un code en assembleur [ par tatouna ] salut à tous, je suis débutante en asm donc j'ai un problème et je souhaite que vous m'aidiez j'ai une chaine de caractère (une date) et je veut la p [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique) [ par dogloop ] J'ouvre ce topic pour essayer de mieux comprendre quelles sont les différentes façons pour accéder à toute la RAM (et aussi peut être la ROM) de mon P modification d'interruption au boot [ par Yoha ] Bonjour, je me suis remis à l'assembleur (sous debug pour éviter les compilations) et j'ai modifié l'interruption 80h. Cela fonctionne très bien sous pb avec JMP [ par kaka83185 ] salut tous le monde,je reste comme d'habitude,débutant en assembleur,je travaille avec emu8086,et j'essaye de faire un programme qui fait les branchem


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales