MOV מזיכרון לאוגר
חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 17 מתוך 45.
עד עכשיו העברת מספרים ישירות לאוגרים (ערך מיידי) והעתקת ערכים בין אוגרים. עכשיו תלמד איך לטעון נתונים מתוך הזיכרון לתוך אוגר.
למה זה חשוב:
זכור מפרק 0: הוראה יכולה להשתמש באופרנד זיכרון אחד לכל היותר, ואוגרים מהירים בהרבה מזיכרון, לכן טוענים את הערכים שעובדים איתם לתוך אוגרים. כך עושים זאת.
תחביר:
mov register, [address]הסוגריים [ ] פירושם: "עבור לכתובת הזיכרון הזאת וקבל את הערך המאוחסן בה."
חשוב על זה כך:
דמיין שבכתובת הזיכרון number יש קופסה. בתוך הקופסה יש ערך, למשל המספר 5. כשכותבים:
mov al, [number] ; Load the value from memory address "number" into alאתה אומר למעבד: "גש לתיבה שנקראת number, קח את הערך שנמצא בתוכה (במקרה הזה 5) והעתק אותו לאוגר al."
לאחר ביצוע ההוראה הזאת, הערך 5 מאוחסן כעת ב־al. הערך המקורי שבתיבה בכתובת number נשאר שם. הוא לא מוסר.
כללים חשובים:
| כלל | הסבר |
|---|---|
| המקור חייב להיות כתובת זיכרון | [label] או [address] |
| הסוגריים המרובעים נדרשים | ללא הסוגריים, myNumber היא הכתובת, לא הערך |
| הגודל חייב להתאים | אם הזיכרון מאחסן בית, יש להשתמש ב-al (לא ב-rax) |
טעות נפוצה:
; שגוי: ללא סוגריים מרובעים, myNumber הוא הכתובת, לא הערך
mov al, myNumber
; נכון: טוען את הערך המאוחסן ב־myNumber
mov al, [myNumber]אתגר
כתוב שורה אחת של אסמבלי כדי לטעון את הערך מכתובת הזיכרון value אל האוגר al.
נסו בעצמכם
section .data
msg db 'al = '
msg_len equ $ - msg
section .bss
digit resb 1
section .text
global _start
_start:
; הקוד של התלמיד רץ ראשון (טוען ערך לתוך al)
%include "solution.asm"
; שמור את הערך מ-al
mov r12, rax
; הדפס "al = "
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msg_len
syscall
; הדפס את הערך ב-al
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 אונליין