CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[ASM] Afficher un bitmap

roger_barry
roger_barry
Niveau 10
25 mai 2005 à 03:22:56

Bonjour, je cherche comment afficher un bitmap en assembleur x86 mais je trouve vraiment pas! J´ai été voir sur d´autre site et j´ai aussi été sur la liste d´interruption de ralf brown mais je trouve rien.

Quelqu´un sait comment fait pour afficher un bitmap en assembleur parce que c´est vraiment chiant dessiner pixel par pixel ^^

Lapintade
Lapintade
Niveau 30
25 mai 2005 à 09:55:06

L´assembleur est un langage trés bas niveau permettant de faire des operations avec des registres. N´espere pas trouver des fonctions pour afficher des bitmap.
Afficher une image point par point, c´est pas si lourd que ca. Avec des gros move tu peut certainement copier 4 ou 8 points d´un coup. C´est l´histoire d´une grosse boucle.

dnob700
dnob700
Niveau 10
25 mai 2005 à 18:07:37

sous windows tu peut, si tu ne tient pas à faire du pure assembleur, faire un call BitBlt

c´est la fonction de l´api win32 pour afficher les bitmaps. Je te laisse en trouver les paramtères correctes.

gollumkawder
gollumkawder
Niveau 10
25 mai 2005 à 18:25:34

prononce pas win32 malheureux !

lag-it
lag-it
Niveau 10
25 mai 2005 à 18:58:10

Sinon tu peux utiliser un Framework/API plus récente comme les MFC ou wxWidgets ( ->google) avec le système de DeviceContext.

Bon après si c´est pour faire un jeux, il vaut mieux te tourner vers la SDL, OpenGL, DirectX...

lag-it
lag-it
Niveau 10
25 mai 2005 à 19:00:40

Mais quand tu dis :

" Quelqu´un sait comment fait pour afficher un bitmap en assembleur parce que c´est vraiment chiant dessiner pixel par pixel ^^"

T´as initialisé le mode graphique avec l´int 21h ?
Dans ce cas il est tout de même préférable de te tourner vers une API ou un Moteur graphique de plus haut niveau, parce que c´est un peu dépassé tout ca...

neg282
neg282
Niveau 7
25 mai 2005 à 20:14:07

pourquoi tu n´apprend pas le C ? C´est quand meme plus simple. L´assembleur, pour moi, tu l´apprend seulement pour mieux comprendre comment marche ton ordi.

DarkPaladin
DarkPaladin
Niveau 5
25 mai 2005 à 21:07:45

C´est quand meme tres lents dessiner pixel par pixels,

copie la couleur dans le buffer, incremente la pos,.... suiteve,,....

Bref, ca depend aussi dans quoi tu travailles(dos,win,...)

comme dis lapintade, si tu utilises les simd, tu vas pouvez optimiser ton affichage ou sinon utilise le bon vieux rep en asm

je ne sais pas si tes pixels sont en 8,16 ou 32 bits...

mais bon,

Mov Esi,Bitmap
Mov Edi,TonEcran
. ..positionne...

blablabla:
mov ecx,largeur / /c´est du 32 bits la
rep movsd

add edi,offset entre ton ecran et le bitmap*4
dec edx / / ta hauteur
jnz blablabla

rapide!!! :P

LGV
LGV
Niveau 28
25 mai 2005 à 22:05:10

de plus il est assez facile de poursuivre l´idée et de faire une routine pour des sprites de n´importe quelle taille, et/ou profondeur de couleur : des shr pour déterminer le nombre de dwords, plus qu´à caser un rep movsd suivi d´un movsw et/ou d´un movsb pour compenser un alignement non multiple de 4

roger_barry
roger_barry
Niveau 10
25 mai 2005 à 22:12:41

Je crois que je vais prendre la solution de lapintade, sauf que sa solution est juste... longue a effectuer!

Dessiner des image avec des boucles c´est ce que je faisait mais je me demandait si il y avait moyen d´afficher un bitmap dans mon programme au lieu de faire un longue bouble dessiner pixel par pixel.

Sinon je fais du 16 bits sous DOS, alors si vous avez d´autre solutions a me proposer dites les moi sauf que je veut préciser que je suis encore niveau débutant, je conprend et je maîtrise les bases mais m´en reste beaucoup a apprendre!

LGV
LGV
Niveau 28
26 mai 2005 à 01:37:03

ben.. :-? tu procedes le plus normalement du monde : tu ouvres ton fichier image ( un format simple genre un bon TGA de base, pour commencer), tu lis tes données, et t´as plus qu´à les coller en VRAM pour l´affichage ( avec un systeme de color key pour masquer les pixels " transparents" vu que tu veux des sprites
Y´a qq fonctions via l´int 21h du DOS pour tout ce qui est acces aux fichiers, pour le reste c´est uniquement des instructions de chaines, donc des STOSx/MOVSx comme on disait plus haut

LGV
LGV
Niveau 28
26 mai 2005 à 09:49:57

( au passage, si tu fais du 16 bits juste pas que ton compilo est " limite" et non a cause de ton CPU, tu peux " forcer" le mode en specifiant manuellement les prefixes des instructions ; par ex. avec un DB 66h avant un REP MOVSB, a l´execution c´est interprete comme un REP MOVSD puisque c´est le prefixe " 32 bits" pour les instructions de chaines)

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment