Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Interruption qui passe en 32 bits ? [ Archives / Autres asm ] (vinc1008881)

lundi 30 janvier 2006 à 18:50:09 | Interruption qui passe en 32 bits ?

vinc1008881

Bonjour tout le monde,

dans le cadre du developpemet d'un micro OS, j'aurais voulu savoir s'il existe une interruption qui passe en Pmode (ou du moins en 32 bits), c'est en fait car je suis confornté à un probleme :

1- Le secteur de boot charge le noyau 32 bits
2- Le secteur de boot passe en Pmode
3- Execution du kernel


seulement il ne me reste plus assez d'octet pour la seconde partie........à moins que l'on peut avoir un code qui passe en 32 bits de maniere assez succintes (je veux juste que les instructions soient en 32 bits c'est tout)

voilà, en vous remerçiant à l'avance de votre intêret sur le probleme,

+


lundi 30 janvier 2006 à 21:22:44 | Re : Interruption qui passe en 32 bits ?

patatalo

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
salut,

j'ai reussi a loger le tout dans un secteur CD ( 2048 octets ) afin de lancer un loader directement en 32bits. Le code mbr peut tres bien lire les 3 secteurs suivants et le tour est joué ou bien charger un loader intermediaire.

sinon, la fonction 89H de l'interruption 15H permet le passage en PMODE par le BIOS par contre, tu dois quand meme specifier une GDT de 64 octets. La taille minimale de la GDT etant 8*4 = 32 octets, y'a peut etre une perte quand meme.

voila ce que j'ai de + petit pour le passage en pmode. La partie ldr32 doit pouvoir etre enlevée du code mbr, il te reste plus que ldr16 et la table GDT a prévoire ce qui doit faire moins de 64 octets en tout.

;******************************************************************************
align 4
GDT:
    dd      0
db 0
dw DESC_NUL
db 0

FLAT_CODE0 EQU $-GDT
gdt_01:
    dw -1
    dw      0
    db      0
dw DESC_C32+0x0F00
    db      0

FLAT_DATA0  EQU $-GDT
gdt_02:
    dw -1
    dw      0
    db      0
dw DESC_D32+0x0F00
    db      0
gdt_03:
    dd      0,0
GDT_size EQU $-GDT
GDTR:
dw GDT_size-1
dd GDT
IDTR
dw 0
dd 0
;******************************************************************************
[BITS 32]
ldr32:
mov ax,FLAT_DATA0
mov ss,ax
mov ds,ax
mov es,ax
movzx eax,word [(SEG_PRIDESC*16)+VD_PRIMARY.appuse+TOM.exseg]
movzx edx,word [(SEG_PRIDESC*16)+VD_PRIMARY.appuse+TOM.exoff]
lea eax,[eax+eax]
lea eax,[edx+eax*8]
mov esp,eax
jmp dword [eax]
;******************************************************************************
[BITS 16]
ldr16:
cli
in al,0x70
or al,0x80
out 0x70,al
lgdt [GDTR]
lidt [IDTR]
mov eax,cr0
or al,1
mov cr0,eax
jmp FLAT_CODE0:ldr32

@++

lundi 30 janvier 2006 à 23:03:08 | Re : Interruption qui passe en 32 bits ?

vinc1008881

ok, merci beaucoup avec 30 octet de libre je vais essayer de faire un truc !

merci encore, @+



Cette discussion est classé dans : probleme, passe, interruption, bits, secteur


Répondre à ce message

Sujets en rapport avec ce message

probleme avec l interruption affichage de chaine [ par M0NTOYA ] bon voila mon probleme ,qd j utilse cette procedure(presentation) pour afficher une chaine de caractere presentation PROC PUSHA MOV AH,09h INT 21h POP probleme avec l interruption affichage de chaine [ par M0NTOYA ] bon voila mon probleme ,qd j utilse cette procedure(presentation) pour afficher une chaine de caractere presentation PROC PUSHA MOV AH,09h INT 21h POP Probleme avec le serveur [ par TotalIllusion ] jai poster ma source (un prog sur les ISR et le serveur veut pas mettre le .zip (isr.zip).sa a cree 3 message comme dequoi jaurrais poster 3 source et Placer là "partie basse" d'un registre 32 bits dans un registre 16 bits ??? [ par Otaku ] Salut, tout est dans le titre, comment faire pour placer la partie basse (LOWWORD) d'une valeur stockée dans le registre EAX dans un registre 16 bits projet assembleur [ par zipposou ] Salut a tousj'ai un enorme probleme, j'ai un projet à rendre en assembleur 68000, c en fait le jeu du serpent.Le probleme c que je ne connais pas gran projet assembleur [ par zipposou ] Salut a tousj'ai un enorme probleme, j'ai un projet à rendre en assembleur 68000, c en fait le jeu du serpent.Le probleme c que je ne connais pas gran HELP_HELP_HELP [ par zipposou ] Salut a tousj'ai un enorme probleme, j'ai un projet à rendre en assembleur 68000, c en fait le jeu du serpent.Le probleme c que je ne connais pas gran TDASM,NDASM,NDASM32 ????? [ par Bombela ] Salut !!Je commence la prog Asm.Je connais déja Delphi et Le turbo pascal.Je ne sais que prendre comme compilateur.Mais je suppose que les 16 bits mar probleme de comprehension de jmp:( [ par SVKMrNice ] yop le monde alors voila je suis debutant en asm... de temps en temps je regarde des progs en asm pour essayer de comprendre les techniques... mais vo interruption BIOS [ par project0 ] est ce quelqu un connais les interruptions BIOS qui arrete le systeme ( avec mise sous tension ) et celle qui permet un reboot ( redemarrage propre pa


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.