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 : Secteur de boot : comment ordonner des commandes ??? [ Archives / Systeme ] (Foub12)

jeudi 2 septembre 2004 à 22:37:15 | Secteur de boot : comment ordonner des commandes ???

Foub12

Bonjour,

j'ai une question qui me turlupine depuis un petit moment et j'aimerais bien connaître la réponse...

Le secteur de boot (d'une disquette par exemple) peut-etre contenu dans un tableau de 512 octets donc déclarés comme suit : « unsigned char Buffer[512] ».

Mais là, où je comprends pas, c'est comment dans un tableau de caractères, on peut entrer des instructions qu'interprètera le processeur ????

Pour faire afficher un 'A' avec l'assembleur, on écrirait :
«
mov ah, 0eh
mov al, 41h
int 10h
»

Je vais pas écrire lol :
«
Buffer[0] = asm { mov ah, 0eh; };
Buffer[1] = asm { mov al, 41h; };
Buffer[2] = asm { int 10h };
»

Comment cela fonctionne ? Expliquez-moi ? Comment s'y prendrai-ton pour faire écrire un secteur de boot qui fasse afficher juste un 'A'...

Merci pour votre aide.
Fabien

jeudi 2 septembre 2004 à 23:04:06 | Re : Secteur de boot : comment ordonner des commandes ???

ymca2003

le code assembleur doit être transformé en binaire (suite d'octet) que le processeur va décoder et exécuter. le secteur de boot contient 512 octets qui peuvent effectivement être représentés dans un tableau de caractères (car 1 char = 1 octet) mais son contenu ne sera pas humainement lisible

jeudi 2 septembre 2004 à 23:13:59 | Re : Secteur de boot : comment ordonner des commandes ???

BruNews

Administrateur CodeS-SourceS
unsigned char Buffer[512];
__asm {
mov edx, offset Buffer
mov byte ptr[edx], 0Eh
mov byte ptr[edx+1], 41h
; etc...
}

A toi de mettre les bonnes valeurs dans les octets.

ciao...
BruNews, Admin CS, MVP VC++

jeudi 2 septembre 2004 à 23:27:40 | Re : Secteur de boot : comment ordonner des commandes ???

Foub12

Re,

je comprends pas BruNews...

Ton code : «
unsigned char Buffer[512];
__asm {
mov edx, offset Buffer
mov byte ptr[edx], 0Eh
mov byte ptr[edx+1], 41h
; etc...
}
» reviens à écrire : «

unsigned char Buffer[512];
Buffer[0] = 0x0E;
Buffer[1] = 0x41;
»

Mais explique moi, où tu lui dis qu'il faut qu'il mette 0Eh dans ah, 41h dans Al et qu'est-ce que tu écris comme caractère pour lui ordonner d'exécuter : int 10h ????????
Là, tu n'as fait que mettre des valeurs dans le tableau...

En tout cas, merci pour votre aide...
Fabien


jeudi 2 septembre 2004 à 23:28:39 | Re : Secteur de boot : comment ordonner des commandes ???

djl

BruNews > est-ce que on pourrait faire une fonction en asm pur et copier dans le buffer à partir de l'adresse de la fonction,ca marcherais comme ca ?

jeudi 2 septembre 2004 à 23:45:27 | Re : Secteur de boot : comment ordonner des commandes ???

BruNews

Administrateur CodeS-SourceS
djl> tout ce qui sera dans le bloc
__asm {

}
sera en asm, pas besoin que soit ailleurs, ou alors je ne saisis pas le prob.

Foub12> je ne fais effectivement que mettre des valeurs aux octets, je pensais que c'etait ce que tu voulais.
La zone de boot est lue depuis une interruption bios qui donnera la main au systeme si le boot est valide. A toi de mettre une zone boot correcte.

ciao...
BruNews, Admin CS, MVP VC++

jeudi 2 septembre 2004 à 23:52:10 | Re : Secteur de boot : comment ordonner des commandes ???

Foub12

donc si je comprends bien, c le système qui tout seul, saura qu'il faut qu'ils mettent ces valeurs dans le bon registre et et qui de lui même fera appel aux interruptions...

????

jeudi 2 septembre 2004 à 23:57:32 | Re : Secteur de boot : comment ordonner des commandes ???

BruNews

Administrateur CodeS-SourceS
va voir exemples de sector boot sur asmfr, tu verras de quoi il retourne.
Si tu veux regarder ce qu'il y a dans la zone boot d'un disque, tu prends mon prog (toujours sur asmfr) qui fait des 'ISO' et tu en fais un depuis un CD bootable par exemple. Te suffira d'afficher ensuite les octets du iso, ce n'est rien d'autre que la zone boot.

ciao...
BruNews, Admin CS, MVP VC++

vendredi 3 septembre 2004 à 02:23:39 | Re : Secteur de boot : comment ordonner des commandes ???

Foub12

soit le code suivant :

«
unsigned char Buffer[512];

void test()
{
//affiche un A
asm {
mov ah, 0eh;
mov al, 41h;
int 10h;
}
}
»

Comment puis-je écrire en C pour que mon Buffer contiennent les instructions machines de ma fonction test ???
Naturellement, si j'écris Buffer = test, mon code refuse de compiler...

J'aimerais en fait que Buffer égale :
Buffer[0] = b4
Buffer[1] = 0e
Buffer[2] = b0
Buffer[3] = 41
Buffer[4] = cd

Vous voyez ce que je veux dire ???

Merci pour votre aide.

Fabien

vendredi 3 septembre 2004 à 03:37:20 | Re : Secteur de boot : comment ordonner des commandes ???

aardman

Membre Club
Salut,
memcpy(Buffer, test, 5); // non ?


1 2

Cette discussion est classé dans : buffer, mov, asm, secteur, boot


Répondre à ce message

Sujets en rapport avec ce message

PB avec de l'ASM dans VC++ 6 .... [ par Foub12 ] Bonjour...Je programme sous VC++ 6 et j'ai trouvé sur Internet, la fonction suivante mais elle ne marche pas... Il compile parfaitement mais lors de l ASM et C++ [ par sebastienbro ] Bonjour, j'aimerais savoir ce qui ne vas pas dans le code suivant. J'ai une erreur "error C2400: inline assembler syntax error in 'opcode'; found 'con Problème ac du inline asm [ par oceax ] Bonjour,je suis débutant en c++ et n'y connais pas encore énormément gd chose...Sur mon dernier programme (un keygen pr crack me que j'ai créé par mes Code ASM dans projet CPP [ par FearBlue ] Slt a tous !!!$Je dev une appli en Cpp et je desire inclure de L'asm dedansJe compile avec gccVoici ce que je fais et ca fait grosse erreur :(:(:(:(   VC++ fait chier [ par GoldenEye ] Qui peut me dire comment on place le curseur où on veut et ce sans Borland ( conio.h et gotoxy aux chiottes donc ) sous DOS et avec VC++ 6.0 ( ça fait asm sous Dev-C++ [ par bolbtb ] Bonjour,J'ai trouvé çà sur cppfrance (à propos lire/écrire sur le port parallèle):ASM { mov dx,adr }sous Dev-Cpp je l'ai transformé en asm("mo [Asm][Devc++] [ par Gonath ] Bon voilà, je programme sur devc++ depuis peu. Je voudrais y insérer des codes en assembleur vu que je connais l'assembleur. Mais le prob, c qu'il n'a C++ et asm [ par Chouchou182 ] BonjourVoilà un extrait : __asm{ mov ah, 00h mov al, 13h int 10h }Aucun bug a la compilationAcess violation [EXPERTS]optimisation du c/asm [ par MrdJack ] Bonsoir, je suis en train de me renseigner sur le c et l'asm niveau vitesse d'execution. en detail je me demande comment créer un code en c pour que s Asm ou SM [ par Joky ] Et oui on voit pas trop la différence entre ces 2 choses lol :) Donc je suis entrain de lire un Tuto sur l'asm avec des ptits exemples n'ayant pas de


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

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,28 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é.