MOV المباشرة
جزء من قسم الأساسيات في رحلة Assembly على Coddy. الدرس 15 من 45.
أبسط شكل من MOV immediate هو MOV immediate. تعني كلمة "Immediate" أن القيمة مكتوبة مباشرةً في التعليمة نفسها.
البنية:
mov register, valueيتم نسخ value إلى register.
أمثلة:
| التعليمة | ما الذي تفعله |
|---|---|
mov rax, 5 | تنسخ number 5 إلى rax |
mov rbx, 100 | تنسخ number 100 إلى rbx |
mov rcx, 0 | تنسخ number 0 إلى rcx |
لا يفعل هذا الكود شيئًا مرئيًا (لا يوجد ناتج حتى الآن)، لكنه يضع الأرقام بنجاح في السجلات.
ملاحظة: سترى تأثير تعليمات MOV هذه في دروس لاحقة عندما تتعلم الطباعة أو تصحيح الأخطاء. في الوقت الحالي، اعلم فقط أن الأرقام مخزّنة في السجلات.
قواعد مهمة:
| القاعدة | الشرح |
|---|---|
| يجب أن تلائم القيمة register | يمكن لـ rax الاحتفاظ بأعداد كبيرة جدًا (حتى 2⁶⁴-1) |
| تُنسخ القيمة ولا تُنقل | لا يزال number الأصلي موجودًا (إنه مجرد number) |
| توجد register على اليسار | mov rax, 5 صحيح. mov 5, rax خطأ |
التحدي
اكتب سطرًا واحدًا من تعليمات assembly لكل مهمة:
- ضع العدد 5 في
raxregister. - ضع العدد 7 في
rbxregister. - ضع العدد 3 في
rcxregister.
جرّب بنفسك
section .data
msg_rax db 'rax = '
msg_rax_len equ $ - msg_rax
msg_rbx db 'rbx = '
msg_rbx_len equ $ - msg_rbx
msg_rcx db 'rcx = '
msg_rcx_len equ $ - msg_rcx
section .bss
digit resb 1
section .text
global _start
_start:
%include "solution.asm"
; احفظ القيم
mov r12, rax
mov r13, rbx
mov r14, rcx
; اطبع "rax = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rax
mov rdx, msg_rax_len
syscall
; اطبع قيمة rax
mov rax, r12
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; اطبع "rbx = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rbx
mov rdx, msg_rbx_len
syscall
; اطبع قيمة rbx
mov rax, r13
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; اطبع "rcx = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rcx
mov rdx, msg_rcx_len
syscall
; اطبع قيمة rcx
mov rax, r14
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; خروج
mov rax, 60
mov rdi, 0
syscallيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2أنظمة العد
لماذا النظام الثنائي؟الأعداد الثنائيةمن العشري إلى الثنائيلماذا النظام الست عشري؟من الست عشري إلى العشريمن العشري إلى الست عشريASCII والست عشري5استدعاء النظام Exit Syscall
ما هو الـ Syscall؟استدعاء النظام Exit Syscall (60)رموز الخروج (Exit Codes)ملخص: الخروج النظيف (Clean Exit)تدرّب بنفسك: Playground لـ Assembly