אתה צריך לקחת את המספר, לחלק ב10/100/1000 וכו' וכל פעם להציג את מה שקיבלת...הנה דוגמא למשהו שבניתי לפרויקט שלי, זה מציג עד מספר תלת ספרתי:
ד"א חחח אל תתיחס לתיעוד וההסברים בצד, זה עשיתי כי הייתי חייב חח
; ###### Output #### ; # Put your number in "AX". # output proc ; [output] CMP AX, 9 ; בדיקה האם המספר הוא חד ספרתי JNG hadsif ; אם כן, קפיצה לתווית שמדפיסה מספר חד ספרתי CMP AX, 99 ; בדיקה האם המספר הוא דו ספרתי JNG dusif ; אם כן, קפיצה לתווית שמדפיסה מספר דו ספרתי CMP AX, 999 ; בדיקה האם המספר הוא תלת ספרתי JNG tlatsif ; אם כן, קפיצה לתווית שמדפיסה מספר תלת ספרתי tlatsif: ;MOV NUM, AX ; העברת המספר למשתנה לשמירת הערך MOV DH, 100 ; העברה לאוגר את הערך 100 כדי לחלק את המספר ולקבל את ספרת המאות DIV DH ; חילוק המספר ב100 MOV DH, AH ; שמירת המנה (עשרות+אחידות) באוגר ADD AL, '0' ; הוספת הערך האסקיי של 0 למספר כדי שיהיה ניתן להדפיס אותו MOV DL, AL ; העברת ספרת המאות לאוגר כדי להדפיס אותו MOV AH, 2 ; הדפסת ספרת המאות INT 21H ; ... MOV AL, DH ; העברת ספרת האחדות והעשרות לאוגר MOV AH, 0 ; איפוס הערך הגבוה של האוגר כדי שיהיה ניתן לחלק MOV DH, 10 ; העברה לאוגר את הערך 10 כדי לחלק את המספר ולקבל את ספרת העשרות והאחדות DIV DH ; חילוק המספר ב10 MOV DL, AL ; העברת ספרת העשרות לאוגר ההדפסה MOV DH, AH ; שמירת ספרת האחדות ADD DL, '0' ; הפיכת המספר למספר שיהיה ניתן להדפיס ע"י הוספת הערך האסקיי של 0 ADD DH, '0' ; הפיכת המספר למספר שיהיה ניתן להדפיס ע"י הוספת הערך האסקיי של 0 MOV AH, 2 ; הדפסת ספרת העשרות INT 21H ; ... MOV DL, DH ; העברת ספרת האחדות לאוגר ההדפסה MOV AH, 2 ; הדפסת ספרות האחדות INT 21H ; ... JMP endit ; קפיצה לסיום השגרה dusif: MOV AH, 0 ; איפוס החלק העליון של האוגר שמכיל את המספר הדו ספרתי MOV DH, 10 ; העברה לאוגר את הערך 10 כדי לחלק את המספר ולקבל את ספרת העשרות והאחדות DIV DH ; חילוק המספר ב10 MOV DH, AH ; שמירת ספרת האחדות MOV DL, AL ; שמירת ספרת העשרות ADD DH, '0' ; הפיכת המספר למספר שיהיה ניתן להדפיס ע"י הוספת הערך האסקיי של 0 ADD DL, '0' ; הפיכת המספר למספר שיהיה ניתן להדפיס ע"י הוספת הערך האסקיי של 0 MOV AH, 2 ; הדפסת ספרת העשרות INT 21H ; ... MOV DL, DH ; העברת ספרת האחדות לאוגר ההדפסה MOV AH, 2 ; הדפסת ספרת האחדות INT 21H ; ... JMP endit ; קפיצה לסיום השגרה hadsif: ADD AL, '0' ; הפיכת המספר למספר שיהיה ניתן להדפיס ע"י הוספת הערך האסקיי של 0 MOV AH, 0 ; הדפסת המספר החד ספרתי MOV DL, AL ; .. MOV AH, 2 ; .. INT 21H ; .. endit: ret ; סיום השגרה וחזרה לתוכנית output endp ; [/output]
|