ניסוי 1-הכרת תוכנת הסימולציה

‫ניסוי ‪-1‬הכרת תוכנת הסימולציה‬
‫רקע‪:‬‬
‫את התוכניות הראשונות ב‪ ASM‬נכתוב בתוכנת הסימולציה ‪ ARMSIM‬שהיא‬
‫תוכנת סימולציה חופשית ‪,‬שנכתבה על סטודנטים באוניברסיטת ‪VICTORIA‬‬
‫בארה"ב התוכנה ידידותית וקלה להפעלה‪.‬‬
‫התוכנה ניתנת להורדה כולל המדריך מאתר האוניברסיטה בכתובת‪:‬‬
‫‪https://connex.csc.uvic.ca/access/content/group/ARMSim/SIMWeb/index.html‬‬
‫כדי להריץ תוכנית יש תחילה לכתוב את התוכנית בעזרת עורך טקסט ישנם עורכים‬
‫רבים ‪,‬כמו כול עורכי הקומפיילרים‪,‬או‪,‬ניתן להשתמש גם ב ‪"– notepad‬פנקס‬
‫רשימות " ‪ .‬התוכנית חייבת להסתיים בסיומת ‪*.S‬‬
‫שאלות הכנה‪:‬‬
‫‪ .1‬הסבר מה מבצעת כול אחת מהפקודות הבאות‪:‬‬
‫‪MOV R1,R3‬‬
‫‪MOV R2,#0x11‬‬
‫]‪LDR R3,[R5,#20‬‬
‫]‪STREQ R5,[R1‬‬
‫‪BLNE LOOP1‬‬
‫‪ADDS R4,R5,#7‬‬
‫‪ADDS R4,R5,#7‬‬
‫‪ORREQS R1,R3,#0X55‬‬
‫‪1‬‬
‫נכתב על ידי בוכניק יוסף‬
‫‪ .2‬קודד את הפקודות הבאות באופן בינארי ובבסיס ‪:HEX‬‬
‫‪MOVEQ R1,#0X22‬‬
‫‪ADDS R1,R2,R3‬‬
‫‪ANDNES R1,R1,#0X55‬‬
‫‪ .3‬מצא את פקודת ה‪ ASM‬של הקודים הבאים‪:‬‬
‫‪3EA00055‬‬
‫‪E0221003‬‬
‫‪2‬‬
‫נכתב על ידי בוכניק יוסף‬
‫מהלך הניסוי‬
‫‪ .1‬פתח את תוכנית הסימולציה על ידי הצלמית‬
‫‪ .2‬מתקבל המסך הבא עם סרגל הכלים‬
‫הסבר ה‪ICON‬‬
‫לחיצה על הכפתור תגרום לפקודה הנוכחית להתבצע היא תעדכן את‬
‫האוגרים ‪ ,‬הזיכרון‪,‬דגלים בהתאם לפקודה‪) Step Into(.‬‬
‫לחיצה על הכפתור תגרום לפקודה הנוכחית להתבצע היא תעדכן את‬
‫האוגרים ‪ ,‬הזיכרון‪,‬דגלים בהתאם לפקודה‪ ,‬אבל אם הפניה היא לתת‬
‫שיגרה תתבצע כול תת השגרה ‪,‬אלא‪ ,‬אם שתלנו בתת השגרה נקודת‬
‫עצירה (‪)Step Over‬‬
‫לחיצה על הלחצן תגרום לעצירת התוכנית‬
‫(‪)Stop button‬‬
‫לחיצה על הלחצן תגרום להמשיך ולהריץ להריץ את התוכנית‬
‫מהנקודה שבה נעצרה (‪)Continue button‬‬
‫לחיצה על הלחצן תגרום להתחלת התוכנית מהתחלה (‪)Restart button‬‬
‫לחיצה על הלחצן תגרום לטעינה מחדש של התוכנית האחרונה בדרך‬
‫כלל לאחר שינוים (‪)Reload button‬‬
‫‪3‬‬
‫נכתב על ידי בוכניק יוסף‬
‫סרגל הכלים‪:‬‬
‫לחיצה על ‪load‬‬
‫משמשת לטעינת תוכנית שנכתבה בעורך ‪.‬‬
‫משמש לנו לצורך צפייה בנתונים במהלך הסימולציה ‪,‬אם לא רואים נתון‬
‫מסוים יש לגשת לסרגל הכלים ולאפשר את הצפייה בו‪.‬‬
‫משמש לנתוני בסיס‬
‫לשים לב שישנו סימון ‪ V‬ואם לא קיים לסמנו‪.‬‬
‫‪4‬‬
‫נכתב על ידי בוכניק יוסף‬
‫כעת נכתוב תוכנית בסיסית‪:‬‬
‫נשתמש בעורך של ‪ notebook‬אם כי ניתן להשתמש בכול עורך אחר למשל‬
‫בעורך של שפת ‪ . C‬לזכור כי סיומת הקובץ חייבת להיות ‪S.‬‬
‫נפתח קובץ חדש ‪.‬‬
‫‪.1‬כתוב את התוכנית הבאה‪:‬‬
‫‪MOV R1,#0X55‬‬
‫‪MOV R2,#0XAA‬‬
‫‪AND R3,R1,R2‬‬
‫‪ORR R4,R1,R2‬‬
‫‪ANDS R5,R1,R2‬‬
‫‪ORRS R6,R1,R2‬‬
‫שמור את התוכנית (לא לשכוח סיומת ‪ )S.‬וטען אותה לסימולאטור‪.‬‬
‫א‪ .‬הרץ את הפקודות אחת אחרי השנייה ובדוק את שינוי האוגרים ואת‬
‫הדגלים ורשום את התוצאות‪.‬‬
‫ב‪ .‬בדוק את הקודים של הפקודות וודא שהקודים של ‪ 3‬הפקודות‬
‫הראשונות הן לפי הצפוי‪.‬‬
‫‪5‬‬
‫נכתב על ידי בוכניק יוסף‬
‫‪.2‬חזור על שאלה ‪ 1‬עבור התוכנית הבאה ובדוק גם מתי הפקודות לא‬
‫מתבצעות ולמה ?‬
‫‪LDR R1,=0X10000‬‬
‫‪LDR R2,=0X20000‬‬
‫‪ADD R3,R1,R2‬‬
‫‪SUB R3,R3,R3‬‬
‫‪ADDEQ R3,R1,R2‬‬
‫‪ADD R3,R1,R2‬‬
‫‪SUBS R3,R3,R3‬‬
‫‪ADDEQ R3,R1,R2‬‬
‫‪ .2‬כדי לעצור תוכנית נשתמש בפסיקת תוכנה ‪SWI0X11‬‬
‫ונכתוב את התוכנית הבאה‪:‬‬
‫הרץ את התוכנית ובדוק את תוכן הזיכרון מתא ‪ 0x2000‬באופן הבא‪:‬‬
‫ובדוק את תוכן הזיכרון וודא שתוכנו תואם את מה שציפית לקבל‪.‬‬
‫‪6‬‬
‫נכתב על ידי בוכניק יוסף‬
‫‪.4‬בטעות במקום להשתמש בפקודה בתוכנית הקודמת ‪ SUBS‬השתמש‬
‫הסטודנט בפקודה ‪ SUB‬הרץ את התוכנית עם הפקודה‬
‫‪ SUB‬ובדוק מה‬
‫קורה ‪,‬לחץ על "הכפתור ‪ "STOP‬כדי לעצור את התוכנית ‪,‬מדוע התוכנית‬
‫לא עצרה ?‬
‫‪ .5‬כדי להבין מדוע תוכנית לא עבדה כראוי ניתן להוסיף נקודות עצירה‬
‫‪ break point‬הוספת ‪break point‬היא על ידי הקשה פעמיים על הפקודה‬
‫בסימולאטור‪.‬‬
‫הנקודה האדומה מסמנת כי נוספה נקודת עצירה ובכול פעם שהסימולאטור‬
‫יגיע לנקודה זו הוא יעצור ‪.‬כך יקל עלינו לבדוק מדוע התוכנית לא עבדה‬
‫כראוי ‪.‬‬
‫‪.5‬הרץ את התוכנית הבאה‪:‬‬
‫ההוראה ‪ dd:.word‬אומרת להציב את הנתונים במקום ‪ dd‬בגודל של מילה‪.‬‬
‫הרץ את התוכנית ובדוק את תוכן הזיכרון בכתובת של ‪ dd‬ובכתובת של‬
‫‪ 0x20+dd‬ובדוק שהתוכנית הכפילה ב‪ 5‬את נתוני התאים מדוע ?‬
‫‪7‬‬
‫נכתב על ידי בוכניק יוסף‬
‫‪8‬‬
‫נכתב על ידי בוכניק יוסף‬