Récapitulatif : Défi MOV
Fait partie de la section Fondamentaux du Journey Assembly de Coddy — leçon 22 sur 45.
Défi
Ce défi testera votre compréhension de :
- Charger des valeurs depuis la mémoire
- Stocker des valeurs en mémoire
- Copier entre registres
- Utiliser la taille de registre correcte
Les adresses de données sont déjà créées pour vous. Vous n'avez qu'à écrire les instructions MOV.
Défi
Complétez les tâches suivantes dans l'ordre. Écrivez une ligne d'assembleur pour chaque tâche.
Données déjà fournies :
num1— contient la valeur 8 (1 octet)num2— contient la valeur 3 (1 octet)result— espace vide (1 octet)
Tâches :
- Chargez la valeur de
num1dansal - Chargez la valeur de
num2dansbl - Copiez la valeur de
bldanscl - Stockez la valeur de
aldansresult
Après votre code :
aldevrait contenir 8bldevrait contenir 3cldevrait contenir 3- La mémoire à l'adresse
resultdevrait contenir 8
Essayez vous-même
section .data
msg_al db 'al = '
msg_al_len equ $ - msg_al
msg_bl db 'bl = '
msg_bl_len equ $ - msg_bl
msg_cl db 'cl = '
msg_cl_len equ $ - msg_cl
msg_result db 'result = '
msg_result_len equ $ - msg_result
newline db 0xa
section .bss
digit resb 1
section .text
global _start
_start:
; Le code de l'étudiant s'exécute en premier
%include "solution.asm"
mov r12, rax
mov r13, rbx
mov r14, rcx
mov r15, 0
mov r15b, [result]
mov rax, 1
mov rdi, 1
mov rsi, msg_al
mov rdx, msg_al_len
syscall
mov rax, r12
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
mov rax, 1
mov rdi, 1
mov rsi, newline
mov rdx, 1
syscall
mov rax, 1
mov rdi, 1
mov rsi, msg_bl
mov rdx, msg_bl_len
syscall
mov rax, r13
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
mov rax, 1
mov rdi, 1
mov rsi, newline
mov rdx, 1
syscall
mov rax, 1
mov rdi, 1
mov rsi, msg_cl
mov rdx, msg_cl_len
syscall
mov rax, r14
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
mov rax, 1
mov rdi, 1
mov rsi, newline
mov rdx, 1
syscall
mov rax, 1
mov rdi, 1
mov rsi, msg_result
mov rdx, msg_result_len
syscall
mov rax, r15
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
mov rax, 1
mov rdi, 1
mov rsi, newline
mov rdx, 1
syscall
mov rax, 60
mov rdi, 0
syscallToutes les leçons de Fondamentaux
1La Machine
Qu'est-ce qu'un CPULa mémoireRegistres vs MémoireFonctionnement des instructionsLe modèle à deux fichiersL'architecture x86-64