ملخص: تحدي MOV
جزء من قسم الأساسيات في رحلة Assembly على Coddy. الدرس 22 من 45.
التحدي
سيختبر هذا التحدي مدى فهمك لما يلي:
- تحميل القيم من الذاكرة
- تخزين القيم في الذاكرة
- النسخ بين السجلات
- استخدام حجم السجل الصحيح
عناوين البيانات مُنشأة لك مسبقًا. ما عليك سوى كتابة تعليمات MOV.
التحدي
أكمل المهام التالية بالترتيب. اكتب سطرًا واحدًا من لغة التجميع لكل مهمة.
البيانات المتوفرة مسبقًا:
num1: يحتوي على القيمة 8 (1 بايت)num2: يحتوي على القيمة 3 (1 بايت)result: مساحة فارغة (1 بايت)
المهام:
- حمّل القيمة من
num1إلىal - حمّل القيمة من
num2إلىbl - انسخ القيمة من
blإلىcl - خزّن القيمة من
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جميع دروس الأساسيات
2أنظمة العد
لماذا النظام الثنائي؟الأعداد الثنائيةمن العشري إلى الثنائيلماذا النظام الست عشري؟من الست عشري إلى العشريمن العشري إلى الست عشريASCII والست عشري5استدعاء النظام Exit Syscall
ما هو الـ Syscall؟استدعاء النظام Exit Syscall (60)رموز الخروج (Exit Codes)ملخص: الخروج النظيف (Clean Exit)3التعليمة الأولى - MOV
ما هي MOV؟MOV المباشرةMOV من سجل إلى سجلMOV من الذاكرة إلى السجلMOV من السجل إلى الذاكرةLEA - تحميل العنوانMOV بأحجام مختلفةتدريب: تبديل السجلاتملخص: تحدي MOVتدرّب بنفسك: Playground لـ Assembly