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

Assembleur Discussion :

Interruption de gestion du moniteur


Sujet :

Assembleur

  1. #1
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 2
    Points
    2
    Par défaut Interruption de gestion du moniteur
    Bonjour à tous !

    tout d'abord je tiens à remercier tous les personnes à l'origine de cet espace de "questions/réponses" ainsi que toutes les personnes extérieures qui participent, merci à vous chaque jour j'en apprends d'avantage ! (mais pas assez encore sinon je n'écrirai pas ... )

    Voilà je suis un peu coincé.

    Je vous explique :

    J'ai à réaliser dans le cadre de mes études un projet en assembleur d'émission/réception de caractères (c'est pas ça qui pose problème ). En ce moment , je suis en train de coder un sous-programme qui est appelé lorsque l'utilisateur de mon futur programme aura choisi de débuter une session de dialogue.

    Celui est sensé affiché dans un premier temps l'en tête qui contient le titre de la partie, ce que j'arrive à faire mais à la façon Manouel ...

    Première question :

    Comment est il possible de décaler le curseur à un endroit précis de l'écran (sans afficher un tableau rempli du nbre d'espaces suffisants ) ?

    Mon prof me dit qu'il existe une interruption adequate ... rien de plus.

    Deuxième question :

    Quelle est l'interruption qui se charge d'effacer l'écran ?

    ET enfin ... :

    Par curiosité, qu'est ce que c'est au juste une API et en particulier l'API win 32 ? Comment cela s'utilise -t- il ?

    Voilà, j'espère ne rien avoir oublié à demander et que je ne vous ennuie pas trop avec mes questions trop nulles ...

    Dans tous les cas, merci d'avance !!!

    -------
    "Qui veut devenir dragon doit manger beaucoup de petits serpents" (un petit proverbe chinois pour la route )

    6lv1

  2. #2
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Bonjour et bienvenue !

    Première réponse :

    Si tu es en mode texte, la mémoire vidéo pour ce mode (ça doit être le 03h, c'est-à-dire 80*25 caractères 16 couleur) commence à l'adresse de segment 0B800h.

    Les caractères y sont codés comme suit :
    -1er octet : Code ASCII du caractère
    -2e octet : Attributs du caractère (c'est-à-dire la couleur du fond et du caractère, 4 bits de poids fort -> Fond, 4 bits de poids faible -> Caractère)

    Donc par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mov  ax, 0B800h
    mov  es, ax     ;Pour mettre l'adresse du segment
    mov  [es:0], 'S'  ;Affiche un S
    mov  [es:1], 0Fh ;En fond noir et caractère blanc
    ...
    A partir de là tu peux réécrire tes propres routines sans même utiliser le DOS (wahoo ton prof va être impressionné )...
    Sinon il y a sûrement un Int du BIOS qui fait ça mais je ne sais plus laquelle et je n'ai pas le temps chercher maintenant... Désolé.

    Deuxième réponse

    Tu peux très bien écrire ta propre routine pour effacer l'écran à partir de ce que je t'ai dis plus haut mais sinon tu as :

    Int 10h -> Fonction 06h : Efface l'écran
    Paramètres d'entrée :
    -bh : Attributs des caractères
    -cx : 0 pour commencer en haut à gauche de l'écran
    -dh : Dernière ligne à effacer (24)
    -dl : Dernière colonne à effacer (79)

    Voilà, je trouve la première méthode plus amusante...

    Troisième réponse

    API = Application Programming Interface
    Ce sont des fonctions qui sont mises en place par les systèmes d'exploitation pour créer une interface entre le programme et lui (par exemple ouvrir une fenêtre dans Windows...).
    Mais je n'en dirais pas plus car ce n'est pas vraiment mon domaine donc j'ai peur de dire n'importe quoi...

    Si cela ne te suffit pas n'hésite pas !

    Salut !
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  3. #3
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Si finalement j'ai eu le temps de retrouver la fonction qui positionne le curseur :

    - Int 10h -> Fonction 02h
    -- Paramètres d'entrée :
    dh = ligne
    dl = colonne
    bh = numéro de page (met 0, ça ira)

    Tout ça influence les opérations de lecture écriture du DOS je crois bien, donc c'est ce que tu cherchais, n'est-ce pas ?

    A bientôt !
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue !

    La FAQ Assembleur évoque l'appel des fonctions de l'API :
    http://asm.developpez.com/faq/?page=...2#fx86_win_api
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 2
    Points
    2
    Par défaut ben ... merci
    Salut Nico*3-3
    Tout d'abord je tiens à te remercier d'avoir répondu si vite.

    Tes réponses devraient fonctionner à merveille, je te remercie. Je ne les ai pas encore testées mais ça ne saurait tarder.

    Par contre je suis curieux de savoir ce que signifie le mode "03h, c'est-à-dire 80*25 caractères 16 couleur)".

    Ce que je comprends c'est que l'écran est divisé en 80 lignes et 16 colonnes et que chaque case est codée sur 16 couleurs. C'est bien ça ? Et pourquoi mode 03h, qu'est ce que cela signifie ? Il y en a d'autres ? Mais surtout est-ce que j'ai compris :

    Et oui encore des questions, mais qui sait, peut-être qu'à force je finirai par être utile ...

    Merci encore.

    6lv1

  6. #6
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par 6lv1
    Ce que je comprends c'est que l'écran est divisé en 80 lignes et 16 colonnes et que chaque case est codée sur 16 couleurs. C'est bien ça ?
    Pas tout-à-fait : 25 lignes, 80 colonnes et 16 couleurs.

    Juste pour faire peur voici une liste des modes vidéo standards :
    http://lrs.fmi.uni-passau.de/support...053.HTM#Table9
    T = modes textes,
    G = modes graphiques.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  7. #7
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    ouais merci mais je suis déjà passé par ce site mais j'ai pas eu le courage de le lire, bien que le gars est une tête marrante sur ses photos !

    Je le lirai ou du moins j'essairai de le lire plus tard.

    merci

    6lv1

  8. #8
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 2
    Points
    2
    Par défaut désolé
    Rebonsoir,

    jai essayé avec ça :
    ; ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
         mov AX,my_stack
         mov SS,AX
         lea SP,sommet_pile
         mov AX,my_data
         mov DS,AX
         mov  ax, 0B800h
         mov  es, ax     ;Pour mettre l'adresse du segment
         mov DL,'S'
         mov  [es:0], DL  ;Affiche un S
         mov DL,0Fh
         mov  [es:1],DL ;En fond noir et caractère blanc
    mais le caractère ne s'affiche pas
    comment fait on pour y parvenir ?

    Evidement je dois me planter quelque part mais là je ne vois pas où.

    Merci d'avance.

    Et sinon l'autre méthode marche pas mal merci

    6lv1

  9. #9
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Bonjour !

    Je présume que s'est un éxecutable pour DOS que tu fais...
    Sinon ça ne se codera pas du tout de la même façon...
    Dans un exe pour DOS, il vaut mieux pas s'amuser à bidouiller la valeur du segment de pile (risque d'y avoir un très joli plantage)...

    Donc déjà je de conseille d'enlever les lignes qui touchent à ss et sp.
    Ensuite, veux-tu me dire quel est ton compilateur car les synatxes sont différentes.

    Le jour où tu aura besoin de toucher à ces segments :
    N'est bon que si tu travaille avec FASM ou NASM, sinon pour TASM et MASM il faut faire comme suit :
    Sinon le plus simple à faire avec les deux est :
    Pour contrôler l'écran, un programme doit utiliser un mode vidéo, ce mode définissant la résolution, le nombre de couleurs...
    Il en existe deux types :
    -Modes Texte : Ce sont des caractères que tu dois écrire dans la mémoire vidéo (à partir de 0B800h)
    -Modes Graphiques : Chaque pixel est utilisé et la mémoire vidéo débute à l'adresse 0A000h

    Pour utiliser un mode vidéo, on utilise la fonction 00h de l'Int 10h avec le numéro de mode à utiliser dans al.

    Le DOS utilise par défaut le mode texte 03h, il n'y a donc pas besoin de le réinitialiser au début du programme.
    D'après ce que j'ai pu deviner, tu utilise FASM ou NASM...
    Ta portion de code est sans erreurs (je crois ), essaie donc en enlevant les lignes qui modifie la valeur des segments de pile.
    Si ça ne fonctionne toujours pas, ça doit venir d'un autre endroit de ton code... 8)

    Essaie de faire un test séparé de ton programme principal juste pour voir si ça fonctionne (c'est peut-être ce que tu as déja fait) et si ça ne marche pas, poste tout ton code...

    Salut !
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  10. #10
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Re !!

    Bon, alors j'ai tasm et masm comme compilateurs. Les deux ne me disent pas d'erreurs à la compilation.

    Quant à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    mov AX,my_stack
    mov SS,AX
    lea SP,sommet_pile  
    mov AX,my_data
    mov DS,AX
    c'est dans un cours que je l'ai récupéré. Evidement faut faire le assume ... mais bon que je compile avec tasm ou masm ya pa de souci de compilation et l'éxécution se passe très bien. (mis à part que je n'arrive pas à afficher le caractère 'S' )

    je peux pas te montrer mon programme entier il est trop long pour le mettre là.

    Disons que toi juste pour afficher un 'S', à l'écran de cette façon t'écrirais koi (depuis le début) ? et si après de 'S' tu veux affixher un autre caractère tu fais comment ?

    La méthode avec l'interruption marche niquel mais alors celle là j'avour j'ai un peu de mal à la mettre en ouevre, désolé de faire mon boulet

    Bon ben une fois de plus merci d'avance et bonne soirée.

    6lv1

  11. #11
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Bonsoir !

    Ce que je te propose plus simplement, c'est que tu fasses un programme de test avec TASM ou MASM et qui ne ferais qu'afficher les lettres à l'écran car moi je ne connais pas très bien cette syntaxe...

    Dans ton programme :
    - Tu n'as qu'à faire un .com, donc "org 100h" est à utiliser
    - Tu utilises "assume" pour cs et ds
    - Tu fais pointer es sur 0B800h
    - Après dans le code tu fais se que tu penses de bon
    - Ensuite pour attendre et voir le message s'afficher tu utilise l'int 21h -> Fonction 08h pour attendre qu'une touche soit pressée (sinon le programme sera terminé avant qu'on ai pu voir la moindre lettre...)
    - Pour terminer : Int 21h -> Fonction 04Ch

    Normallement ça doit marcher (moi ça marche sur un secteur de boot et sans utiliser les fonctions du DOS, donc je ne vois pas pourquoi chez toi ça ne fonctionnerait pas...).

    Ensuite, poste tout le code du test (ce ne sera pas trop long )
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  12. #12
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Salut Nico*3-3 !

    c remoi !

    bon den désolé de faire mon lourd, je te montre ce que j'ai écrit pour tester. Par contre c'est la première fois que je fais un .COM ( d'ailleurs à la compilation j'ai un .EXE c'est normal ? g compilé avec tasm )

    Voilà mon prog de test :
    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
    .386
    fichier segment use16   ;g vu que ceux qui faisait un .COM mettaient ça
    assume CS:fichier, DS:fichier    ;tu m'as dit de pas toucher à SP ...  dc j'ai aussi viré SS                      ;.... de tte façon si je le mets le prog quitte tt                                                      de suite, il attend pas que j'appuie sur une touche
    org 100h
    mov ax,0b800h
    mov es,ax
    debut:
     
         mov DL,'S'
         mov  [es:0], DL  ;Affiche un S
         mov DL,0Fh
         mov  [es:1],DL ;En fond noir et caractère blanc
         mov AH,08
         int 21h
         mov AH,04Ch			; retour dos
         int 21h
     
    fichier ends
    end debut
    voilà le programme attend bien que j'appuie sur une touche pour finir mais je ne vois pas le 'S'. Et par la suite, vu que je voudrais afficher plus d'un caractère je fais comment pour en afficher d'autres. Est ce qu'il faut que je me mette dans CS 0b8001h pour passer àl'@ suivante de la mémoire de l'écran ou un truc dans le genre ?

    Voilà, ben si tu pouvais me monter comment tu fais ce serait cool.

    Merci bien .

    6lv1

  13. #13
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Salut !

    Je ne connais vraiment pas bien cette syntaxe donc je vais peut-être écrire n'importe quoi mais bon...

    Essaie ce code et dis-moi si ça marche :
    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
    .386
    org 100h
    assume cs:code_seg, ds:code_seg
     
    code_seg segment use16
     
      mov  ax, 0B800h
      mov  es, ax
     
      mov  byte ptr [es:0], 'S'
      mov  byte ptr [es:1], 0Fh
     
      mov  ah, 08h
      int  21h
     
      mov  ax, 4C00h
      int  21h
     
    code_seg ends
    Je n'ai pas pu compiler ce programme car je n'ai pas TASM et de plus il y a peut-être quelques labels à rajouter (je ne sais pas trop comment on fait)...
    C'est vrai qu'il n'y a pas beaucoup de différences avec le tien mais bon...

    Essaie, et si au pire ça ne fonctionne toujours pas je t'enverrais un code qui fonctionne sur FASM (que si tu n'as pas tu pourras te procurer gratuitement).

    A bientôt.
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  14. #14
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    J'ai trouvé l'erreur !

    C'est tout bête : En fait je ne sais pas pourquoi, mais il y a besoin de passer explicitement en mode texte avant que la manipulation de la mémoire vidéo fasse quelque chose (c'est peut-être l'émulation du DOS sous Windows qui fait ça...).

    Il faut donc rajouter ce bout de code au début du programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mov  ax, 0003h ;Int 10h -> 00h : Changement de mode
    int  10h       ;al = 03h : mode texte 80*25 16 couleurs
    Là c'est sûr ça marche !
    Après ça, tu peux toujours utiliser le fonctions du DOS...

    Si tu as d'autres questions, je suis là !

    PS : Pour les caractères, l'attribut 0Fh c'est fond noir et premier plan blanc, or le DOS n'utilise pas vraiment du blanc mais plutôt du gris clair pour ses caractères, donc pour ne pas avoir de différence entre ceux du DOS et les tiens écris 07h (gris) au lieu de 0Fh.
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  15. #15
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Je ne vois pas pourquoi vous voulez absolument travailler avec le segment ES : il suffirait d'assigner B800h à DS et cela éviterait les segment overrides (ES:[]).
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  16. #16
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Bonjour Alcatîz !

    Ca ne change pas grand chose qu'on travaille avec ES ou DS là...
    Quand il aura des données dans son code, en général il prendra DS pour le segment de données et ES ou un autre pour le segment de la mémoire vidéo.
    De plus, je ne vois pas très bien ce que tu veux dire par segment override (c'est quoi déjà ce truc ?)...
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  17. #17
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Le segment override force l'utilisation d'un segment avec une instruction plutôt que le segment par défaut.
    Par exemple, le registre bp travaille par défaut avec le segment SS mais on peut très bien faire :
    L'inconvénient du segment override est l'ajout d'un préfixe de segment dans le code final, donc un octet supplémentaire dans le code (bon, il est vrai qu'on ne se préoccupe plus tellement de la taille du code exécutable mais c'est toujours bon à savoir).
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  18. #18
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    D'accord !
    Merci, c'est vrai, c'est bon à savoir.
    Si on veut gagner un octet ( WAHOO !!! ).
    Enfin, ça peut toujours être utile...

    Merci !
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Les segments overides ne sont pas seulement plus gros, ils sont plus lent à executer. Mais le goulot ici, sera l'accès à la mémoire vidéo (qui est plus lente et non cachée)

  20. #20
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 2
    Points
    2
    Par défaut Bien vu ;- )
    Ben bravo Nico*3-3 !

    G codé ça et ça marche nikel :
    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
    .386
    org 100h
    assume cs:code_seg, ds:code_seg
     
    code_seg segment use16
    debut:
     
    mov  ax, 0003h ;Int 10h -> 00h : Changement de mode
    int  10h       ;al = 03h : mode texte 80*25 16 couleurs
    mov  ax, 0B800h
    mov  es, ax
     
    mov  byte ptr [es:0], 'S'
    mov  byte ptr [es:1], 0Fh
    mov  ax, 0B800h
    mov  es, ax
    mov  byte ptr [es:2], 'A'
    mov  byte ptr [es:3], 07h
    mov  ah, 08h
    int  21h
    mov  ax, 4C00h
    int  21h
     
    code_seg ends
    end debut
    merci.

    Et si par exemple je veux afficher un tableau qui contient une chaine de cractères faut le déclarer où et ça devient koi : mov byte ptr [es:2], 'A' mov byte ptr [es:3], 07h? Et pour changer de ligne tu fais comment ?J'ai pas du tout l'habitude de faire comme ça.

    moi je fais pas un .com et mon prog commence comme ça (pour en revenir à ce que tu me disais au sujet de SP ... )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    my_stack SEGMENT STACK
    base_pile DB 100 dup (?)
    sommet_pile DB ?
    my_stack ENDS
    my_data SEGMENT 'DATA'		
    ;...
    my_data ENDS
    my_code SEGMENT 'CODE' 	
    DEBUT:
    ASSUME CS:my_code1,DS:my_data,SS:my_stack
    ;...
    my code1 ENDS
    END DEBUT
    et c'est typique masm d'après mon cours.

    comme mon prog marche très bien comme ça je v continuer ainsi et me servir de l'interruption qui positionne le curseur ça ira très bien.

    merci pour toutes les info et à ceux qui ont contribué à cet échange d'info !

    @ 1 2 c 4

    6lv1

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. gestion des interruptions en C
    Par pfeuh dans le forum Windows
    Réponses: 11
    Dernier message: 14/11/2007, 10h13
  2. gestion des interruptions
    Par jsebfranck dans le forum Langage
    Réponses: 2
    Dernier message: 06/07/2007, 09h15
  3. Gestion des interruptions du µProcesseur
    Par herve13 dans le forum Assembleur
    Réponses: 3
    Dernier message: 22/08/2005, 20h51
  4. Gestion des interruptions du microprocesseur sous XP
    Par herve13 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 20/08/2005, 18h29
  5. Réponses: 7
    Dernier message: 02/03/2005, 14h45

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