diff options
Diffstat (limited to 'semestre 3/architecture des ordinateurs/tme/tme3')
| -rw-r--r-- | semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm b/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm index 16cece8..b9c3fb0 100644 --- a/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm +++ b/semestre 3/architecture des ordinateurs/tme/tme3/exercice5.asm @@ -1,24 +1,31 @@ .data .text lui $3, 0xAABB - ori $3, $3, 0xCCDF + ori $3, $3, 0xCCDD - # variable définissant le bit qu'on déplace - ori $4, $0, 3 - # on génère le mask pour sélectionner le bit -st: ori $8, $0, 1 # est le mask - ori $9, $0, 3 # est le décallage pour le mask - subu $9, $9, $4 # le nombre de décallage du bit pour le mask - sllv $8, $8, $9 # on génére le mask - # on applique le mask - and $10, $3, $8 # on sélectionne le bon bit - srlv $10, $10, $4 # on décalle le bit - # on ajoute le résultat - or $5, $5, $10 - # on boucle - ori $11, $0, 1 - subu $4, $4, $11 - bgez $4, st + # on sélectionne o_1, on le décalle de 3, on l'ajoute + # on sélectionne o_2, on le décalle de 2, on l'ajoute + # on sélectionne o_3, on le décalle de 1, on l'ajoute + # on sélectionne o_4, on le décalle de 0, on l'ajoute + + ori $6, $0, 31 # est le nombre - 1 de bit à modifier + or $7, $0, $6 # est notre i de la boucle qui bouge +repeat: + ori $8, $0, 1 # masque + sub $10, $6, $7 # décallage pour sélection + sllv $8, $8, $10 # on adapte notre masque pour prendre le bon + and $9, $3, $8 # on sélectionne le bit + srlv $9, $9, $10 # on remet le bit à l'origine + sllv $9, $9, $7 # on le décalle + or $4, $4, $9 # on l'ajoute + # on calcule le nouveau i dans $7 + ori $12, $0, 1 + sub $7, $7, $12 + # on boucle si $7 >= 0 + bgez $7, repeat + + ori $2, $0, 35 + syscall ori $2, $0, 10 - syscall
\ No newline at end of file + syscall |
