מחפש מומחה אסמבלר

RubberDucky

New member
מחפש מומחה אסמבלר

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

RubberDucky

New member
פלט שגוי

משהו לא עובר טוב לפונקציה ואני לא מצליח למצוא מזה.. יש רעיונות?
 

codec

New member
לא הרצתי, אבל...

אתה תמיד מדפיס את אותה ההודעה! גם ב-found_prime וגם ב-not_prime אתה מדפיס את message5. שכחת message6.
 

codec

New member
מספר הערות

שורה 86:
JMP input_digit ;back to input​
אף פעם (!!!) אל תעשה JMP מחוץ לפרוצדורה. רק RET. זה יכול לעשות לך הרבה צרות בעתיד. שורה 107:
MOV BX, AX​
אחרי שעשית DIV BL, התוצאה יושבת ב-AL והשארית ב-AX. זה בגלל שעשית חילוק של 8 ביט. לכן הערך שאתה לוקח כ-AX הוא טעות. שורות 112:
JMP not_prime​
אתה צריך שם קפיצה מותנית. מה שאתה עושה זה תמיד לקפוץ ל-not_prime, בלי קשר לתוצאת החילוק. שורה 126: כמו שאמרתי קודם, אתה צריך להדפיס את message6.
 

codec

New member
סליחה, typo

התכוונתי בשורה 107, שהתוצאה ב-AL והשארית ב-AH.
 

RubberDucky

New member
תודה על התגובה

עברתי על הטעויות ותיקנתי את הרוב, אני מעלה שוב את הקובץ כי אני לא מקבל את הודעה בסוף הפונקציה של prime_number התוכנית רצה בסדר בdebugger אבל לא מדפיסה את ההודעה(message6/message5) אלה חלק מההודעה הראשונה בDATASEG. מחקתי כתבתי בדקתי שאין תוים מיותרים וכלום עדיין לא מדפיס למרות שבwatch יש את הערכים הנכונים. מה יכולה להיות הבעיה?
 

codec

New member
עוד TYPO ?

בשורה 107 צריך להיות JZ ולא JL. אצלי זה עובד בסדר (עם השינוי הנ"ל).
 

RubberDucky

New member
סתם שאלה:

יכול להיות בגלל שאני עובד עם IDE של גרגמל אז זה דופק לי את ההרצה? עם מה אתה מקמפל? ושוב תודה על הINPUT...
 

codec

New member
אני עם TASM על Windows 2000

מקמפל עם TASM, ומריץ... סתם, ככה. את ה-DEBUG עשיתי עם TurboDebugger. עובדים עם מה שיש...
 
למעלה