Menu
Coddy logo textTech

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

אתגר

כתבו שתי שורות באסמבלי כדי:

  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 אונליין