עמוד:151

מאיור 5 . 1 אנו רואים כי תוצאת החיבור היא בת 9 סיביות . אולם כפי שציינו בפרק השני , בבית אחד יש רק 8 סיביות , ולכן הסיבית התשיעית "נפלה" והערך שאוחסן באוגר AL בסופו של דבר הוא : AL < - 011101012 = 75 h = 117 בהתאם לכך , התוצאה לאחר בצוע ההוראה השלישית היא ' sub al , c ; AL « - 75 h - 4 Eh = 27 h = 39 וכך קיבלנו את הטעות בתוצאה . בביצוע חישובים על מספרים שלמים בלתי מכוונים יתכן ונקבל תוצאות שלא ניתן לאחסן באופרנד היעד . זכרו כי אופרנד היעד , שיכול להיות אוגר או תא בזיכרון , הוא מוגבל בתחום המספרים שהוא יכול להכיל . אם תוצאת החישוב גדולה מהמספר הגדול ביותר שניתן לאחסן ביחידת אחסון , מתקבלת גלישה . ( overflow ) המחשב מטפל בגלישה על-ידי ביצוע חישוב במודולו , 2 " כאשר n הן מספר הסיביות , ורק השארית שמתקבלת מהחישוב במודולו נשמרת ביחידת האחסון . כלומר , אם תוצאת החישוב אותה נכנה , x גדולה מדי , המחשב מבצע את החישוב הבא x = x mod 2 n לדוגמה , בחישוב שתיארנו באיור , 5 . 1 יחידת האחסון היא מטיפוס בית , בה יש 8 סיביות ולכן יתבצע החישוב במודולו 2 כלומר : x = ( 201 + 172 ) mod 28 = 373 mod 256 = 117 כדי לפתור את בעיית הגלישה שנוצרה בדוגמה זו , אנו יכולים להגדיר משתנה מטיפוס מילה או מילה כפולה וכך להגדיל את תחום המספרים בהם ניתן לטפל . שיטה אחרת אותה נציג בסעיף 5 . 4 היא לבדוק אם אכן התרחשה גלישה ובהתאם להפיק הודעה למשתמש או לבצע פעולה שנקבעה מראש במקרה זה . שאלה 5 . 5 מה יהיה המספר שיאוחסן באוגר AX לאחר ביצוע ההוראות הבאות ו add ax , 067 FAh mov ax , 0 F 023 h הסבירו את תשובתכם על-ידי חישוב במודולו מתאים .

מטח : המרכז לטכנולוגיה חינוכית


לצפייה מיטבית ורציפה בכותר