שאלה באסמבלר

gunblade

New member
שאלה באסמבלר

מה מגדירה ההגדרה הבאה: STR2: DB "Hello",10,0,195 ברור שמוגדר פה סטרינג עם סוף שורה ותו NULL אבל מה זה ה - 195??
 

DecayCell

New member
זה תלוי מאוד במימוש

תלוי באיך התוכנית תשתמש במידע הזה.
 

gunblade

New member
אז ככה:

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

gunblade

New member
הגיוני. בבקשה.

שים לב שחייבים לצרף את הקוד הזה לתוכנית C.
 

DecayCell

New member
מהיכן התוכנית?

אכן לא ברור עניין התו הנוסף הזה... אך מעבר לכך - ישנם עניינים תמוהים נוספים כמו העובדה שהפונקציה COPY_PRINT לעולם אינה חוזרת (הוראת ה-JMP בסופה יוצרת לולאה אינסופית).
 

gunblade

New member
זה ממבחן,

ומה שהכי תמוה בעיני זה שככה התוכנית פועלת, ואפילו מסתיימת תקין, אבל אם תוריד את ה-195 הארור, תקבל שגיאה!
 

gilad_no

New member
פיתרון

195 (C3) זהו הקוד של RET. מכיוון שהמחרוזת מעתיקה את עצמה לSTR2, היא גם דורסת את הפונקציית הדפסה, ולאחר הJMP, יהיה שם RET, ולכן היא תחזור.
 

voguemaster

New member
היא לא נועדה להיות ../images/Emo6.gif

היא נועדה להיות חידה במבחן...
 

*גלעד*

New member
זה אני, GunBlade

עד עכשיו לא הייתי בבית וכתבתי מהטלפון.. :) בכל מקרה, המבחן הוא במסגרת קורס שנקרא Computer Architecture במחלקה למדעי המחשב בבן גוריון. אגב, רק עכשיו ראיתי את התשובות, וזה נכון, C3 הוא באמת ה-OpCode של Ret, גם אני הצלחתי בסוף לעלות על זה איכשהו.. תודה על כל התשובות!
 

voguemaster

New member
גם C2

רק ש-C2 משמש גם להוריד דברים מהמחסנית אם רוצים... (לפחות אם זכור לי נכון)
 

אלדד28

New member
פחות או יותר. C3 ו-CB הם RET-ים,

NEAR או FAR (בהתאמה), ו-C2 או CA משמשים להורדה מהמחסנית (שוב, NEAR או FAR בהתאמה):
C3 - RET Near return to calling procedure CB - RET Far return to calling procedure C2 iw - RET imm16 Near return to calling procedure and pop imm16 bytes from stack CA iw - RET imm16 Far return to calling procedure and pop imm16 bytes from stack​
 

voguemaster

New member
זה לא מה שאמרתי אחשלו ? ../images/Emo3.gif

תחבר למסנג'ר יא חתיכת שרץ!
 
למעלה