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 :

Segment 16 bits


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre du Club

    Homme Profil pro
    passionné
    Inscrit en
    Octobre 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : passionné
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 29
    Points : 65
    Points
    65
    Par défaut Segment 16 bits
    Bonjour,

    Tout d'abord bravo pour ce super site.

    Voila,je n'arrive pas à utiliser une valeur issue du segment mémoire 0:... (zone des pointeurs sur les gestionnaire interruptions bios).
    (mon but est d'afficher simplement ces différentes valeurs)

    le code est compilé en .com par nasm (nasm -fbin prog.asm -o prog.com)
    puis exécuter par dos box (je suis sous Windows 8)

    voici le code;


    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
    org 100h
     
    %define NumInt		2        ;n° de l'int voulue
     
    section .txt
     
    start:
     
    mov ax,cs
    mov ds,ax
    mov ax,0B800h
    mov es,ax	;es pointe sur ram video texte vga
    mov ax,0
    mov fs,ax	;fs pointe sur segment 0:....
     
    mov ax,3 	;texte 80*25
    int 10h
     
    mov si,NumInt
    shl si,2		;dx pointe sur pointeur gestionnaire correspondant (NumInt*4)
     
    mov ax,[fs:si]	;ax contient le word de l'offset du pointeur far
    add al,30h	;al devient un code ascii affichable
     
    mov ah,100b	;attribut couleur
    mov di,0		;première case vga texte
     
    mov [es:di],ax	;ecriture en vga texte
     
    mov ah,0
    int 16h
     
    ret
    ce code m'affiche '8' alors qu'en traçant le code DWORD[0:4] vaut 0603h,je devrais donc avoir '3' d'afficher (03+30h=33h='3'.

    qu 'est ce qui ne va pas ??
    Merci pour votre aide.

  2. #2
    Membre du Club

    Homme Profil pro
    passionné
    Inscrit en
    Octobre 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : passionné
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 29
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    C'est un problème due à dos box sous Windows 8
    J'ai testé le prog en V86 sous XP et ça marche.

    Bonne prog.

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

Discussions similaires

  1. Aide pagination et segmentation 32-64 bits
    Par parasite_gantz dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 30/07/2012, 19h31
  2. angle entre 2 segments
    Par tane dans le forum Mathématiques
    Réponses: 4
    Dernier message: 25/09/2002, 17h47
  3. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 14h27
  4. Debugger 16-32 bits
    Par Mat dans le forum Assembleur
    Réponses: 4
    Dernier message: 28/06/2002, 12h34
  5. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 19h31

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