Afficher une chaine de caractere au boot - ASM - Programmation
Marsh Posté le 27-08-2006 à 11:23:02
C'est bon j'ai trouvé, pour les intéressés : http://www.developpez.net/forums/s [...] p?t=201652
Marsh Posté le 27-08-2006 à 14:04:31
tu sais, la programmation 16 bits avec interruptions DOS, segments, et tout, c'est dépassé depuis un bon moment....
Marsh Posté le 27-08-2006 à 18:06:54
ah ? si tu le dis... je vois pas ce qu'il y a d'intéressant à apprendre un truc qui ne te serviras jamais, mais bon...
Marsh Posté le 04-09-2006 à 12:18:39
Bonjour
Sur le 386, au démarrage, le processeur est en mode réel 16 bits. Il est donc nécessaire d'écrire un bout de code pour déclarer la GDT et l'IDT voir autre choses et passer ensuite en mode 32 bits.
Il se peut que depuis la méthode ait changé.
Si on n'a pas de changement de contexte à faire et que l'on soit déjà sous un système d'exploitation, la programmation 16 bits n'a pas grand intéret sauf pour les masochistes, d'autant plus qu'il est possible d'utiliser l'adressage vers du transfert 8 ou 16 bits si on veut en mode protégé.
Marsh Posté le 04-09-2006 à 13:12:05
Harkonnen a écrit : ah ? si tu le dis... je vois pas ce qu'il y a d'intéressant à apprendre un truc qui ne te serviras jamais, mais bon... |
faire un tweaker intégré au bios
Marsh Posté le 04-10-2006 à 13:23:18
si tu veut que ton programme s'execute au boot d'une machine, tu dois reasembler ton programme
avec une origine a 0
il marche sous dos car dos cree 100h octet avant de charger ton programme (contenant diverse choses... pour plus de doc, c'est la zone PSP, c'est le pourquoi du org 100h au debut des .COM)
et ton assembleur ajoute 100h a DS, ce qui fausse l'acces a tes donnees lorsqu'il est charger par le BIOS(le BOIS connait pas le PSP!! :-p)
si tu veux avoir une compatibiliter boot-dos tu pourrais par exemble inserer un caractere de signature dans ton programme et le comparer en dur dans ton programme, ainsi si la signature n'est pas verifier (donc si DS est decaler de 100h) tu pourras ratraper l'erreur par simple soustraction de DS.
m'enfin ce n'est qu'une suggestion personnel dans le cas ou ton programme n'est pas trop gros.
car un bootsecteur ne fait QUE 512 octets
Marsh Posté le 25-08-2006 à 15:12:26
Bonjour à tous.
Je suis tout nouveau dans le monde de la programmation en asm, et je commence déjà à rencontrer quelque probleme :
j'ai codé un petit programme qui affiche un message et attend ensuite l'appuie sur une touche du clavier pour effectuer une action.
Mon but est qu'il soit autonome, donc j'utilise exclusivement des interruptions du BIOS.
Une fois compilé (j'utilise TASM) et linké, il s'execute trés bien sous windows.
Je l'ai copié sur le premier secteur d'une disquette pour qu'il se lance au boot, mais une fois lancé, il affiche des caracteres bizarre au lieu de mes phrases.
Je pense qu'il s'agit d'un probleme de segment ou d'offset mais je seche.
Quelqu'un peut m'aider ?
Mon code (je compile en .COM) :
Merci.
Message édité par ganply le 25-08-2006 à 18:02:30