Kernel Asm executer .exe .com

tristan3215 Messages postés 12 Date d'inscription lundi 21 avril 2014 Statut Membre Dernière intervention 3 mai 2022 - 21 avril 2014 à 22:27
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 - 13 avril 2015 à 13:51
bonjour a tous je suis nouveau sur se forum voila je me suis inspirer du code source de PEPIN pour un noyau en ASM donc voila mon souci le noyau démarre sans problème j'aimerai donc une aide pour démarrer un programme externe un *.exe ou *.com j'aimerai que l'ont m'explique comment cela fonctionne je suis sous Dos je de code sous windows 7 Merci Beaucoup

6 réponses

Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
8 août 2014 à 09:48
Le problème c'est qu'il faut que tu code le lecteur d'entête MZ
car ton kernel est incapable de savoir ce que c'est qu'un "fichier .exe" un "fichier .com" certes il contient des instruction 386 ou 486 ou autre mais ces fichiers exécutable contiennent aussi généralement des interruptions BIOS et DOS (21h) hors ton kernel avec pepin n'a pas la fonctionnalitée de lire un fichier de haut en bas, de décoder les instructions et ne sais pas ce que c'est que l'interruption 21h (dos)

En gros il faut que tu réécrive un mini dos dans ton kernel et un lecteur d'entête MZ (un lecteur de fichiers .exe et .com)

Voilà tout ;-)
1
tristan3215 Messages postés 12 Date d'inscription lundi 21 avril 2014 Statut Membre Dernière intervention 3 mai 2022
4 mars 2015 à 14:17
bonjour je toujours sur la création du kernel en asm et comme tu et le seul a m'avoir répondu je te repose une question comment je doit faire pour avoir toute les interruption 21h du dos ? a tu un programme pour charger ses interruptions ? j'ai trouver une liste des interruption dos 21h sur le net mais elle n'est pas complète aurez tu un bout de code ? merci
0
tristan3215 Messages postés 12 Date d'inscription lundi 21 avril 2014 Statut Membre Dernière intervention 3 mai 2022
14 mars 2015 à 11:42
Bonjour à tous j'ai finalement un kernel dos 16Bits qui démarre des fichier externe *.exe *.com en 16bits, le kernel a un lecteur l'entête MZ et les interruptions BIOS et DOS (21h) je peux donc faire appelle a un programme 16bits en Asm (x86) par exemple
voici ma nouvelle question :

comment passer en 32bits ?
j'ai essayer de charger la GDT mais en moment du passage en Mode Protéger le programme bug et plate total

je ne cherche pas a émuler le système en 32bits mais passer en 32Bits j'ai essayer plusieurs code nasm masm mais pareil sa plante .

quelqu'un a t'il une idée
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
13 avril 2015 à 10:14
Salut!

Et bien je te conseille de passer en mode protégé avec un DPMI
(Dos Protected Mode Interface)

Tu peux regarder du coté des outils de Japheth (Hxdos)
Son article traduite ici :
http://www.traduction.cc/traduction/HX-DOS-Extender-13.html

Mais il faut absolument que tu aies une entête DPMI dans ton fichier executable
DJGPP, GCC, FreeBasic, Watcom c++, digital mars, power basic, jwasm, fasm etc... en font l'affaire

Cordialement
Sébastien FAVIER
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tristan3215 Messages postés 12 Date d'inscription lundi 21 avril 2014 Statut Membre Dernière intervention 3 mai 2022
13 avril 2015 à 11:28
Salut merci de ta réponse j'ai déjà.utiliser le dpmi hxdos mais il me faut les code source car il me manque deux interruption dans le noyau l'interruption 58h et 2fh et dans les dpmi hxdos il utilise l'interruption 58hdonc.ya un beugler et vu que.je n'est pas accès au code source je ne peux supprimer cette interruption à tu d'autre dpmi à me proposer ? Merci
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
Modifié par Cpcdos le 13/04/2015 à 13:52
Il me semble bien que se sont des interruptions régie du DOS et non du DPMI
int 0x2F pour obtenir les info du logiciel en exécution et 0x58 pour un truc d'allocation de... j'sais plus quoi x)

Les supprimer ?
Mais pourquoi pas les utiliser tout simplement ?


Microsf01 Favier Sébastien 01
0
Rejoignez-nous