IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 16-bits Assembleur Discussion :

Exécuter un programme VGA en mode réel sous Windows


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut Exécuter un programme VGA en mode réel sous Windows
    Bonjour tous,

    Voici le code censé afficher des barres horizontales sur l'écran positionné en 640x350 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
        org  0x100        ; .com files always start 256 bytes into the segment
     
    videoSegment		equ	0xa000
    page0Offset		equ	0x0000
    SC_INDEX		equ	0x03c4
    SCREEN_HEIGHT		equ	350
    SCREEN_WIDTH_IN_BYTES	equ	80
    DEMO_AREA_HEIGHT	equ	336
    DEMO_AREA_WIDTH_IN_BYTES equ	40
    VERTICAL_BOX_WIDTH_IN_BYTES equ	10
     
        section	.data
     
        section	.text
     
    start:
    	mov ax, 0x10
    	int 0x10	; dos :set video mode (640x350)
    	mov ax, videoSegment
    	mov es, ax
    ; affiche le fond des barres horizontales
    	mov dx, SCREEN_HEIGHT/4
    	sub di, di
    	mov ax, 0xffff
    	mov bx, DEMO_AREA_WIDTH_IN_BYTES/2
    	mov si, SCREEN_WIDTH_IN_BYTES - DEMO_AREA_WIDTH_IN_BYTES
    	mov bp, (SCREEN_WIDTH_IN_BYTES * 3) - DEMO_AREA_WIDTH_IN_BYTES
     
    backgroundLoop:
    	mov cx, bx
    	rep stosw
     
    	add di, si
     
    	mov cx, bx
    	rep stosw
     
    	add di, bp
     
    	dec dx
    	jnz backgroundLoop
     
    	mov ah, 0x00
    	int 16h		; BIOS : wait for keyboard input
     
    	mov ah, 0x03
    	int 0x10	; dos :set video mode (TEXT 80x25)
     
    	mov  ah, 0x4c     ; "terminate program" sub-function
        	int  0x21         ; call dos services
    Malheureusement lorsque je le lance j'ai droit à un : "This system does not support fullscreen mode ....."

    Question : Comment puis-je runner ce programme sous Windows ?

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 453
    Points : 43 115
    Points
    43 115
    Par défaut
    Tu ne pourras pas, ce code est prévu pour fonctionner en mode rééel, pas en mode protégé.

    Pour le faire, il te faudrait passer par les API Windows notamment DirectX.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre expert

    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 3 583
    Points
    3 583
    Par défaut
    Sinon, ce bon vieux DosBOX.

    Quel est donc ton besoin de développer pour VGA ?
    "La révolution informatique fait gagner un temps fou aux hommes, mais ils le passent avec leur ordinateur !"

  4. #4
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Purement par plaisir de la découverte. Je possède depuis longtemps le bouquin de M.Abrash sur la programmation graphique et j'ai décidéfede le pratiquer ,voilà tout. Merci pour vos réponses

  5. #5
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    Citation Envoyé par exe2bin Voir le message
    Je possède depuis longtemps le bouquin de M.Abrash sur la programmation graphique et j'ai décidéfede le pratiquer ,voilà tout.
    eh oui, sauf que de mémoire je crois que j'ai du moi-même acheter le bouquin au siècle dernier, et que déjà c'était un recueil d'articles parus dans Dr Dobbs et autres qui datait de quelques années, depuis l'informatique a sacrément évolué et on écrit plus soi-même son bresenham segmenté, on utilise des fonctions faites par d'autres dont le code a prouvé sa solidité et son efficacité, non pas parcequ'on ne veut pas savoir ce qu'il y a sous le capot, mais il y a énormément de chose à faire sur les couches du dessus pour ne plus passer son temps à réinventer la roue

    sinon comme dit zecreator, Dosbox est probablement ce qu'il te faut pour faire tourner ton code

  6. #6
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Je sais je sais ..... Tout le monde dit ça.Mais je le redis : cc'est mon plaisir. Vous êtes probablement des gens très efficaces ; je suis un incurable dilettante. Le monde est ainsi.

  7. #7
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    DosBox sera alors un très bon outil pour toi

    Par contre, 640x350 c'est pas du VGA mais du EGA avec le VGA tu peux faire du 640x480 !!!
    Bon, en 16 couleurs par contre
    Et du plus tu vas devoir jouer avec les masques car chaque octet représente 8 pixels et donc tu as 4 plans pour chaque bit.

    Donc pour afficher un point tu dois modifier le le bit correspondant sur chaque plan.... c'est super casse-couille, mais à l'époque
    on n'avait pas le choix

  8. #8
    Membre expert

    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 3 583
    Points
    3 583
    Par défaut
    Moi je comprends tout à fait ton envie de "replongé" dans du code d'époque. Il met arrivé de bidouiller quelques codes en Quickbasic sous DOSBOX, juste pour le fun, et de faire des p'tits jeux "comme à l'époque".

    Je trouve que l'affichage de l'époque a un certain charme, et il est amusant de constater qu'il y a beaucoup de jeux actuels qui reviennent au pixel et aux formes cubiques.

    Comme quoi, rien n'est définitivement mort.
    "La révolution informatique fait gagner un temps fou aux hommes, mais ils le passent avec leur ordinateur !"

  9. #9
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Des personnes passionnées qui programme sur d'ancienne machine , il y'en beaucoup plus qu'on ne le crois
    Il y a toujours des personnes qui programme pour de l'Atari ST ou de l'Amiga par exemple.

    Mais je trouve que la mise en garde des personnes sur la programmation actuel/vielle machine est justifié , d'un coter tu dit vouloir exécuter ton programme pour Windows donc on peut croire que ton but était de faire un programme qui marche sur une machine récente
    BufferBob a raison il faut pas prendre de tel parole comme un désencouragement , mais comme une information , je pense qu'il est important de savoir comment l'informatique a évolué surtout quand on programme sur de vielles machines si on veut comprendre comme fonctionne une machine plus récente , cela te permettra te comprendre pourquoi ton programme ne peut plus tourner sur un Windows par exemple .
    Je dis cela sachant que je programme en assembleur sur des villes machines assez régulièrement (au cas ou tu crois que on programme que sur du matériel récent)

    La programmation pour MS-DOS , peut être une bonne occupation ou a titre pédagogique , même si personnellement je n'aime guère la programmation sur MS-DOS et/ou du x86.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/07/2009, 11h03
  2. Réponses: 0
    Dernier message: 13/07/2009, 16h28
  3. exécuter un programme à distance en mode graphique
    Par [Hugo] dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 27/05/2008, 16h24
  4. Réponses: 3
    Dernier message: 15/05/2006, 09h49
  5. [TP]Problème de modes graphiques sous Windows XP
    Par Gabi dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 04/04/2004, 17h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo