Menu
Coddy logo textTech

まとめ:MOVチャレンジ

CoddyのAssemblyジャーニー「基礎」セクションの一部 — レッスン 22/45。

challenge icon

チャレンジ

このチャレンジでは、以下の理解度をテストします:

  • メモリからの値のロード
  • メモリへの値の保存
  • レジスタ間でのコピー
  • 正しいレジスタサイズの使用

データアドレスはすでに作成されています。MOV命令を記述するだけです。

チャレンジ

以下のタスクを順番に完了してください。各タスクに対してアセンブリを1行記述してください。

提供されているデータ:

  • num1 — 値 8 を保持 (1バイト)
  • num2 — 値 3 を保持 (1バイト)
  • result — 空きスペース (1バイト)

タスク:

  1. num1 から al に値をロードする
  2. num2 から bl に値をロードする
  3. bl から cl に値をコピーする
  4. al から result に値を保存する

コード実行後:

  • al は 8 を保持している必要があります
  • bl は 3 を保持している必要があります
  • cl は 3 を保持している必要があります
  • result のメモリは 8 を保持している必要があります

自分で試してみよう

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:
    ; 最初に受講者のコードを実行します
    
    %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

基礎のすべてのレッスン