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 :

Eteindre ou redémarrer l'ordinateur


Sujet :

Assembleur

  1. #1
    Membre du Club Avatar de Arnaudv6
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 82
    Points : 63
    Points
    63
    Par défaut Eteindre ou redémarrer l'ordinateur
    Salut !
    Je voulais savoir comment éteindre l'ordinateur... peut etre (meme
    surement) a-ce qqc à voir avec le bios, vu qu'il démare l'ordi,
    il doit avoir une interruption ?
    J'avais lu fonction.hlp, "donné" avec tasm, mais il ne parlaient que
    d'une interruption, dant je n'ai pas le num ici, et qui était dangereuse
    à manipuler parce que non-standardisée ...
    Y a t-il une méthode par les ports ?
    Et pour redemarrer ?
    Si qqun a une idée, ou peut simplement m'éclairer sur le
    caractère "dangereux" de l'interruption en question. Bon code,
    Arpent

  2. #2
    Membre du Club

    Inscrit en
    Août 2003
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 33
    Points : 45
    Points
    45
    Par défaut
    Salut,
    Si tu travailles en 16 bits, pour rebooter, tu peux il faut faire un saut de 0xFFFF:0xFFFF, si je me rappelle bien.

  3. #3
    Membre du Club Avatar de Arnaudv6
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 82
    Points : 63
    Points
    63
    Par défaut
    Merci ! tres precieux comme info !
    Pourquoi serai-ce différent dans les autres modes ?
    Ma question est peut etre debile, mais je crois que
    le 32 bits permet d'adresser plus de memoire,
    mais ne devrait rien changer sur le fond, non ?
    Je vais tester, on verra bien. :o
    Bon code.

  4. #4
    Membre expérimenté
    Avatar de Juju_41
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2003
    Messages : 974
    Points : 1 557
    Points
    1 557
    Par défaut
    Salut !

    Quelques précisions sur le redémarrage en 16-bit :
    Avant de faire le saut en question, tu peux choisir de faire un redémarrage "à chaud" ou "a froid" (avec ou sans test de la mémoire en simplifiant). Pour cela il faut modifier le mot situé à l'adresse mémoire 0040h:0072h (le POST reset flag du segment de données du BIOS). Tu y mets 0000h pour un redémarrage à froid et 1234h pour un redémarrageà chaud.

    Pour ce qui est du saut, l'adresse est FFFFh:0000h et non FFFFh:FFFFh

    Enfin pour ce qui est du 32-bit, tout dépend de l'OS utilisé ... en tout cas évite de rebooter avec cette méthode sous Windozz parce que dans le meilleur des cas il va te jeter (accès à une zone mémoire reservée) ou alors il va rebooter mais de manière "très barbare"
    Avant de poster, merci de consulter les règles du forum

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    Pour ce qui est du saut, l'adresse est FFFFh:0000h et non FFFFh:FFFFh
    Je ne pense pas que cela change grand chose ....
    En effet; le reboot par cette voie est du au fait qu'en 16bits on ne peut adresser au maximum qu'1Mo (0xFFFF:0x0000+1=0x100000=1Mo); si on essaye de dépasser les 1Mo sans avoir activé la porte a20, ça reboot !
    Donc si on jump vers 0xFFFF:0xFFFF ou 0xFFFF:0x0000, c pareil, non ?

    Ma question est peut etre debile, mais je crois que
    le 32 bits permet d'adresser plus de memoire,
    mais ne devrait rien changer sur le fond, non ?
    Ben en fait tout (enfin presque) change en 32bits
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

  6. #6
    Membre expérimenté
    Avatar de Juju_41
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2003
    Messages : 974
    Points : 1 557
    Points
    1 557
    Par défaut
    Citation Envoyé par 2PluS4
    En effet; le reboot par cette voie est du au fait qu'en 16bits on ne peut adresser au maximum qu'1Mo (0xFFFF:0x0000+1=0x100000=1Mo); si on essaye de dépasser les 1Mo sans avoir activé la porte a20, ça reboot !
    Donc si on jump vers 0xFFFF:0xFFFF ou 0xFFFF:0x0000, c pareil, non ?
    Non ce n'est pas pareil ... enfin je ne pense pas du moins.
    FFFFh:0000h correspond à F000h:FFFFh et non à FFFFh:FFFFh

    Pour ce qui est du contenu de FFFFh:FFFFh, il est vrai que l'on dépasse le 1er Mo de la mémoire (une adresse du 1er Mo étant par exemple FFFFh:0010h). Pour ce qui est des 65520 octets adressables qui suivent, je ne sais pas exactement si le contenu retourné est correct.
    Avant de poster, merci de consulter les règles du forum

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    (une adresse du 1er Mo étant par exemple FFFFh:0010h)
    Oups Oui en effet j'avais oublié le 0x10
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

  8. #8
    Débutant
    Inscrit en
    Novembre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Salut, j'ai télécharger ce code de je ne sais plus quel site.
    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    ;------------------------------------------------------------------------------;
    ;      Power.com  <--> Arrêt de PC grâce a APM (Advanced Power Managment)      ;
    ;      Ce code ne pourra fonctionner que si le PC possède une alimentation     ;
    ;      du type "ATX".                                                          ;
    ;                                                                              ;
    ;      Compilateur utilisé : FASM - Rédaction du code : Romain TARTIERE        ;
    ;                                 e-mail : romain-tartiere @ astase.com        ;
    ;                                 Site internet : http://www.astase.com        ;
    ;------------------------------------------------------------------------------;
     
            Org     100h
     
            MOV     DX, APMVer      ;
            MOV     AH, 09h         ;
            INT     21h             ; Récupération des infos APM du système.
     
            MOV     AX, 5300h       ;
            MOV     BX, 0000h       ;
            INT     15h             ; Vérification du matériel
     
            Jb      No_APM_Support  ; Erreur : APM non supporté par le système !
     
    ;------------------------------------------;
    ; Afichage de la version de APM du système ;
    ;------------------------------------------;
            PUSH    AX
            PUSH    AX
            ADD     AH, 30h         ;
            MOV     DL, AH          ;
            MOV     AH, 02h         ;
            INT     21h             ; Affichage du numéro de version majeur.
     
            MOV     DL, 2Eh         ;
            MOV     AH, 02h         ;
            INT     21h             ; Affichage du Point.
     
            POP     AX              ;
            ADD     AL, 30h         ;
            MOV     DL, AL          ;
            MOV     AH, 02h         ;
            INT     21h             ; Affichage du numéro de version mineure.
     
    ;----------------------------;
    ; Connexion au service d'APM ;
    ;----------------------------;
            MOV     AX, 5301h       ;
            MOV     BX, 0000h       ;
            INT     15h             ; Connect real Mode Interface.
     
            Jb      Deconnexion     ; Erreur ! On déconnecte...
     
    ;-------------------------;
    ; Arret de l'alimentation ;
    ;-------------------------;
            MOV     AX, 530Eh       ;
            MOV     BX, 0000h       ;
            POP     CX              ;
            INT     15h             ; Version du driver.
     
            MOV     AX, 530Dh       ;
            MOV     BX, 0001h       ;
            MOV     CX, 0001h       ;
            INT     15h             ; On rend disponibles les services d'APM.
     
            MOV     AX, 530Fh       ;
            MOV     BX, 0001h       ;
            MOV     CX, 0001h       ;
            INT     15h             ; On rend disponible l'arret de l'alimentation.
     
            MOV     AX, 5307h       ;
            MOV     BX, 0001h       ;
            MOV     CX, 0003h       ;
            INT     15h             ; Arret du système.
     
            Jb      Set_APM_Failed  ; Erreur !
     
            JMP     Deconnexion
     
    ;-----------------------------;
    ; L'arrêt du système à échoué ;
    ;-----------------------------;
    Set_APM_Failed:
            PUSH    AX
            MOV     AX, 0DDCh
            MOV     DS, AX
            MOV     DX, Fail
            MOV     AH, 09h
            INT     21h
            POP     AX
            Jmp     APM_Done
     
    ;--------------------------------;
    ; Déconnexion des services d'APM ;
    ;--------------------------------;
    Deconnexion:
            MOV     AX, 5304h       ;
            MOV     BX, 0000h       ;
            INT     15h             ; Déconnexion de l'interface APM.
     
            Jb      No_APM_Support
            JMP     APM_Done
     
    ;------------------------------------------------------;
    ; APM semble ne pas être pris en charge par le système ;
    ; (Ca peut être Windows qui fait une blague ;)         ;
    ;------------------------------------------------------;
    No_APM_Support:
            MOV     DX, NoAPM
            MOV     AH, 09h
            INT     21h
     
    ;----------------------;
    ; Fin de l'application ;
    ;----------------------;
    APM_Done:
            MOV     DX, Done
            MOV     AH, 09h
            INT     21h
     
            MOV     AX, 4C00h       ;
            INT     21h             ; Fin du programme
     
    ;-------------------------;
    ; Constantes du programme ;
    ;-------------------------;
    APMVer  db      'Version de APM du systŠme : $'
    NoAPM   db      13,10,'[Erreur] : Pas de support de APM !$'
    Fail    db      13,10,'Echec lors de l''arret de l''alimentation !$'
    Done    db      13,10,'Termin‚.$';
     
    ;--------------------;
    ; That's all folks ! ;
    ;--------------------;
    Attention, je ne l'ai jamais essayer!
    Posez vos questions, j’essaierai d’y répondre !

  9. #9
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    Citation Envoyé par ReliMente
    Salut, j'ai télécharger ce code de je ne sais plus quel site.
    Ben c'est marqué dans le Header ... Il doit déjà être quelque par sur le forum.... Et pour l'avoir développé, je vous met en garde contre vos OS : Windows XP : il vous dira que votre BIOS ne supporte pas APM, Windows 98 : la première fois il ralera, mais la seconde : Shut Down... (Et pour le reste, non testé!)

    Donc a utiliser AVEC PRECAUTION !!!!!

    Smortex

    Les FAQ Assembleur - Linux
    In The Beginning Was The Command Line Neal Stephenson

  10. #10
    Membre du Club Avatar de Arnaudv6
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 82
    Points : 63
    Points
    63
    Par défaut
    Que dire ? Merci ! Je vais avancer mon projet avec tout ca...
    Merci à tous.

  11. #11
    Débutant
    Inscrit en
    Novembre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Smortex
    Je vous met en garde contre vos OS : Windows XP : il vous dira que votre BIOS ne supporte pas APM, Windows 98 ...
    Pour fermer/redémarrer Windows, utilisez l’API "ExitWindowsEx" ou "ExitWindows"
    Posez vos questions, j’essaierai d’y répondre !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/08/2010, 14h52
  2. [WD12] Mon application fait redémarrer l'ordinateur
    Par develop83 dans le forum WinDev
    Réponses: 11
    Dernier message: 10/12/2008, 22h10
  3. [Turbo Pascal] Redémarrer l'ordinateur sous DOS
    Par bs.box dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 12/06/2008, 18h05
  4. Eteindre son ordinateur en Java ?
    Par DJuL- dans le forum Langage
    Réponses: 5
    Dernier message: 04/10/2006, 16h45
  5. Redémarrer l'ordinateur
    Par gilleski2010 dans le forum Assembleur
    Réponses: 4
    Dernier message: 30/11/2005, 13h28

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