Menu
Coddy logo textTech

Rückblick: MOV Challenge

Teil des Abschnitts Grundlagen der Assembly-Journey von Coddy. Lektion 22 von 45.

challenge icon

Aufgabe

Diese Herausforderung testet dein Verständnis von:

  • Laden von Werten aus dem Speicher
  • Speichern von Werten im Speicher
  • Kopieren zwischen Registern
  • Verwenden der richtigen Registergröße

Die Datenadressen wurden bereits für dich erstellt. Du musst nur die MOV-Anweisungen schreiben.

Herausforderung

Vervollständige die folgenden Aufgaben in der angegebenen Reihenfolge. Schreibe für jede Aufgabe eine Zeile Assembly-Code.

Bereits bereitgestellte Daten:

  • num1: enthält den Wert 8 (1 Byte)
  • num2: enthält den Wert 3 (1 Byte)
  • result: leerer Speicherbereich (1 Byte)

Aufgaben:

  1. Lade den Wert von num1 in al
  2. Lade den Wert von num2 in bl
  3. Kopiere den Wert von bl nach cl
  4. Speichere den Wert von al in result

Nach deinem Code:

  • al sollte 8 enthalten
  • bl sollte 3 enthalten
  • cl sollte 3 enthalten
  • Der Speicher bei result sollte 8 enthalten

Probier es selbst

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:
    ; Der Code des Studenten wird zuerst ausgeführt
    
    %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
    syscall

Alle Lektionen in Grundlagen

Übe selbstständig: Assembly-Playground