Je ne sais pas où tu as récupéré ton code, mais c'est le prototype d'un travail de bricoleur, absolument pas un travail de professionnel. Pour être franc: direction poubelle. :-F
Pratiquement pas de commentaires au niveau du code, et surtout, une boucle infinie dont on ne peut sortir que par une interruption matérielle.
En principe, d'après ce que l'on peut voir, il envoie, à l'infini, 4 séries de 4 octets chacune sur le port 7. D'après les maigres commentaires, on peut en déduire qu'il envoie 4 matrices de transformation d'une figure, mais pourquoi le répète-t-il à l'infini ?
Si tu nous disais exactement ce que tu veux faire, il serait, peut-être, possible de t'aider.
Ce code est totalement inutilisable sous Linux (et sous Windows également) parce qu'il fait appel à une instruction (
OUT 7, AL) qui fait une sortie directe sur le matériel et qui ne peut pas tourner en mode utilisateur, mais uniquement en mode noyau.
De façon générale, les applications qui nécessite l'emploi de l'assembler ne tournent pas avec un système d'exploitation (SE). Ce sont des logiciels qui doivent respecter des contraintes de temps extrêmement rigoureuses et un système d'exploitation (surtout pré-emptif comme Unix ou l'un de ses clones/dérivés (Linux, ...). Ces applications sont développées à l'aide d'un SE, mais elles s'exécutent sur des cartes processeur "stand-alone".
Il est facile de traduire ce code en C:
...
unsigned char datCW{
{/* données binaires pour la rotation dans le sens des aiguilles d'une
montre, d'une demi-étape */
0x06,0x04,0x03,0x02
}
{/* données binaires pour la rotation dans le sens contraire aux aiguilles
d'une montre, d'une demi-étape */
0x03,0x01,0x06,0x02
}
{/* données binaires pour la rotation dans le sens des aiguilles d'une
montre, d'une étape */
0x01,0x03,0x06,0x00
}
{/* données binaires pour la rotation dans le sens contraire des aiguilles
d'une montre, d'une étape /*
0x04,0x06,0x03,0x00
}
}
int x1,x2;
...
for ( ; ; )
for (x1 = 0; x1 < 4; x1++)
for (x2 = 0; x2 < 4; x2++)
putchar(datCW[x1,x2];
...
NB: Ce code n'a pas été compilé, il peut contenir des erreurs de syntaxe, il s'agit simplement de te donner une idée.
Tu redirige le fichier de sortie standard (stdout) sur le port 7 et le tour est joué.
Mais je ne comprends pas pourquoi la boucle infinie ... :-/