Operands 16/32bits

gblade Messages postés 85 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 19 mai 2003 - 16 déc. 2002 à 20:55
CodeFighter Messages postés 8 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 8 novembre 2004 - 1 nov. 2004 à 23:22
qqun sait comment l'assembleur de débrouille pour qu'au chargement de notre exécutable les segments soient en 16 ou 32bits ? existe t il une instruction ou un opcode quelquonque qui puisse changer cela en mode réel (il est évident que l'on peut le changer en pmode ;) ?
sinon à défaut, qqun pourrait me proposer une solution pour changer de segment 16/32bits au moment d'effectuer la reinitialisation de la queue d'instructions (par un jmp far habituellement) juste après le passage en pmode ?

1 réponse

CodeFighter Messages postés 8 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 8 novembre 2004
1 nov. 2004 à 23:22
-En mode réel, les operante de "mot" font 16 bits, donc par ex,

91h = xchg AX, CX

05h 90h 90h 90h 90h = add AX, 9090h ; nop ; nop ;

on peut quand même faire référance aux registres de 32 bits grâce au prefixe "operand size overide" : 66h

66h 05h 90h 90h 90h 90h =add EAX, 90909090h ;

-En mode protégé, le mot est de 32 bits, donc :

91h = xchg EAX, ECX

05h 90h 90h 90h 90h = add EAX, 90909090h ;

On peut revenir à un adressage de 16 bits avec un prefixe "operand size overide" : 66h

66h 05h 90h 90h 90h 90h = add AX, 9090h ; nop ; nop ;

-Donc, dire qu'un segment est 16 bits ou 32 bits c'est juste indiquer à ton compilateur que quand tu ecrit :

add EAX, 90909090h

il faudrat générer :
66h 05h 90h 90h 90h 90h

ou
05h 90h 90h 90h 90h

-On peut remarquer aussi que l'assembler n'est pas lié au chargement d'un exécutable ... c le systeme qui le fait

-Donc, je comprend pas trop le sens de ta question !!! désolé !
Mais au chargement, il n'y a aucune différance entre un segment de code qui doit s'exécuté en mode réel 16 bits ou en mode protégé 32 bits ! Le segment sera de toute façon interprété par raport au mode du processeur en cours.
0
Rejoignez-nous