מבוא לאסמבלי

מסמכים קשורים
מתכונת עיצוב 3013

מערכות הפעלה

תרגול מס' 1

PowerPoint Presentation

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

מבוא למדעי המחשב

Comp. Arch. Lecture 1

מקביליות

Slide 1

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

מדינת ישראל סוג הבחינה: בגרות לבתי ספר על יסודיים משרד החינוך מועד הבחינה: קיץ תשע"ה, 2015 אין להעביר את הנוסחאון לנבחן אחר נספח לשאלון: נוסחאו

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

תרגול 1

Slide 1

פייתון

Slide 1

מבנה מחשבים ספרתיים

Microsoft PowerPoint - lecture4_handnotes_2013_2.ppt [Compatibility Mode]

תכנות מונחה עצמים א' – תש"ע

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

PowerPoint Presentation

Tutorial 11

מהוא לתכנות ב- JAVA מעבדה 3

בחן במערכות הפעלה

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

Microsoft PowerPoint - Lecture1

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

. שאלה 1: ה אי x] T : R 4[ x] R 4[ אופרטור ליניארי מוגדר על-ידי T( ax bx cx d) bx ax cx c )13 נק'( א( מצאו את הערכים העצמיים, המרחבים העצמיים

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

מבוא למדעי המחשב

מצגת של PowerPoint

Microsoft PowerPoint - rec3.ppt

תוכן העניינים

Microsoft Word B

Slide 1

תוכן העניינים

PowerPoint Presentation

פתרון מבחן במיקרו בקרים תשעו

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

מבוא למדעי המחשב

PowerPoint Presentation

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

שאלהIgal : מערכים דו מימדיים רקורסיה:

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

Slide 1

מבוא למדעי המחשב

תרגול 1

MathType Commands 6 for Word

מבוא לתכנות ב- JAVA תרגול 7

סדנת תכנות ב C/C++

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

פתרון וחקירת מערכות של משוואות לינאריות שאלות: 1( מצא אילו מהמערכות הבאות הן מערכות שקולות: 2x+ y= 4 x+ y= 3 x y = 0 2x+ y = 3 x+ 10y= 11 א. 2x 2y= 0

2019 שאלות מומלצות לתרגול מס' דיפרנציאביליות של פונקציה סקלרית )המשך(. כלל השרשרת. S = ( x, y, z) z = x + 3y על המשטח מצאו נקודה בה מישור משיק

מבוא למדעי המחשב

תרגיל בית מספר 1#

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

שאלהIgal : מערכים דו מימדיים רקורסיה:

Microsoft Word - c_SimA_MoedB2005.doc

HTML - Hipper Text Makeup Language

Slide 1

Slide 1

תורת הקומפילציה

שאלה 2. תכנות ב - CShell

Microsoft PowerPoint - 10_threads.ppt

שאלהIgal : מערכים דו מימדיים רקורסיה:

PowerPoint Presentation

Homework Dry 3

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

מקביליות

עוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכ

(Microsoft Word - SQL\353\351\345\345\365 \341\361\351\361 \360\372\345\360\351\355 \ doc)

שעור 6

הגשה תוך שבוע בשעת התרגול

Microsoft PowerPoint - L01-n.ppt

הגשה תוך שבוע בשעת התרגול

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

Microsoft PowerPoint - CE_Candidates_2011.ppt [Compatibility Mode]

מצגת של PowerPoint

Microsoft Word - עבודת פסח לכיתה י 5 יחל.doc

מבוא לתכנות ב- JAVA תרגול 11

פיסיקה 1 ב' מרצים: גולן בל, משה שכטר, מיכאל גדלין מועד ב משך המבחן 3 שעות חומר עזר: דף נוסחאות מצורף, מחשבון אסור בהצלחה! חלק א'

ex1-bash

Microsoft Word - Ass1Bgu2019b_java docx

<4D F736F F D20FAF8E2E9EC203220E0F7E520EEE020FAF9F2E1>

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

Slide 1

PowerPoint Presentation

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

תמליל:

1 ברק גונן

תוכנית שבנויה מחלקי קוד נפרדים המשולבים זה בזה מאפיינים: נקודת כניסה אחת נקודת יציאה אחת מבצעים פעולה מוגדרת נקראים פרוצדורות ברק גונן 2

קוד קצר יותר לא צריך לחזור על חלקי קוד שאלה למחשבה: האם אפשר לחזור על קטעי קוד ע"י פקודת?jmp OpenComputer: jmp OpenEmail: jmp ReadPassword: ReadPassword ReadPassword ; Code for signing into computer ; Code for signing into email ; Code for reading password from user 3 ברק גונן

חלוקת הקוד לחלקים מקלה על מציאה ותיקון באגים קוד קצר ופשוט לקריאה: Call ReadPassword יכולת לשתף קוד בין תוכניות בין מתכנתים 4 ברק גונן

שיתוף קוד הוא פתח לבעיות באגים בעיות אבטחה יותר מסובך לכתוב קוד מודולרי דורש יותר משאבי מחשב זיכרון פקודות נוספות )כניסה ויציאה מפרוצדורה( 5 ברק גונן

סגמנט בזיכרון משמשת לאחסון לזמן קצר של: משתנים קבועים כתובות כלי חשוב בעבודה עם פרוצדורות 6 ברק גונן

stack stack NumOfBytes 100h לדוגמה: בדוגמה, כמה בתים יש במחסנית? 7 ברק גונן

ss stack segment מצביע על הכתובת הנמוכה ביותר במחסנית sp- stack pointer מצביע על האופסט בתוך סגמנט המחסנית בתחילת התוכנית ערכו שווה לגודל המחסנית בעזרת הצירוף ss:sp אפשר להגיע לכל כתובת במחסנית 8 ברק גונן

המחסנית עובדת בשיטת Last In First Out -LIFO הערך שנכנס אחרון הוא הראשון לצאת sp לפני הכנסת ערך למחסנית ערכו של יורד לאחר הוצאת ערך מהמחסנית ערכו של sp עולה פקודת push מכניסה ערך למחסנית פקודת pop מוציאה ערך מהמחסנית 9 ברק גונן

הכנסה של ערך למחסנית מה יבוצע? ערכו של SP יירד בשתיים:.sp=sp-2 ערכו של האופרנד יועתק למחסנית, לכתובת.ss:sp push operand 10 ברק גונן

אפשר לעשות push רק לערכים בגודל word לדוגמה, הפקודה push al אינה חוקית push 5h push ax push ds push var 11 ברק גונן

מה יהיה מצב המחסנית אחרי הפקודות הבאות? mov ax, 0AABBh push ax 12 ברק גונן

push 0CCDDh 13 ברק גונן

הפקודה ההפוכה ל- push הוצאה של מילה מהמחסנית והעתקה שלה לאופרנד מה יבוצע? מילה מראש המחסנית תועתק לאופרנד ערכו של sp יעלה ב- 2 pop operand 14 ברק גונן

האופרנד חייב להיות בגודל מילה pop al ;illegal אסור לאופרנד להיות קבוע pop 5h ;illegal pop pop pop ax cs var 15 ברק גונן

נתונה מחסנית. מה יקרה לאחר הפקודה הבאה? pop bx ערכו של bx יהיה,0CCDDh ערכו של 0FEh יעלה בשתיים ויהיה שווה sp האם פקודת pop מוחקת את הערכים מהמחסנית? 16 ברק גונן

הגדירו מחסנית בגדלים שונים.,10h. 20h ראו כיצד משתנה ערכו של sp עם תחילת ההרצה. הכניסו את הערך 1234h לתוך.ax בצעו push של.ax איך השתנה?sp הסתכלו על הזיכרון שבמחסנית ומיצאו את הערך שדחפתם. בצעו pop למחסנית לתוך.ax איך השתנה?sp הסתכלו על הזיכרון שבמחסנית- האם הערך 1234h נמחק? בצעו push לערך 5678h. האם עכשיו נמחק הערך 1234h? העתיקו את ax לתוך bx בעזרת המחסנית ללא שימוש בפקודת.mov 17 ברק גונן

מה הופך "סתם" קטע קוד לפרוצדורה? קוראים לפרוצדורה באמצעות הפקודה.call אפשר להעביר פרמטרים לפרוצדורה. לפרוצדורה יש מנגנונים להחזרת תוצאות העיבוד. פרוצדורה יכולה ליצור משתנים מקומיים )שמשמשים את הפרוצדורה בלבד( ולהיפטר מהם לפני החזרה לתוכנית הראשית. 18 ברק גונן

פרוצדורה מוגדרת תמיד: או בתחילת סגמנט הקוד או בסוף סגמנט הקוד להלן שלד של פרוצדורה: proc endp ProcedureName ; Code for something that the procedure does ret ; Return to the code that called the procedure ProcedureName 19 ברק גונן

IDEAL MODEL small Stack 100h DATASEG digit db 10 dup(1) CODESEG proc SecretProc xor al, al mov cx, 10 SecretLoop: mov [bx], al inc bx loop SecretLoop ret endp SecretProc מה מבצעת הפרוצדורה הבאה? העתיקו, הריצו וצפו בשינויים בערכו של ip במהלך הריצה תרגיל מחקר: מה עושות פקודות?call, ret start: mov mov mov call exit: mov int END start ax, @data ds, ax bx, offset digit SecretProc ax, 4C00h 21h 20 ברק גונן

נחקור מה מבצעת פקודת call בתוכנית הקודמת, נשנה את שם הפרוצדורה מ- SecretProc ל- ZeroMemory ונבצע קריאה: call ZeroMemory לפני הקריאה ip=12h 21 ברק גונן

מיד לאחר הקריאה לפרוצדורה השתנה ערכו של ip מדוע כעת?ip=0000 איזה עוד רגיסטר השתנה? איזה ערך נמצא כרגע במקום?ss:sp 22 ברק גונן

מצב המעבד לפני ואחרי הרצת פקודת ה- ret : 23 ברק גונן

:call פקודת מורידה את ערכו של sp בשתיים )יש מקרה שבו היא מורידה את ערכו של sp בארבע- בהמשך( מעתיקה לתוך הכתובת,ss:sp את הכתובת בזיכרון אליה יש לחזור בסיום ריצת הפרוצדורה מעתיקה לתוך ip את הכתובת של הפקודה הראשונה של הפרוצדורה מבצעת jump אל תחילת הפרוצדורה :ret פקודת קוראת מהכתובת,ss:sp את הכתובת בזיכרון אליה יש לחזור. מעלה את ערכו של sp בשתיים )במקרה זה- מקרים אחרים בהמשך(. משנה את ה- ip אל הכתובת שנקראה מ- ss:sp, ובכך מחזירה את התוכנית לנקודה בה היא היתה לפני הקריאה לפרוצדורה. 24 ברק גונן

פרוצדורה יכולה להיות או באותו סגמנט עם הקוד שקורא לה, או בסגמנט אחר פרוצדורה -near באותו סגמנט פרוצדורה -far בסגמנט אחר תוספת ההוראה far בכותרת הפרוצדורה למחסנית יידחף גם ה- ip וגם הסגמנט של כתובת החזרה ערכו של sp יירד ב- 4 עם ביצוע call ערכו של sp יעלה ב- 4 עם ביצוע ret סביר שנשתמש רק בפרוצדורות near 25 ברק גונן

התוכנית הועתקה עם תוספת של מילה אחת בלבד: proc ZeroMemory far אילו שינויים חלו במהלך הריצה? 26 ברק גונן

CODESEG proc Print10X mov cx, 4 ; 4 'X' per line PrintXLoop: mov dl, 'X' mov ah, 2h int 21h ; Print X loop PrintXLoop ret endp Print10X start: mov ax, @data mov ds, ax mov cx, 3 מתכנת רצה להדפיס למסך שלוש שורות, ארבעה Xים בכל שורה מה הבעיה בתוכנית הבאה? Row: call Print10X mov dl, 0ah mov ah, 2h int 21h ; New line loop Row exit: mov ax, 4c00h int 21h END start 27 ברק גונן

CODESEG proc Print10X push cx mov cx, 4 ; 4 'X' per line PrintXLoop: mov dl, 'X' mov ah, 2h int 21h ; Print X loop PrintXLoop pop cx ret endp Print10X start: mov ax, @data mov ds, ax mov cx, 3 נדאג לשמור את cx בכניסה לפרוצדורה ולשחזר את ערכו ביציאה Row: call Print10X mov dl, 0ah mov ah, 2h int 21h ; New line loop Row exit: mov ax, 4c00h int 21h END start 28 ברק גונן

CODESEG proc ChangeRegistersValues ;??? mov ax, 1 mov bx, 2 mov cx, 3 mov dx, 4 ;??? ret endp ChangeRegistersValues הוסיפו שורות קוד לפרוצדורה )במקום ה-???(, כך שערכי הרגיסטרים ביציאה יהיו זהים לערכיהם בכניסה 29 ברק גונן

לא תמיד נרצה שפרוצדורה תבצע את אותו הדבר תדפיס למסך 10 םיX תדפיס למסך 9 םיX האם צריך לכתוב פרוצדורה חדשה? ניתן להעביר את כמות ה- Xים להדפסה כפרמטר שיטות להעברת פרמטרים לפרוצדורה: שימוש ברגיסטרים כלליים שימוש במשתנים שמוגדרים ב- DATASEG העברת הפרמטרים על גבי המחסנית 30 ברק גונן

proc ZeroMemory mov cx, ax ; ax holds the number ; of bytes that should ; become zero xor al, al ZeroLoop: mov [bx], al inc bx loop ZeroLoop ret endp ZeroMemory נשים ברגיסטרים כללים את כל הפרמטרים שהפרוצדורה מקבלת פשוט לשימוש כמות מוגבלת של רגיסטרים אם הפרוצדורה תשנה את הרגיסטרים ייתכן שזה ישנה את פעולת הקוד שקרא לה דוגמה: את כמות הבתים לאיפוס כפרמטר ע"י ax נשלח ל- ZeroMemory 31 ברק גונן

proc ZeroMemory mov cx, [NumOfZeroBytes] xor al, al ZeroLoop: mov bx, [MemoryStart] mov [bx], al inc [MemoryStart] loop ZeroLoop ret endp ZeroMemory נגדיר משתנים ב- dataseg ונעתיק לתוכם את הפרמטרים כבר אין בעיה של כמות פרמטרים מתכנת הפרוצדורה צריך לתאם עם מתכנת התוכנית שקוראת לה הקוד של הפרוצדורה קשה לשיתוף מה אם שתי פרוצדורות צריכות להשתמש באותם פרמטרים? 32 ברק גונן

נשתמש במחסנית להעברת הפרמטרים מצריך פקודות נוספות וזיכרון נוסף אין מגבלה על כמות הפרמטרים הפרוצדורה לא צריכה להכיר את שמות המשתנים בתוכנית שראה לה ניתן לשתף קוד בקלות השיטה המקובלת להעברת פרמטרים קיימות שתי שיטות להעברה: העברה לפי ערך- Pass by value העברה לפי ייחוס- Pass by reference 33 ברק גונן

בשיטה זו מועבר לפרוצדורה ערך הפרמטר לדוגמה: push [var] push 8 על המחסנית נוצר העתק של הפרמטר לפרוצדורה אין גישה לפרמטר המקורי אינה יכולה לשנות את ערכו, רק את ההעתק 34 ברק גונן

דוגמה: הפרוצדורה SimpleProc מחשבת I+J-K קריאה לפרוצדורה: push push push call [i] [j] [k] SimpleProc 35 ברק גונן

proc endp SimpleProc pop ReturnAddress pop ax ; k pop bx ; j sub bx, ax ; j-k pop ax ; i add ax, bx ; i+j-k push ReturnAddress ret SimpleProc pop בתוך הפרוצדורה נבצע למחסנית כדי להוציא את הפרמטרים ip יוציא את הראשון ה- pop זו אינה שיטה מקובלת, אנחנו משתמשים בה זמנית- רק לצורך הבנת פעולת המחסנית צריך לדחוף אותו חזרה למחסנית )מדוע?( בדוגמה זו נשתמש במשתנה בשם ReturnAddress ניתן להשתמש גם ברגיסטר 36 ברק גונן

צרו פרוצדורה שמקבלת פרמטר אחד בשיטת pass by value ומדפיסה למסך מספר ' X 'ים לפי הנתון בפרמטר. דגשים: יש לבדוק קודם לכן שערך הפרמטר חיובי! בסיום הריצה יש לשחזר את ערכי הרגיסטרים שנעשה בהם שימוש. עזרה הדפסת תו למסך: mov mov int dl, 'X' ah, 2h 21h צרו פרוצדורה שמקבלת שני פרמטרים בשיטת pass by value ומדפיסה למסך אם הפרמטר השני גדול מהראשון ו ' C ' 'B' אם הפרמטר הראשון גדול מהשני, 'A' אם הם שווים. בסיום הפרוצדורה יש לשחזר את הערכים המקוריים של הרגיסטרים. צרו תוכנית שמוגדרים בה ארבעה מספרים כקבועים בתחילת התוכנית, ומשתנים בשם max ו min. צרו פרוצדורה שמקבלת כפרמטרים pass by value את ארבעת המספרים הקבועים ומכניסה למשתנה max את הערך המקסימלי מביניהם ולמשתנה min את הערך המינימלי מביניהם. 37 ברק גונן

מעבירים לפרוצדורה את הכתובת של הפרמטר מיד נראה כיצד על המחסנית לא נוצר העתק של הפרמטר לפרוצדורה יש גישה לכתובת בזיכרון שמכילה את הפרמטר יכולה לשנות את ערכו 38 ברק גונן

כיצד מעבירים על המחסנית את כתובת הפרמטר? דוחפים את האופסט מבצעים קריאה לפרוצדורה push call offset parameter ProcName 39 ברק גונן

הפרוצדורה SimpleAdd מקבלת פרמטר בשיטת Pass by reference ומעלה את ערכו ב- 2 האם אפשר לבצע את אותה פעולה בשיטת Pass by?value proc endp SimpleAdd pop ReturnAddress pop bx ; bx holds the ; offset of "parameter" pop es ; es holds the ; segment of "parameter" add [byte ptr es:bx], 2 push ReturnAddress ret SimpleAdd לא. הפרוצדורה היתה משנה את ההעתק, המקור היה נשאר ללא שינוי! 40 ברק גונן

pass by צרו פרוצדורה שמקבלת פרמטר בשיטת reference ומעלה את ערכו ב 1. pass צרו פרוצדורה שמקבלת ארבעה פרמטרים בשיטת by reference ומאפסת אותם. pass by צרו פרוצדורה שמקבלת שני פרמטרים בשיטת,reference ומחליפה ביניהם לדוגמה לפני הפרוצדורה var2=5.var1=4, אחרי הפרוצדורה var2=4 var1=5, 41 ברק גונן