אסמבלר

dani123411

New member
אסמבלר

שלום
איך אני יכול להציג על מסך מספר שנמצא בתוך אוגר AX
הבנתי שצריך להוסיף למספר 30H ואז לבצע את ההדפסה
אבל מה הצורת כתיבה?
מה שניסיתי לרשום זה את הקוד הזה : אבל מתקבל על המסך אות בג'יבריש :

mov ax,sum
add ax,30H
Mov ah , 2
Int 21h
 

פרסאוס

New member
מוסיפים 30H כדאי לקבל את תו האסקי שווה הערך

ולא "מספר". זה יעבוד על מספרים בין 0 ל 9, אבל זהו זה. אם יש לך מספר כמו 238, תצטרך למצוא דרך טובה יותר.
 

dani123411

New member
נתחיל עם מספר בין 0-9 ..

ברגע שהוספתי 30H מה הקוד להדפסת האוגר?
 

BravoMan

Active member
אסמבלי היא לא שפת תכנות.

אתה לא יכול לעשות בה כל מה שאתה רוצה.
ספציפית, אתה לא יכול להדפיס את תוכן AX.
&nbsp
למה?
כי בשיטה בה אתה עובד, ah (שהוא החלק העליון של אוגר AX) משמש לקוד פקודה.
אם אתה רוצה להדפיס תו, עם פקודה 2, אתה צריך להכניס את התו לאוגר dl, זאת כמובן בהנחה שאנחנו מדברים על אסמבלי של DOS, ולא משהו אחר שבמקרה גם הוא משתמש ב-int 21 לפקודות מערכת.
&nbsp
קרא כאן:
http://spike.scu.edu.au/~barry/interrupts.html#ah02
&nbsp
שים לב, שתוכל להדפיס ככה רק ספרה אחת.
אם המספר הוא בן יותר מספרה אחת, תצטרך לעשות אחת משתי פעולות:
א) לשמור אותו בצד ובכל פעם להדפיס ספרה.
ב) להמיר אותו למחרוזת בזיכרון ולהשתמש בפקודת הדפסת מחרוזת.
&nbsp
בהצלחה!
 

dani123411

New member
עזרת לי.רק עושה שאלה קטנה

הצלחתי להדפיס רק תו אחד
אבל יש לי בעיה עם ההדפסה של יותר מתו אחד
כעת אני רוצה להמיר אותו למחרוזת ואז להשתמש בפקודת הדפסה במחזורת
איך אני ממיר אותו למחרוזת?
תודה מראש
 

BravoMan

Active member
שלוש לשבים:

עבור כל ספרה:
1. בודד את הספרה.
2. תמיר אותה לתו (את זה אתה כבר יודע לעשות)
3. תדפיס את התו שקבלת. (או אחסן בזיכרון)
&nbsp
שים לב, שפקודה div מחזירה לך גם את החלוקה וגם את השארית.
 

dani123411

New member
השאלה אבל איך מבודדים תו?

איך אני יכול לבודד מספר באוגר AL ?
 
למעלה