begin process at 2010 02 09 22:49:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Autres asm

 > 

pmode


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pmode

dimanche 22 juin 2003 à 00:49:19 | pmode

TRAX44

salut, svp si ya kk1 ki c pa c en pmode i pourrai me passé sa source parce que je galère un max la dessu!! G suivi plusieur tutoriaux é a chaque foi sa bug (mon pc redémare kan je passe en pmode : changement du bit cr0)
Merci d'avance
TRAX
dimanche 22 juin 2003 à 15:45:01 | Re : pmode

CoreBreaker

Il ne suffit pas de chager le bit 0 de cr0, il faut préparer le passage car la gestion de la mémoire en pmode est complètement différente par rapport au mode réel !

As-tu la GDT et l'IDT ?
As-tu activé la ligne d'adresse A20 affin d'accéder à la mémoire étendue (XMS) ?

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

> salut, svp si ya kk1 ki c pa c en pmode i pourrai me passé sa source parce que je galère un max la dessu!! G suivi plusieur tutoriaux é a chaque foi sa bug (mon pc redémare kan je passe en pmode : changement du bit cr0)
> Merci d'avance
> TRAX
samedi 28 juin 2003 à 17:32:44 | Re : pmode

TRAX44

salut,
oui je c k'il faut faire tout cela g thériquement charger la gdt (je c pas si sa marche c pour cela ke je dis ke c théorique)
l'idt je c pas comment la charger (g mi une suuite de 256 0)!!
l'ouverture de la ligne A20 j'en suis pas sur!!
Ben voila je c ya pas grand chose c pour sa que je demande un truc déjà fé ou kk chose de concret comme du code!!!
Merci
samedi 28 juin 2003 à 22:36:00 | Re : pmode

CoreBreaker

Un code entier serait trop long à taper
Il y a bien des pages web mais j'en ai pas sous la main


Si tu ne valide pas la ligne d'adresse 20 ça rique de planter
Voici une routine pour valider la ligne d'adresse:
EnableA20 proc near

pushf
mov ah, 0DFh
cli
call Empty8042
jnz GateA20_fail
out 0EDh, ax
mov al, 0D1h
out 64h, al
call Empty8042
jnz GateA20_fail
mov al, ah
out 60h, al
call Empty8042
push cx
mov cx, 14h

GateA20_loop:
out 0EDh, ax
loop GateA20_loop
pop cx
jmp short GateA20_end

GateA20_fail:
jmp short Erreur

GateA20_end:
popf
ret

EnableA20 endp

Empty8042 proc near

push cx
xor cx, cx
dec cx

Empty8042_try:
out 0EDh, ax
call IODelay
in al, 64h
and al, 2
loopnz Empty8042_try
pop cx
ret

Empty8042 endp



Une suite de 256 0 ne suffit pas pour l'IDT ce n'est pas cela c'est une suite de 256 desctipteur d'interruption
Si l'idt est mal définie à la moindre exception ça plante !

ref dw offset nullint, selecteur_de_nullint, 9E00h, 0
idt db 2048 dup(0)
idtr dw 7FFh
dd offset idt


Code 16bits:

xor eax, eax
mov ax, segment_code_32bits
shl eax, 4
add [idtr+2], eax
xor eax, eax
mov ax, segment_donnees
shl eax, 4
add [ref], ax
adc [ref+6],0
shr eax,16
add [ref+6],ax
cld
mov cx, 256
mov di, offset idt
copy_loop:
mov si, offset ref
movsd
movsd
loop copy_loop
lidt [idtr]


Code 32bits:

nullint:
iretd


Core Breaker
samedi 5 juillet 2003 à 10:39:44 | Re : pmode

TRAX44

salut,
je te remercie pour ce code mais g encor kk petit pb avec :
je compile sous nasm mais il m'indique des erreur et ne peut donc compiler:
la première ligne pour les decripteur idt:

ref dw offset nullint, selecteur_de_nullint, 9E00h, 0

et je ne c pas à quoi resemble un dscripteur d'idt ; si g bien compris, tu à laisser la place que je le mette :
segment_code_32bits
segment_donnees
ne renvoie à rien
Je c, c ennuyeu d'expliquer aux newbies mais merci com même!!
samedi 5 juillet 2003 à 18:54:15 | Re : pmode

CoreBreaker

segemnt_donnees est la valeur de l'adresse de segment de la variable ref

segment_code_32bits est la valeur de l'adresse de segment où se trouve nullint.

Le code que je t'ai donnée fonctionne avec TASM il faut faire quelques petites transformation pour ta ligne c'est:
ef dw nullint, selecteur_de_nullint, 9E00h, 0


La structure d'une entrée dans l'IDT s'appelle un descripteur d'interruption en voici la structure:
taille du descripteur: 8 octets
offset, taille, description
0, 2, partie basse de l'offset du vecteur d'interruption
2, 2, selecteur de code du vecteur d'interruption
4, 1, valeur nulle (0)
5, 1, attributs
6, 2, partie haute de l'offset du vecteur d'interruption

description des attributs:
bit de début, nombre de bits, description
0, 4, type de descripteur d'interrruption (0Eh)
4, 1, valeur nulle
5, 2, DPL du descripteur (niveau de privilège): c'est la ring
7, 1, bit de présence: doit être à 1 sinon provoque une exception de segement absent

types de desctipteurs:
- 05h: Porte d'appel (call gate)
- 06h: Porte d'interruption 16bits (la partie haute de l'offset est alors ignorée et le sélecteur doit conserner un segment 16 bits)
- 07h: Porte de trappe 16bits (une trappe permet que le flag IF, flag d'interuption ne soit mis à 0 lorque se déclenche l'interruption et ceci contrairement à la porte d'interruption)
- 0Eh: Porte d'interruption 32bits
- 0Fh: Porte de trappe 32bits

Core Breaker

mardi 20 novembre 2007 à 08:23:19 | Re : pmode

Yoha

TRAX44: Evite le langage SMS sur les forums, ce n'est pas bon pour la lisibilité et cela peut également faire fuir d'éventuelles aides. Comme site, j'ai trouvé ceci: http://amamraworld.ifrance.com/Assembleur-1/Pmode/PM_FR.HTM
mardi 20 novembre 2007 à 08:23:58 | Re : pmode

Yoha

PS: Désolé pour le décalage ^^.


Cette discussion est classée dans : pmode


Répondre à ce message

Sujets en rapport avec ce message

operands 16/32bits [ par gblade ] 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 instruct passage en pmode [ par TRAX44 ] salut,g 1 petit pb, kan je ceu pa c en mode protégé mov eax, cr0 or al, 1 mov cr0, eax(g deja cree et charger la gdt)le pc

Livres en rapport



Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,338 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales