![]() |
# 1 |
חבר חדש
|
עזרה בשפת אסמבלר.
היי חבר'ה, יש לי עבודת הגשה בשפת אסמבלי, יש שאלה שהביאו לי, שעשיתי את הפיתרון שלה, אבל בדקתי בתוכנה וזה יוצא לא נוכל, תוכלו לעזור לי להבין מה לא נכון בתוכנית שלי?
השאלה: נתון בלוק נתונים שכתובת ההתחלה שלו 800H וגודלו 30H בתים כתוב תוכנית שתמנה את המספרים שערכם קטן מ-39 ותאחסן את התוצאה בתא שכתובתו 900H. אני עשיתי ככה: mov si,800h mov cx,30h mov ax,0h mov bx,39h mov DI,900h d:cmp [si],bx jb a jbe b a:inc ax dec cx jnz d jz c b:dec cx jz c jnz d c:mov [di],ax הדברים שלמדנו עד עכשיו: mov, add,sub,inc,dec,cmp וג'אמפים. מקווה שתעזרו ![]() אגב ללא קשר, פעם היה לי משתמש פה ואני לא זוכר ת'סיסמא שלו, מה עושים? |
![]() |
![]() |
# 2 |
חבר בקהילה
|
אני אחפש איפשהו תאסמבלר, בתקווה שאני זוכר משהו
מקווה שאני אוכל לענות לך קצת יותר מאוחר לגבי הקוד. להבא עדיף רק שתשים את זה בתגיות של code, שיהיה נוח לקרוא. עריכה2: לגבי הקוד שלך - הבעיה היא בשורה קוד:
jbe b jae ולא jbe חוצמזה שאפשר קצת לחסוך כי יש קוד שחוזר בחלק של תווית a ושל b עריכה: יכול להיות שמשהו כזה?: קוד:
MODEL small CODESEG start: mov si,800h ; data segement address mov cx,30h ; size of data segment mov ax,0h ; counter mov bx,39h ; 39 or 39H? mov di,900h ; output address lup: cmp [si],bx ; check if the number is bellow 39 JAE a ; number bigger than 39, so dont add him inc ax ; if smaller than 39 -> inc counter a: dec cx jnz lup mov [di],ax ; move result to its place exit: mov ah,4CH ; exit program, return to dos mov al,0 int 21H END start Last edited by Balrog; 10-10-06 at 15:53.. |
![]() |
![]() |
# 3 |
חבר חדש
|
זה נראה לי נכון, אבל כשאני בודק את זה בתוכנה EMU8086 זה לא יוצא נכון. =[ אפשר לדבר איתך באיסיקיו או מסנגר?
|
![]() |
![]() |
# 4 |
חבר בקהילה
|
בעקרון אפשר (יש איסי בפרטים שלי) - אני לא בטוח אבל שאני אוכל לעזור לך
אני רואה שאנחנו שאתה התכוונת באמת לאסמבלר 8086, את הקוד שאני רשמתי הרצתי והוא עבר קומפילציה, אבל אי אפשר ממש לבדוק (צריך לשים ערכים בכתובת 800 בזכרון, ולבדוק מה יש בכתובת 900, ולא כ"כ ברור לי איך לעשות את זה, אני לא רוצה לכתוב לכתובת 800 בזכרון - לך תדע מה נדרוס שם :\) אגב - יש איזושהי הודעת שגיאה שהאמסבלר מחזיר? אם כן באיזה שורה ומה ההודעה? |
![]() |
![]() |
# 5 |
חבר חדש
|
אין שגיאה
איך משנים? איפה שאתה מריץ את התוכנית אתה לוחץ VIEW ואז MEMORY. |
![]() |
![]() |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|