ABA


"אני צריך עזרה באסמבלי..."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #14058 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 14058
Fly2High

   23:03   14.04.07   
אל הפורום  
  אני צריך עזרה באסמבלי...  
 
   שלום,
הבעיה היא לא גדולה. יש לי באוגר כלשהו (נניח AX) מספר דצימלי כלשהו, ואני רוצה להציג אותו על המסך.
הבעיה שלי שכשאני מנסה לעשות את זה, הוא מציג לי את תו אסקי, שמייצג את המספר שבאוגר, ולא את המספר עצמו. איך אני יכול להציג את -המספר- עצמו?

תודה,
שחר.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אתה צריך לפרק אותו... -DoTaN- 15.04.07 00:37 1
     נורא עזרת! תודה רבה :} Fly2High 15.04.07 19:31 2

       
-DoTaN-

   00:37   15.04.07   
אל הפורום  
  1. אתה צריך לפרק אותו...  
בתגובה להודעה מספר 0
 
   אתה צריך לקחת את המספר, לחלק ב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]


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Fly2High

   19:31   15.04.07   
אל הפורום  
  2. נורא עזרת! תודה רבה :}  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net