Menu
Coddy logo textTech

LEA – טעינת כתובת

חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 19 מתוך 45.

עד כה השתמשת ב־mov כדי לטעון ערכים מהזיכרון לאוגרים. אבל לפעמים אינך רוצה את הערך. אתה רוצה את הכתובת עצמה.

LEA הוא קיצור של Load Effective Address. הוא מחשב כתובת זיכרון ומכניס אותה לאוגר, מבלי לגשת לזיכרון.

תחביר:

lea register, [address]

MOV לעומת LEA:

הוראהמה היא עושה
mov al, [number]ניגשת לזיכרון, מקבלת את הערך שבתוכו ומכניסה אותו ל־al
lea rsi, [number]לא ניגשת לזיכרון. מחשבת את הכתובת של number ומכניסה אותה ל־rsi

חשוב על זה כך:

  • mov = פותחים את הקופסה ולוקחים את מה שבתוכה
  • lea = רושמים את מספר הקופסה (הכתובת) על פיסת נייר

דוגמה:

number db 42        ; הערך 42 מאוחסן בכתובת כלשהי

mov al, [number]    ; al = 42 (הערך)
lea rsi, [number]   ; rsi = הכתובת של number (למשל, 0x402000)

למה צריך את LEA?

באסמבלי, כשאתה רוצה להדפיס מחרוזת או להעביר מיקום בזיכרון לפונקציה, דרושה לך הכתובת, ולא הערך. קריאת המערכת write (שתלמד בפרק 5) מצפה לכתובת בתוך rsi.

מה LEA יכולה לעשות (מעבר לכתובות פשוטות):

LEA יכולה גם לבצע חשבון בסיסי עם כתובות. לדוגמה:

lea rsi, [number + 5]   ; rsi = הכתובת של number + 5 בתים

זה שימושי לעבודה עם מערכים ומבני נתונים.

challenge icon

אתגר

כתוב שורת אסמבלי אחת כדי לטעון את הכתובת של message לאוגר rsi.

נסו בעצמכם

section .data
    msg_prefix db 'message = '
    prefix_len equ $ - msg_prefix

section .text
    global _start

_start:
    ; הפקודה lea של התלמיד מתבצעת ראשונה
    ; rsi אמור כעת להכיל את הכתובת של message
    
    ; הדפס את הקידומת
    mov rax, 1
    mov rdi, 1
    mov rsi, msg_prefix
    mov rdx, prefix_len
    syscall
    
    %include "solution.asm"
    
    ; הדפס את המחרוזת באמצעות הכתובת שהתלמיד טען
    mov rax, 1
    mov rdi, 1
    ; rsi כבר מכיל את הכתובת (מהקוד של התלמיד)
    mov rdx, 6                    ; "Hello" + ירידת שורה = 6 בתים
    syscall
    
    ; יציאה
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconבחנו את עצמכם

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

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

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