ניסוי -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 נכתב על ידי בוכניק יוסף
© Copyright 2024