Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملخص: تحدي MOV

جزء من قسم الأساسيات في رحلة Assembly على Coddy — الدرس 22 من 45.

challenge icon

التحدي

سيختبر هذا التحدي فهمك لـ:

  • تحميل القيم من الذاكرة
  • تخزين القيم في الذاكرة
  • النسخ بين السجلات (registers)
  • استخدام حجم السجل الصحيح

عناوين البيانات تم إنشاؤها بالفعل من أجلك. تحتاج فقط إلى كتابة تعليمات MOV.

التحدي

أكمل المهام التالية بالترتيب. اكتب سطراً واحداً من لغة التجميع (assembly) لكل مهمة.

البيانات المقدمة بالفعل:

  • 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

جميع دروس الأساسيات