Download presentation
Presentation is loading. Please wait.
Published byWidya Susanto Modified over 6 years ago
1
נושאי הפרק מבוא שפת מכונה שפת אסמבלר מעברים באסמבלר לולאות
פעולות חשבוניות ולוגיות תת תוכנית תכנות IO
2
מבוא מערכת מחשב כוללת בתוכה חומרה Hardware ותוכנה Software.
ידיעת תוכנה אינה מחייבת ידיעת חומרה ולהיפך. ידיעה מערכתית של תוכנה והחומרה הצמודה אליה יכולה להעניק למפתח יתר גמישות. כתיבת תוכנה הינה למעשה כתיבה של סט פקודות שהמחשב מבין. קיימות שני סוגי שפות תכנות שפות תלויות מחשב – לא ניתן להעביר ממחשב למחשב (לדוגמה – שפת המחשב שתוארה בפרק הקודם). שפות שאינן תלויות במחשב – ניתן להעביר ממחשב למחשב (לדוגמה ANSI-C-).
3
מבוא על מנת שתוכנית שאינה תלויית מחשב תעבוד במחשב מסויים יש צורך להפעיל עליה תוכנית תלויית מחשב שתבצע תרגום לשפה שהמחשב הספציפי מבין. קיימים שני סוגי תוכניות: מפרש Interpreter. מהדר Compiler. הפקודות מהן מורכבת שפת תלויית מחשב (של המחשב הבסיסי הוצגה בהרצאה מבחינת חומרה. להלן הפקודות:
4
סט הפקודות של המחשב הבסיסי
5
תוכנית בשפת מכונה לחיבור שני מספרים
שפת מכונה הינה השפה היחידה שאותה מבין המחשב הבעייה הינה שאנחנו לא מסוגלים לזהות שפת המכונה באופן מיידי
6
אותה התוכנית בייצוג הקסה דצימלי
ייצוג הקסה קצר יותר אבל גם קשה לזכירה
7
אותה התוכנית בשפת אסמבלר
הליך התרגום משפת מכונה לאסמבלר נקרא דיסאסמבלר
8
הפנייה לוגית משמשת להקלת ההבנה של התוכנית.
אותה התוכנית בשפת אסמבלר עם קביעת מיקום והפניות לוגיות – מצב קרוב למציאות הפנייה לוגית משמשת להקלת ההבנה של התוכנית. התוכנית בשפה עילית void main() { int a = 83, b=-23, c; c = a + b; }
9
אסמבלר שפה הקרובה ביותר לשפה המובנת ע"י המחשב הניתנת להבנה.
חוקי האסמבלר כל שורה מכילה פקודה או "הוראה" שדות בפקודה בכל שורה שדה התווית Label או כתובת לוגית (חלק השמאלי של השורה). מסתיים בפסיק או ב=":" שדה הפקודה Instruction – פקודה לביצוע או הוראה (החלק האמצעי של השורה). שדה ההערה Comment (החלק הימני של השורה)
10
אסמבלר שלושה סוגי פקודות פקודת MRI – Memory Reference Instruction
ADD OPR – פקודה חיבור ישירה ADD OPR I – פקודת חיבור עקיפה. פרודת רגיסטר None – MRI CLA – ביצוע משלים לאקומולטור. פקודת דמה Pseudoinstruction – שהינה בעצם הוראה למתרגם ולא פקודת ביצוע של ממש. ORG N – השמת קטעי קוד במקום מסויים בזיכרון. END – מתאר את סוף תוכנית האסמבלר. DEC N – הקצאת מספר עשרוני בתא מסויים. HEX N – הקצאת מספר הקסהדצימלי בתא זיכרון.
11
תוכנית אסמבלר לחיסור שני מספרים
הוראה למתרגם None MRI Inst. MRI Inst. Label Comment
12
אותה התוכנית לאחר ביצוע תרגום
13
אלגוריתם לביצוע התרגום
נקרא אסמבלר מבוצע בשני מעברים אסמבלר מעבר ראשון – קביעה של כתובות לוגיות וסידורם בטבלה כהכנה למעבר השני. אסמבלר מעבר שני – ביצוע התרגום בהסתמך על: הקודים של הפקודות הטבלה שחושבה במעבר הראשון.
14
תרשים זרימה למעבר ראשון
15
תרשים זרימה מעבר שני
16
ביצוע לולאות דוגמה לתוכנית בשפת C לסיכום ערכי מערך באמצעות שימוש לולאות void main() { int i,sum=0, a[100]; for(i=0;i<100;i++) sum += a[i]; }
17
אותה התוכנית בשפת המחשב הבסיסי
18
תכנות פעולות ארימתיות שונות
קיימים מספר רב של מחשבים ולכל מחשב יש את סט פקודות המכונה שלו. מספר פקודות המכונה יכול להיות כמה מאות עד כמה עשרות על פי גודל המחשב. קיימים מחשבים הכוללים בתוכם פעולות חיסור הכפלה וחילוק. במחשב הבסיסי אין את הפעולות הנ"ל ומטרת השקפים הבאים הינה תיכנות הפקודות הנ"ל.
19
תכנות פעולת כפל במחשב הבסיסי
הכפלה של מספר בין מספרים של 16 ביט תיתן תוצאה של 32 ביט. הנחות יסוד לגבי התוכנה הכופל והמוכפל הינם מספרים חיוביים בלבד גודל המספרים הינו עד 255 (8 ביט הנמוכים). תיאור התוכנית יבוצע באמצעות תרשים זרימה הכולל הוראות ביצוע הוראות הסתעפות הוראות קלט פלט.
20
תרשים זרימה להכפלת שתי מספרים
21
תוכנית להכפלת שתי מספרים חיוביים
22
תוכנית לחיבור שני מספרים בדיוק כפול
חיבור ארוך מבוסס על חיבור רגיל והעברת הנשא בין החיבור הראשון לשני
23
ביצוע פעולות לוגיות כגון OR
שימוש בחוקי דה-מורגן לביצוע פעולות OR (שאינה מוגדרת במחשב הבסיסי) באמצעות פקודת AND (המוגדרת במחשב הבסיסי) LDA A CMA STA TMP LDA B AND TMP
24
שימוש בפרוצידורות יתרונות חסרונות
כתיבה חד פעמית של קוד החוזר על עצמו במקומות שונים בתוכנית הראשית או מפרוצידורה אחרת. הקטנת גודל התוכנית. קל יותר לתחזוקה. חלוקת עומס עבודה בין מתכנתים העובדים על אותו הפרוייקט. קיימות בעיות שניתן לפתור באמצעות פרוצידורות בדרך פשוטה הרבה יותר. הסתרת קטעי קוד למתכנתים אחרים. חסרונות שימוש בפרוצידורות מגדיל את זמן ההרצה של התוכנית. לפעמים התאמת פרוצידורה לתוכנית קשה יותר מאשר כתיבתה מחדש. צריך מנגנון לזכירת כתובת החזרה
25
שימוש בפרוצידורות - המשך
שמות נוספים לפרוצידורה הינם: סברוטינה, פונקציה ותת תוכנית. כיום נושא זה הורחב לאובייקטים/UNITS ומה שניתן לשלב בניהם. לפרוצידורה יש אפשרות להעביר פרמטרים שעל פיו היא תפעל.
26
תוכנית הדגמה לשימוש בסברוטינות
27
העברות פרמטרים לפרוצידורות
על מנת שפרוצידורה תעבוד יש צורך להעביר לה פרמטרים שעל פיהם היא תפעל. העברת פרמטרים תתבצע במספר שיטות רגיסטרים – כמו בדוגמה הקודמת. מיקומים קבועים/משתנים בזיכרון. מחסנית. הפרמטרים המועברים מייצגים ערכים. כתובות בזיכרון.
28
תוכנית המדגימה העברת פרמטרים לסברוטינה המבצעת פעולת OR מיקום הפרמטר במקום משתנה בזיכרון.
29
סברוטינה להעברת בלוק נתונים – כתובת הפרמטרים משתנה
30
תכנות עם רכיבי IO בזמן תכנות עם רכיבי IO יש צורך לתאם בין מהירות המעבד ובין רכיב ה-IO. במצב כניסה – יש צורך לקרא מהרגיסטר רק כאשר בטוחים שהרכיב החיצוני כתב מידע לרגיסטר. במצב יציאה – יש לכתוב לרגיסטר היציאה רק כאשר המידע שנכתב שם קודם נקרא ע"י הרכיב החיצוני. ההתאמה הנ"ל נקראת לחיצת יד או HANDSHAKE. ה-HANDSHAKE מתבצע באמצעות הדגלים FGI, FGO. להלן תוכנית לקריאה וכתיבה מרכיב IO.
31
פרוצידורות להתקשרות עם IO
32
סברוטינה לקבלת נתונים ואיחסונם
33
תוכנית לאיחסון תווים בחוצץ
34
פסיקות בתוכנית הקודמת ניתן לראות שאם אין נתונים כלשהם מהכניסה המערכת לא תסיים את הלולאה. במקום לבזבז זמן CPU לבדיקה האם קיים קלט, ניתן להשתמש בפסיקות. בצורה זו המעבד יעסוק בחישובים ולא יהיה ביזבוז זמן לשווא. יש צורך להוסיף למערכת את פרוצידורת השירות לפסיקה שתהייה תמיד בכתובת 0. על תוכנית השירות לקבוע מהו מקור הפסיקה.
35
פסיקות מה מתבצע בד"כ בשעת פסיקה: שמירת תוכן הרגיסטרים של המעבד
בדיקה איזה גורם גרם לפסיקה ביצוע תוכנית השירות לפסיקה שחזור תוכן הרגיסטרים הדלקת דגל הפסיקה חזרה לתוכנית הראשית רצוי שתוכנית הפסיקה תהיה קצרה ככל האפשר…
36
תוכנית שירות לפסיקות
37
מערכות מחשבים ותוכנה בהתקנת מחשב בסיסי מקבלים את המערכות הבאות
סיפרית תוכניות המבטיחות ממשקים למתכנת. ממירי שפות עיליות לשפת מכונה (קומפיילרים) עזרים המקשרים בין החומרה הקיימת במחשב והמשתמש תוכנית טעינה. מערכת הפעלה המאחדת בתוכה את כל הסעיפים לעיל.
38
עזרים למשתמש תוכניות עזר בהם המשתמש יכול לכתוב ולאתר קבצים כמו
עורך Editor מנפה תוכניות Debugger אפשרות לשמירת בלוקים בזיכרון.
39
ממירי שפות עיליות לשפת מכונה (קומפיילרים)
תוכנית שנכתבת בשפה עילית מתורגמת ל-Object תוכנית Object הינה תוכנית קרובה מאוד לשפת מכונה בלי הגישה לסברוטינות חיצוניות שהמתכנת עשה בהם שימוש. רכיב תוכנה נוסף שהינו Linker תופר את כל המודולים לתוכנית אחת Executable קיימים כיום שיטות נוספות לשיתוף תוכנה: DLL – Dynamic Link Library המאפשרות שיתוף קוד בשפות שונות. ActiveX (לדוגמה תאריכון)
40
עזרים המקשרים בין החומרה הקיימת במחשב והמשתמש
סברוטינות אלו נכתבו באופן חד פעמי ומאפשרות למתכנת לשלוט על חומרה מסויימת באמצעות ממשק סטנדרטי. עזרים אלה ניתנים למתכנת באמצעות סיפריית קודים שאינה ניתנת לשינוי ע"י המשתמש. עזרים חשובים הינם אותם קטעי קוד המטפלים בהתקני קלט פלט כמו מקלדת, דיסק ומסך.
41
תוכנית טעינה. תוכנית הטעינה לוקחת קובץ בר הרצה מהזיכרון המשני טוענת אותו לדיסק במקום מוגדר ומריצה אותו קיימים שני סוגי תוכנית טעינה טוען סטטי – הטוען את התוכנית בדיוק במקום בו ביקש ממנו המשתמש טוען דינמי – המשנה את כל הקפיצות כך שיתאימו לכתובת ריצה חדשה שתקבע בהתאם למצב הקיים בזיכרון. בטעינת DLL רק עותק אחת של התוכנה נטען לזיכרון (גם קטע ריצה וגם נתונים)
42
מערכת הפעלה הגורם המאחד את כל מה שנאמר לעיל תחת מטריה אחת. מערכת הפעלה יכולה לקבל ולהעביר ידע באשר לתקינות הריצה של תוכניות מתי התוכנית הסתיימה מתי התגלתה שגיאה (כמו חלוקה באפס) מי מהתוכניות ממתינה לפעולת ק"פ חלוקת זמנים בין התוכניות השונות המורצות במחשב על פי עדיפות. ניהול הזיכרון. וכו'
43
תוכניות דיאגנוסטיקה תוכניות אלו מבצעות בדיקה של החומרה
בדיקת חומרה הינה נושא חשוב כאשר מנסים לברר למה תוכנית מסויימת לא רצה. תוכניות הבדיקה מגיעות יחד עם המחשב.
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.