help

sharon1123

New member
help

שלום עלי לכתוב תכנית המסכמת מערך של 10 בתים ומקרינה את התוצאה. יש להתייחס אל מספרי המערך פעם כאל מספרים לא מסומנים ופעם כאל מסומנים. יש להניח שמערך הבתים מאותחל ולכן אין צורך לקלוט לתוכו את המספרים. כדוגמת פלט יש להקרין את סכום המערך הבא: tab db 1,10,128,-225,-7,150,200,-250,-15h,-10h את 2 הסכומים יש להקרין בשיטת הגודל והסימן ( כלומר: מספר שלילי מוקרן כשלשמאלו התו ´-´) בייצוג עשרוני ובייצוג הקס. דוגמה: אם הסכום (כלא מסומן) הוא 11111111b אזי הוא יוקרן כך: 225,ffh אם הסכום (כמסומן) הוא 10000000b אזי הוא יוקרן כך: 128-,80h- תודה והפותר יבוא על שכרו שרונה
 

אלדד26

New member
ומה בדיוק השאלה, שרונה?

הרי לא תצפי מאיתנו לכתוב לך את התשובה.
 

אלדד26

New member
רמזים

1. לגבי ההתייחסות כמספרים מסומנים/לא מסומנים: אם תעבירי את המספרים לאוגר של 8 סיביות ותעשי ADD, זה יהיה בצורה מסומנת. אם תעבירי את המספרים לאוגר של 8 סיביות ותאפסי את האוגר הגבוה (כלומר, תעבירי מהמערך ל - AL ותאפסי את AH), ואז תעשי ADD על כל AX, אז זה יהיה לא מסומן, כאילו כולם חיוביים. 2. לגבי המרה להקס - זה פשוט. נתקוף קודם את המקרה שבו אנחנו מתייחסים אל הסכום כלא מסומן. נניח שהמספר שלך ב - AL. תעשי:
XOR AH,AH SHL AX,4 SHR AL,4​
מה יצא? איפסנו את AH, הזזנו את כל AX ארבע ביטים שמאלה, ואז הזזנו את AL ארבעה ביטים ימינה. כמו שאת יודעת, בית אחד מכיל שתי ספרות הקסה, שכל אחת מהן - נכון, 4 ביטים. אחרי 3 הפקודות האלו יוצא לך שב - AL יש לך את הספרה הפחות משמעותית, וב - AH את הספרה היותר משמעותית. תוסיפי לשתיהם 30h (כדי להפוך את זה לקוד ASCII), תדפיסי אותן על המסך אחת אחרי השניה, וזהו! 3. אם המספר מסומן, את צריכה לעשות את אותו התהליך, אבל קודם לעשות בדיקה אם המספר שלילי (תעשי TEST של האוגר שבו סכמת יחד עם 128, שבו הביט השמיני דלוק). אם הוא שלילי, תדפיסי "-" ותהפכי את המספר לחיובי (פקודת NEG), ואז תדפיסי אותו כמו בסעיף 2 בדיוק. 4. לגבי המרה לעשרוני - זה טיפונת יותר מסובך. תצטרכי להפעיל את אלגוריתם ההמרה לעשרוני (עם חלוקה ב - 10 וכל זה... זוכרת?) וכמובן, לבדוק תחילה האם מדובר במספר שלילי (ואז כמו בסעיף 3, להדפיס "-" ולהפוך לחיובי לפני ההדפסה). בהצלחה!
 

אלדד26

New member
וזה הזמן לשאול

מה שכרי על העניין?
 
למעלה