MOV מאוגר לאוגר
חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 16 מתוך 45.
עכשיו, כשאתה יודע איך להכניס מספר ישירות לאוגר (MOV immediate), אתה יכול גם להעתיק ערכים בין אוגרים.
תחביר:
mov destination_register, source_registerהערך מאוגר המקור מועתק לאוגר היעד. אוגר המקור נשאר ללא שינוי.
דוגמה:
mov rax, 5 ; rax = 5
mov rbx, rax ; rbx = 5 (הועתק מ-rax)אחרי שתי ההוראות האלה, גם rax וגם rbx מכילים את הערך 5.
חשוב: אוגר המקור (rax) עדיין מכיל את הערך שלו. MOV מעתיקה: היא לא גוזרת או מעבירה.
דוגמה נוספת:
mov rax, 7 ; rax = 7
mov rcx, 3 ; rcx = 3
mov rdx, rcx ; rdx = 3 (הועתק מ-rcx)
mov rbx, rax ; rbx = 7 (הועתק מ-rax)לאחר ההוראות האלה:
| אוגר | ערך |
|---|---|
| rax | 7 |
| rcx | 3 |
| rdx | 3 |
| rbx | 7 |
למה זה חשוב:
- אפשר לשמור ערך על ידי העתקתו לאוגר אחר לפני שמשנים את המקור
- אפשר להשתמש מחדש בערכים בלי לטעון אותם שוב מהזיכרון
- זהו הבסיס של רוב פעולות שפת הסף
אתגר
כתבו את קוד האסמבלי עבור המשימות הבאות:
- הכניסו את המספר 4 אל
rax - העתיקו את הערך מ־
raxאלrbx - העתיקו את הערך מ־
rbxאלrcx
לאחר כתיבת הקוד, כל שלושת האוגרים צריכים להכיל את הערך 4.
נסו בעצמכם
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השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
3ההוראה הראשונה – MOV
מהו MOV?MOV מיידיMOV מאוגר לאוגרMOV מזיכרון לאוגרMOV מאוגר לזיכרוןLEA – טעינת כתובתMOV בגדלים שוניםתרגול: החלפת אוגריםסיכום: אתגר MOVתרגלו בעצמכם: Assembly אונליין