אסמלבר, אוגר SI

Reut E

New member
אסמלבר, אוגר SI

אני מבינה שהוא מצביע על כתובות בזיכרון אבל לא מבינה איך להציב אותו בתוכניות למשל בתוכנית שמזיזה תא אחד ימינה את הערכים של 6 תאים, החל מהכתובת 200H, התוכנית תאפס את התא השמאלי ביותר. התוכנית מתחילה כך: MOV SI, 205H MOV CX,6 CONT: MOV AL, [SI] MOV [SI+1], AL DEC SI LOOP CONT תודה
 

Okuryo

New member
../images/Emo119.gifאין ל-SI שום תכונה מיוחדת

שלאוגרים אחרים אין. פשוט מקובל להשתמש בו כאינדקס בלולאות, בעיקר. בותכנית שכתבת, הוא מצביע הבתחלה על הכתובת של הבית האחרון מבין 6 התאים שצריך להזיז ימינה, וכל חזרה בלולאה מקטנים אותו ב-1. יש 6 חזרות כי CX מאותחל ל-6, ולכן SI יעבור על המענים של כל התאים שצריך להזיז.
 

Reut E

New member
תודה רבה

יש לי שאלה נוספת. למה MOV [SI+1], AL לפי מה שאני הבנתי הוא מעביר את תוכן הבית האחרון לAL התוכן ששמור בAL מועתק לSI+1. זה יוצא 106H? ואז DEC ל105H ומגיע ל104H באמת והלולאה ממשיכה עד הבית הראשון
 

Okuryo

New member
../images/Emo119.gifכתבת 205H...

והפקודה
mov [si+1], al​
מעתיקה את תוכן האוגר AL לתוך המען SI+1. אבל AL קיבל קודם את התוכן במען SI, ולכן מה שקורה הוא שהתוכן בתא מתקדם תא אחד קדימה, עבור כל אחד מהתאים 200H..205H.
 

Reut E

New member
אתה יכול להרחיב לגבי מה שאמרת במישפט

"אבל AL קיבל קודם את התוכן במען SI, ולכן מה שקורה הוא שהתוכן בתא מתקדם תא אחד קדימה" ? אני לא ניתקלתי בעבר במענים כאלה, שיש בהם אוגר+1 . אז אני טועה בטוח ומצטערת על הבורות. וכן טעות שלי, זה 205H
 

Okuryo

New member
../images/Emo119.gifזה לא מען עם "אוגר+1",

המען עצמו הוא SI+1. למשל, אם SI=205H, אז מעתיקים את התוכן של AL לתוך מען מספר SI+1=206H. הסימן [SI+1] פשוט מסמן את מה שיש בתוך המען SI+1 בזכרון, לעומת פשוט SI+1 שזה יהיה 206H, או 205H, ... או 201H.
 

asm32

New member
דווקא יש לו

הרבה פקודות בעיקר פקודות שעובדות עם מחרוזות משתמשות ב SI כמצביע מקור וב DI כמצביע יעד... ואוגר CX הוא האינדקס בלולאות
 
למעלה