פורסם 2012 במאי 213 שנים שלום, התבקשנו לכתוב תוכנית באסמבלי שמדיפסה מספרים מושלמים: מספר שלם חסר סימן נקרא מספר מושלם אם הוא שווה לסכום כל מחלקיו.לדוגמא 6 ו-28 הם שני המספרים המושלמים הראשונים:6 = 1 +2 + 328 = 1 + 2+ 4+ 7 + 14שים לב שיש הבדל בין המחלקים של מספר והפירוק שלו לגורמים.למשל עבור 28, הפירוק שלו לגורמים זה 7*4 אבל קבוצת המחלקים שלו הם הקבוצה {1,2,4,7,14}עליך לכתוב תוכנית הבודקת את כל המספרים מ-2 עד 65535 אם הם מושלמים ומדפיסה את המספרים שמתגלים כמושלמים.הנה התוכנית שכתבתי אבל כשאני מריצה את התוכנית אני מקבלת הודעת שגיאה : DIVIDE OFERFLOWמישהו יכול לעזור לי לתקן את זה? תודה רבה .STACK 100h .DATASUM DW 1NUM DW 2HALF DW ?TWO DW 2STRING DB 'xxxxx is perfect',13,10,'$'TEN DW 10 .CODESTART_PROG: MOV AX,@DATA MOV DS,AXNEXT: MOV AX,NUM MOV DX,0 DIV TWO MOV HALF,AX MOV AX,NUM CMP AX,65535 JA EXIT MOV BX,2NEXT_DIV: MOV DX,0 DIV BX CMP DX,0 JE ADD1 JMP DONT_ADDADD1: ADD SUM,BXDONT_ADD: INC BX MOV AX,NUM CMP BX,HALF JNE NEXT_DIVCHECK: CMP AX,SUM JNE NEXT .MODEL SMALL
פורסם 2012 במאי 213 שנים ברוכה הבאה לפורום.אנא קראי את ההנחיות לניסוח הודעות בפורום וערכי את ההודעה בהתאם (שימי לב לסעיפים 1 ו-3).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.