Menu
Coddy logo textTech

Powtórka: wyzwanie MOV

Część sekcji Podstawy ścieżki Assembly w Coddy. Lekcja 22 z 45.

challenge icon

Wyzwanie

To wyzwanie sprawdzi, czy rozumiesz:

  • Wczytywanie wartości z pamięci
  • Zapisywanie wartości w pamięci
  • Kopiowanie między rejestrami
  • Używanie rejestru o prawidłowym rozmiarze

Adresy danych zostały już dla Ciebie utworzone. Musisz tylko napisać instrukcje MOV.

Wyzwanie

Wykonaj poniższe zadania w podanej kolejności. Napisz jeden wiersz asemblera dla każdego zadania.

Dostarczone dane:

  • num1: zawiera wartość 8 (1 bajt)
  • num2: zawiera wartość 3 (1 bajt)
  • result: puste miejsce (1 bajt)

Zadania:

  1. Wczytaj wartość z num1 do al
  2. Wczytaj wartość z num2 do bl
  3. Skopiuj wartość z bl do cl
  4. Zapisz wartość z al w result

Po wykonaniu kodu:

  • al powinien zawierać 8
  • bl powinien zawierać 3
  • cl powinien zawierać 3
  • Pamięć pod adresem result powinna zawierać 8

Spróbuj swoich sił

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:
    ; Kod ucznia wykonuje się jako pierwszy
    
    %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

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Assembly