MOV מאוגר לזיכרון
חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 18 מתוך 45.
עכשיו, כשאתה יודע איך לטעון נתונים מהזיכרון לאוגר, תלמד את הפעולה ההפוכה: אחסון נתונים מאוגר בזיכרון.
תחביר:
mov [address], registerהסוגריים [ ] פירושם: "אחסן את הערך מהאוגר בכתובת הזיכרון הזו."
חשבו על זה כך:
דמיינו שבכתובת הזיכרון destination יש קופסה ריקה. יש לכם ערך שמאוחסן באוגר (לדוגמה, al מכיל את המספר 7).
כשכותבים:
mov [destination], alאומרים למעבד: "קח את הערך מהאוגר al (7) והכנס אותו לתיבה שנקראת destination."
לאחר ביצוע ההוראה הזו, כתובת הזיכרון destination מכילה כעת את הערך 7. הערך ב־al נשאר שם. הוא לא מוסר.
דוגמה:
mov al, 7 ; הכנס את 7 לאוגר al
mov [destination], al ; אחסן את הערך מ־al בכתובת הזיכרון "destination"הערה: בתרגיל הזה, הנתונים בזיכרון הם בגודל של בית אחד (8 ביטים). לכן אנחנו משתמשים ב־al. זהו האוגר בגודל 8 ביטים, שמתאים לגודל הנתונים. בהמשך תלמדו עוד על גדלי אוגרים.
כללים חשובים:
| כלל | הסבר |
|---|---|
| הסוגריים מרובעים הם חובה | mov destination, al יהיה שגוי |
| היעד חייב להיות כתובת זיכרון | השתמשו בתווית כמו [destination] |
| הגדלים חייבים להתאים | בתרגיל הזה, השתמשו ב-al (8 ביטים) |
טעות נפוצה:
; שגוי: חסרים סוגריים מרובעים
mov destination, al
; נכון: מאחסן את הערך בזיכרון
mov [destination], alבאתגר שלמטה, כתובת הזיכרון destination כבר נוצרה עבורך. תלמד איך ליצור נתונים משלך בפרק 3. לעת עתה, התמקד רק בהוראת MOV.
אתגר
כתבו שתי שורות באסמבלי כדי:
- להכניס את המספר 9 לאוגר
al - לאחסן את הערך מ־
alבכתובת הזיכרוןdestination
(כתובת הזיכרון destination כבר נוצרה עבורכם.)
נסו בעצמכם
section .data
msg db 'destination = '
msg_len equ $ - msg
section .bss
digit resb 1
section .text
global _start
_start:
; הקובץ solution.asm נכלל כאן
; הוא מגדיר את destination וגם את הוראות MOV של התלמיד
%include "solution.asm"
; טען את הערך השמור מהזיכרון אל al לצורך הדפסה
mov al, [destination]
; שמור אותו
mov r12, rax
; הדפס "destination = "
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msg_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, 60
mov rdi, 0
syscallהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
3ההוראה הראשונה – MOV
מהו MOV?MOV מיידיMOV מאוגר לאוגרMOV מזיכרון לאוגרMOV מאוגר לזיכרוןLEA – טעינת כתובתMOV בגדלים שוניםתרגול: החלפת אוגריםסיכום: אתגר MOVתרגלו בעצמכם: Assembly אונליין