Instructions générales
Les exercices qui suivent demandent d’écrire des suites
d’instructions ou des fonctions en assembleur nasm qui font
exactement ce qui est demandé, ni plus ni moins.
Légende des thèmes
| Thème | Abréviation |
|---|---|
| Registres | R |
| Sauts | S |
| Boucles | B |
| Pile | P |
| Fonctions | F |
| Chaînes de caractères | C |
| Tableaux | T |
| Manipulation mémoire | M |
Exercices
(RS) On suppose que
eax,ebxetecxcontiennent trois valeurs (des entiers signés). Écrire une suite d’instructions qui place dansedxla plus grande de ces trois valeurs.(RS) Écrire une suite d’instructions qui, dans le cas où
eaxetebxcontiennent des valeurs d’un même signe, remplace le contenu deecxpar son opposé.(RSB) On suppose que
eaxcontient une valeur positive que l’on symbolise parn. Écrire une suite d’instructions faisant en sorte de placer la valeur 1 + 2 + 3 + … + n danseax.(RSB) On suppose que
eaxcontient une valeur positive que l’on symbolise parn. Écrire une suite d’instructions faisant en sorte de placer la valeur 12 + 22 + 32 + … + n2 danseax.(RP) Écrire une suite d’instructions qui échange le contenu des valeurs des registres
eaxetebx. Les valeurs des deux autres registres de travailecxetedxdoivent être préservées (indice : utiliser la pile).(RP) On suppose que la pile contient trois données. Écrire une suite d’instructions qui inverse l’ordre de ces trois valeurs situées à partir de la tête de la pile.
(RPS) Écrire une suite d’instructions qui place en tête de pile le maximum entre les valeurs des registres
eaxetebx.(RSB) On suppose que
eaxetebxcontiennent des valeurs positives. Écrire une suite d’instructions qui remplace le contenu deebxpar la valeur initiale deebxplus la valeur initiale deeax. L’utilisation des instructionsaddetsubn’est pas autorisée. L’utilisation des instructionsincetdecest recommandée.(RPSB) Écrire une suite d’instructions qui dépile toutes les valeurs nulles situées à partir de la tête de la pile.
(RPSB) On suppose que
eaxcontient une valeur entière et que la pile contient un nombre suffisant de valeurs. Écrire une suite d’instructions qui dépile les valeurs de la pile qui sont strictement supérieures à la valeur contenue danseax. Le processus s’arrête dès qu’une valeur inférieure à celle deeaxfigure en tête de pile.(RPSB) On suppose que la pile contient un nombre suffisant de valeurs et que la tête de pile contient une valeur non nulle. Écrire une suite d’instructions qui place dans
eaxla plus grande valeur de la pile rencontrée jusqu’à ce qu’une valeur nulle soit trouvée.(RPSF) Écrire une fonction (respectant les conventions du C) qui prend trois arguments
a,betcet qui renvoie1sia = b = cet0sinon.(RPSBF) On suppose que l’on dispose d’une fonction
pow(écrite selon les conventions du C) qui prend en premier argument une valeurx(entière signée) et en second argument une valeurn(entière positive). Cette fonction renvoie la valeurx<sup>n</sup>. On ne se soucie pas des dépassement de capacité éventuels ici. Écrire une suite d’instructions qui empile successivement n1, n2, n3, …, nk oùnest la valeur deeaxetkest la valeur deebx.(RPSBFC) Écrire une fonction (respectant les conventions du C) qui prend comme argument l’adresse d’une chaîne de caractères et qui renvoie sa longueur (et donc le nombre de caractères situés avant le caractère nul
0).(RPSBFC) Écrire une fonction (respectant les conventions du C) qui prend comme arguments les adresses de deux chaînes de caractères et qui renvoie
1si les deux chaînes de caractères sont égales et0sinon.(RPSBFT) Écrire une fonction (respectant les conventions du C) qui prend comme arguments les adresses de deux tableaux et une taille
n. Les deux tableaux sont formés dencases de4octets. La fonction renvoie1si les deux tableaux sont égaux et0sinon.(RPSBFM) Écrire une fonction (respectant les conventions du C) qui prend comme arguments une adresse
adr, un entier positifnet un caractèrec. Cette fonction écrit aux adresses allant deadràadr + n - 1la valeurc.