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

Programmation d'OS Assembleur Discussion :

Obtenir la position du cursor (ports 0x3d4 et 0x3d5)


Sujet :

Programmation d'OS Assembleur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 41
    Points
    41
    Par défaut Obtenir la position du cursor (ports 0x3d4 et 0x3d5)
    Bonjour, j'essaie de faire un bootSector qui affiche un message à l'écran sans utiliser le bios, c'est-à-dire en utilisant directement la mémoire video. Mais l'orsque j'utilise les port 0x3d4 et 0x3d5 pour obtenir la position du cursor, ca me donne toujours 0.

    voici mon 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    .model tiny
    .code
    ORG 0
    start:
    	; initialisation des segments en 0x07C00
    	ADR_BOOT = 07c0h
    	ADR_VIDEO = 0B8A00h
     
        mov ax, ADR_BOOT
        mov ds, ax
        mov es, ax
        mov ax, 8000h
        mov ss, ax
        mov sp, 0f000h    ; stack de 0x8F000 -> 0x80000
     
     
     
         ; affiche un msg
        mov si, OFFSET msgDebut2
        call afficher
     
    boucle:
        jmp boucle
     
     
    ;---------------------------------------------------------
    ; Synopsis: Affiche une chaine de caracteres se terminant par 0x0
    ; Entree:   DS:SI -> pointe sur la chaine a afficher
    ;---------------------------------------------------------
    afficher:
        push AX
        push BX
     
    	MOV BX, 0B800h
    	MOV ES, BX
     
    	XOR AX, AX
    	XOR BX, BX
    	XOR DX, DX
     
     
    	;Récupaire le mot du poid fort de la position du cursor
    	;et le met dans le mot de poid fort de BX ( BH )
    	MOV AX, 14
    	MOV DX, 3D4h
    	OUT DX, AX
    	MOV DX, 3D5h
    	IN AX, DX
    	MOV BH, AL
     
    	;Récupaire le mot du poid faible de la position du cursor
    	;et le met dans le mot de poid faible de BX ( BL )
    	MOV AX, 15
    	MOV DX, 3D4h
    	OUT DX, AX
    	MOV DX, 3D5h
    	IN AX, DX
    	MOV BL, AL
     
    	XOR AX, AX
    debut:
     
        lodsb         ; ds:si -> al
        CMP AL, 0     ; fin chaine ?
        JE fin
     
    	CMP AL, 13
    	JE saut_ligne
    	CMP AL, 10
    	JE saut_ligne
     
    	;Affichage
    	MOV BYTE PTR ES:[BX], AL
    	INC BX
    	MOV BYTE PTR ES:[BX], 00000001b
        INC BX
    	saut_ligne:
     
        JMP debut
     
    fin:
     
        POP BX
        POP AX
        RET
     
     
    	;--- Variables ---
        msgDebut2 BYTE "BootStrap Par Luc Spinelli", 13, 10, 0
    	curosrPos WORD ?
    	;-----------------
     
     
    ;--- NOP jusqu'a 510 ---
        BYTE 510-($ - start) DUP( 90h )
        WORD 0AA55h
     
    end start

  2. #2
    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
    Salut,

    ces ports sont des ports 8bits

    Donc au lieu de faire un "out dx,ax" il faut faire un "out dx,al"
    pareil pour le in

    a+ François

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 41
    Points
    41
    Par défaut
    Merci je vais esailer a soir et je te redonne des nouvelle

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 41
    Points
    41
    Par défaut
    Super, ça fonctionne très bien

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

Discussions similaires

  1. [XSLT] Obtenir la position d'un noeud
    Par zoubidaman dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/09/2006, 09h34
  2. [c++] Obtenir la position d'une fenêtre sur l'écran
    Par Silverstone dans le forum Windows
    Réponses: 2
    Dernier message: 05/09/2006, 16h11
  3. Obtenir la position de la souris
    Par gingman dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/03/2006, 18h38
  4. Obtenir la position du curseur dans une Image
    Par bastoune dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/11/2003, 21h02

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