תודה![]()
|
|
כן אחי ... ממש אפשר להבין הכל שם.. ועוד שזה ב אסמבלר
תחשבו קצת אנשים.. זה גם אסמבלר.. וגם אתם מביאים הסבר שהוא לא בשפה עיברית?
קיצר ככה אחי:
אתה מגדיר אותו ככה:
ב .DATA
אתה מוסיף תשורה הזאת:
arr db 10 dup (0) - זה מגדיר מערך עם 10 מקומות..
ו.. אתה עושה משתנה לדוגמא שיקראו לו
INDEX
מגדיר אותו יעני
index db 0
ו.... כל הזמן אתה עושה inc ל INDEX
(מוסיף אחד לאינדקס)
ו.. אחרי שיש לך את האינדקס? אתה ככה בוחר מקומות במערך
mov bx,index
(מעביר את התוכן של אינדקס, לאוגר BX שהוא אוגר מיוחד די לציין מקום במערך)
ואז אתה עושה ככה:
אם לדוגמא אתה רוצה לעביר את התוכן של AL לתוך מקום BX במערך.. אתה עושה ככה:
mov arr[bx],al
אן לא הבנת יש הדעה פרטית (:
אשכול החתימות הגדול שלי - חתימות מתחילת קריירת העיצוב שליתגיבו חופשי...
מיותר לייצר משתנה אינדקס.
תעשה שימוש באוגרי אינדקס (SI\DI)
נתחיל עם זה שמתכנת חייב לדעת אנגלית, מתכנת ללא רמה טובה באנגלית יתקל בהרבה צרות בעבודתו.
ואז מה אם זה אסמבלי ? וכן, לשפה קוראים אסמבלי ולא אסמבלר.
אתה גם צריך להגיד ש db זה define Byte והוא מגדיר מקום בזיכרון ל 10 בתים. dup באה מ duplicate והיא משכפלת ( בדוגמא שלנו ) 10 בתים כאשר ערך כל בית יהיה 0. מין מימוש פרימיטיבי לפונקציה calloc .
הוא יכול להשתמש ב duplicate גם בשביל בלוקים בזיכרון בגודל struct שהוא הגדיר או בכל סוג וגדול שהוא חפץ ... ו משתנה מסוג db לא תמיד יספיק בשביל להיות "אינדקס" שלא נדבר על לא יעיל ולא נחוץ.
bx בדומה ל si,di ו bp יכול לשמש כאוגר למיון עקיף. bp קצת מיוחד, אבל זה לא עניננו כרגע.
הוא יכול לגשת גם למקום מסוים במערך באופן מפורש על ידי הצבת מספרים...
חוץ מזה, אולי יהיה יותר "אלגנטי" ויותר יעיל להעביר את כתובת ההתחלה של המערך ( בעזרת lea או offset ) לאיזה אוגר היכול לשמש למיעון עקיף, ואז להשתמש באוגר הזה במקום שכל פעם לקרוא באופן מפורש לזיכרון.