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 :

[Clavier] Gestion d'une invite de commandes


Sujet :

Assembleur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut [Clavier] Gestion d'une invite de commandes
    Salut tout le monde !

    Je ne suis pas très fort en assembleur, mais j'ai décidé de créer un mini OS, ainsi j'apprends en même temps que je crée mon OS.

    J'ai réussi à faire un bootsector qui affiche un message. Maintenant j'aimerais récupérer ce qu'à écrit l'utilisateur et suivant ça, le programme execute une fonction. Par exemple :

    - L'utilisateur tape "exit" suivit d'un enter
    - Execution de la fonction qui reboot le PC
    - L'utilisateur tape "djkdsfdsffg" suivit d'un enter
    - Affichage du message "Commande non reconnue"

    En un mot : "un shell"

    Je pourrais faire un switch mais pour le clavier je ne vois pas du tout.

    Merci d'avance

  2. #2
    sdx
    sdx est déconnecté
    Membre régulier Avatar de sdx
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 90
    Points
    90
    Par défaut
    Salut!

    Pour lire au clavier facilement, les interruptions du BIOS sont tes amies.
    Tant que tu reste en mode réel (plus facile) c'est le mieux...

    sdx

    ps: encore un OS où s'arrêterons les programmeurs

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse.

    Il y a la fonction 01h de l'interruption 16h mais ça marche pour qu'un seul caractère Comment faire pour qu'on tape un mot et un enter et le prog réagit à ça ?

  4. #4
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    salut, pour la saisie d'une chaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    mov ah,0ch
    mov al,0ah
    mov dx,offset chaine	;attente saisie chaine -> chaine
    int 21h
     
    chaine db 20, 20 DUP('$')	;variable pour la chaine saisie
    Voila Bon courage !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Ah j'oubliais, comme c'est un OS, je n'ai droit qu'aux interruptions BIOS et pas aux DOS. Donc l'int 21, je peux oublier.

  6. #6
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    Ah pardon ! Je debute en asm, j'étais content d'aider quelqu'un..mais en fait je t'aide pas des masses désolé

  7. #7
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 962
    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 962
    Points : 59 642
    Points
    59 642
    Billets dans le blog
    2
    Par défaut
    Bonjour !
    Citation Envoyé par Damian
    Il y a la fonction 01h de l'interruption 16h mais ça marche pour qu'un seul caractère Comment faire pour qu'on tape un mot et un enter et le prog réagit à ça ?
    Il faut écrire une routine complète de lecture de chaîne, en se basant sur la fonction 10h de l'interruption 16h et, pour l'affichage, sur l'interruption 10h.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci de vos réponses, mais j'ai un peu de peine.

    Il faudrait créer un sous-programme qui compare un registre avec "exit" par exemple et ce registre contiendrait ce qu'y a été entré au clavier. Si ce registre = "exit" on fait un jump a la fonction exit.

    Seul problème, je ne sais pas comment faire ça :s

    Si vous pouvez m'aider, je vous en rermercie d'avance

  9. #9
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 962
    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 962
    Points : 59 642
    Points
    59 642
    Billets dans le blog
    2
    Par défaut
    Quand tu écris "registre", j'imagine que tu veux parler d'un buffer clavier.
    Pour comparer le contenu du buffer clavier avec une chaîne, tu peux utiliser l'instruction cmpsb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ; DS:SI = @Buffer
    ; ES:DI = @Chaine
    mov cx,Longueur_Buffer
    cld
    rep cmpsb
    jz  Exit

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci, j'ai regardé la source de différent os et j'ai trouvé ce qu'il faut

    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
     
    mov bl, 'e'
    cmp bl, [es:buffer]
    jne keyabout
    mov bl, 'x'
    cmp bl, [es:buffer+1]
    jne keyabout
    mov bl, 'i'
    cmp bl, [es:buffer+2]
    jne keyabout
    mov bl, 't'
    cmp bl, [es:buffer+3]
    jne keyabout
    jmp exit
     
    keyabout:
    mov bl, 'a'
    cmp bl, [es:buffer]
    jne none
    mov bl, 'b'
    cmp bl, [es:buffer+1]
    jne none
    mov bl, 'o'
    cmp bl, [es:buffer+2]
    jne none
    mov bl, 'u'
    cmp bl, [es:buffer+3]
    jne none
    mov bl, 't'
    cmp bl, [es:buffer+4]
    jne none
    jmp about
     
    none:
    mov si, inconnu
    call write
    ret
    Voilà j'ai un autre problème mais je vais créer un topic différent sinon c'est le cheni et ça n'a plus rien a voir avec le clavier ^^

    merci ++

Discussions similaires

  1. Echec d'exécution d'une classe par une invite de commande
    Par khaigo dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 13/01/2011, 14h32
  2. Réponses: 6
    Dernier message: 21/04/2010, 09h28
  3. Lancer l'invite de commande avec une macro
    Par FlorianBreizh dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/06/2009, 17h21
  4. Erreur sur une invite de commande @prompt
    Par poog49 dans le forum Designer
    Réponses: 1
    Dernier message: 16/01/2007, 19h00
  5. Retour d'une invite de commande
    Par izorus dans le forum Windows
    Réponses: 9
    Dernier message: 06/09/2006, 14h30

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