Menu
CoddyTech

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.

challenge icon

אתגר

כתבו שתי שורות בשפת Assembly כדי:

  1. להכניס את המספר 9 לאוגר al
  2. לאחסן את הערך מתוך 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
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: Assembly אונליין