Hello World
Pour travailler sur du matos un peu ancien, je dois adapter du code assembleur en ligne issu d'un code compilé en GCC vers de l'assembleur en ligne sur VSC++ 2003 :
Je pense qu'il faut utiliser l'instruction OUT DX, EAX mais je ne sais pas comment faire. Le truc sympa c'est que l'assembleur en ligne sur VSC++2003 c'est de l'assembleur "brut". Ce qui revient en fait à traduire vers de l'assembleur classique.
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void IoOutputDword(unsigned short address, unsigned int value) { //unsigned short address => input operand: le port vers lequel envoyer les données //unsigned int value => output operand: le DWORD à envoyer. //adresse: Ce paramètre permet d'indiquer l'adresse du port d'entrée/sortie. Il peut s'agir d'une valeur entre 0 et FFFFh. Voir Référence des ports d'entrée/sortie 80x86 pour plus de détails. //accumulateur: Ce paramètre permet d'indiquer la valeur envoyer dans le port d'entrée/sortie. Il peut s'agir d'un des 3 registres AL, AX ou EAX. Même avec les microprocesseurs 64 bits, il n'est pas possible d'envoyer une valeur plus grande que 32 bits. __asm__ __volatile__ ("outl %0,%w1": :"a" (value), "Nd" (address)); //output operand => %0 //input operand => %1 }
Pourriez-vous m'aider ?
Merci
Partager