ASR1 2016
Florent de Dinechin, Nicolas Louvet, Antoine Plet
TP 4
Programmation en assembleur
Vous devez avant tout lire le document qui décrit l’ISA de notre processeur.
1 Lisons un peu d’assembleur
Que font les programmes suivants ?
2 Assemblons et désassemblons
2.1 Assemblage
Pour chacun de nos programmes d’échauffement, écrivez à droite de chaque instruction son code
hexadécimal. N’hésitez pas à commencer par l’écrire en binaire.
(Ce travail stupide et dégradant s’appelle l’assemblage (assembly), et vous avez déjà envie d’écrire un
programme qui le fait pour vous. Un tel programme s’appelle un assembleur.)
2.2 Désassemblage
Quel est le programme qui a pour codes hexadécimaux BAAD C0DE, B0B0 8BAD F00D, DEAD BEEF,
B0B0 DEAD ? (merci wikipedia HexSpeak).
(Ce travail rébarbatif et vexatoire s’appelle le désassemblage (disassembly), et le programme corres-
pondant s’appelle un désassembleur – c’est le de .)
3 Écrivons un peu d’assembleur
3.1) Ecrivez une routine (qui sera appelée par call et terminera par return) qui multiplie les contenus
de r0 et r1 et renvoie le résultat dans r2.
3.2) Ecrivez le produit scalaire de deux vecteurs d’entiers de taille r0, pointés respectivement par r1 et
r2, en appelant votre multiplication.
3.3) Ecrivez une routine qui convertit une chaine de caractères composés des chiffres 0 à 9 en l’entier
correspondant. On supposera la chaîne pointée par r0 et terminée par un espace.
3.4) Ecrivez une routine qui divise rO par r1, renvoie le quotient dans r2 et le reste dans r3. On com-
mencera par poser en binaire la division de 25 par 5 pour se convaincre que c’est plus facile qu’en
décimal.
3.5) Ecrivez Pokemon Go 2, vite avant que Nintendo le fasse.
4 Et dans les 10mn qui restent
Identifiez-vous des instructions qui manquent à ce processeur, et des manières raisonnables de les
encoder ?
1 / 2 100%