עבור לתוכן

בעיה עקרונית (מבחינת תפיסה) באסמבלי

Featured Replies

פורסם

רציתי לדעת מס' פרטים בנוגע לתוכנית הבאה:

CMPR: MOV SI,100H

MOV CX,20H

MOV BX,0H

AGAIN: MOV AX,[sI]

CMP AX,2233H

JNE NOT_COUNT

INC BX

NOT_COUNT: INC SI

INC SI

DEC CX

JNE AGAIN

RET

האם התוכנית סורקת התאים בקפיצות של 2H כלומר: 100H 102H 104H וכו' ובודקת באילו תאים זוגיים אלו

עד תא 138H ישנו הערך 2233H, ועבור כל תא כזה שיימצא ערך BX יועלה ב- 1H. ואז ערך BX ייצג מס' התאים הזוגיים

מתא 100H ועד 138H, המכילים הנתון 2233H.

או שלחילופין התוכנית בודקת רצפים של 22H בתא אחד ואז 33H בתא שמיד לאחריו,

כמובן שהחל מתא 100H ועד 138H , ואם מזהה רצף כזה אזי מעלה BX ב-1.

בבקשה אני חייב עזרה כי זהו משהו מאוד עקרוני בהבנה שלי את ה- 8086.

אילו משתי באופציות היא עושה ???? זה מאוד חשוב בשבילי ע"מ להבין איך עובדת השפה של 8086.

פורסם

אני לא רואה איך התוכנית הזאת אמורה לגרום לך להבין את שפת האסמבלי...

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

פורסם
  • מחבר

זאת כל התוכנית המוגדרת בשאלה כתת שגרה.

מדוע אתה חושב שהיא קופצת למקומות שלא רשמתי ?

פורסם

רציתי לדעת מס' פרטים בנוגע לתוכנית הבאה:

CMPR: MOV SI,100H

MOV CX,20H

MOV BX,0H

AGAIN: MOV AX,[sI]

CMP AX,2233H

JNE NOT_COUNT

INC BX

NOT_COUNT: INC SI

INC SI

DEC CX

JNE AGAIN

RET

פורסם

לדעתי זה עושה את האפשרות הראשונה.

פורסם
  • מחבר

מה הבעיה עם זה ? ישנה קפיצה ל- AGAIN בשורה מס' 4.

ותגיד לי... כאשר הוא בודק תא של 22H ותא של 33H, הוא בודק באופן הבא: ??????

כאשר נמצא רק בתא זוגי הערך 22H ובאי זוגי (שלאחריו כמובן) 33H או להיפך ???

פורסם

הוא בודק אם התאים הזוגיים יש 2233H אם כן הוא מעלה DX ב1 וכל זה יקרה 20 פעמים עד שCX יהיה שווה 0

פורסם
  • מחבר

למה הוא מעלה את DX ב-1 ולא את BX כפי שמצויין בתוכנה?

ומדוע הוא בודק אם ישנו 2233H בתא זוגי ולא בודק 22H בתא ואז 33H בתא שלאחריו באופן רציף ?

הרי גם רשמת:

האפשרות השניה זה בעקרון מה שקורה

פורסם

1. התכוונתי לBX

2. התכוונתי לאפשרות הראשונה

3. למה שזה יבדוק בתא זוגי ולא זוגי?

פורסם

למה הוא מעלה את DX ב-1 ולא את BX כפי שמצויין בתוכנה?

ומדוע הוא בודק אם ישנו 2233H בתא זוגי ולא בודק 22H בתא ואז 33H בתא שלאחריו באופן רציף ?

אם אני זוכר נכון זה בדיוק מה שהוא עושה, האוגר AX הוא בגודל 2BYTE אבל כול תא בזיכרון הוא בגודל BYTE1 לכן הוא בודק בתכלס את AX מול שני תאים רצופים בזיכרון.

פורסם
  • מחבר

ציטוט:

"אם אני זוכר נכון זה בדיוק מה שהוא עושה, האוגר AX הוא בגודל 2BYTE אבל כול תא בזיכרון הוא בגודל BYTE1 לכן הוא בודק בתכלס את AX מול שני תאים רצופים בזיכרון."

האם זה אומר כי הוא בודק אם בתא 100H יש 33H ואז הוא יבדוק 22H בתא 101H או שהכוונה היא שב-100H הוא יבדוק 22H

וב- 101H הוא יבדוק 33H ????? <------ עניין עקרוני וחשוב מאוד !!!!

פורסם
אם זה אומר כי הוא בודק אם בתא 100H יש 33H ואז הוא יבדוק 22H בתא 101H

זאת התשובה, אגב מעקב קצר אחרי התוכנית ייתן לך את התשובה.

פורסם
  • מחבר

זאת התשובה, אגב מעקב קצר אחרי התוכנית ייתן לך את התשובה.

אתה יכול רק לומר לי איך הגעת למסקנה זו מהתוכנית ?

והאם ישנה מטרה נוספת בתוכנית הגלומה בביצוע פעולות אלו ?

פורסם

ברור לך שלמדתי אסמבלי בקורס מסודר כמו שצריך, ובגלל זה אני יודע את זה, האמת אני לא ממש בטוח ספציפית בקטע הזה אבל הגיונית זה נראה לי נכון, הוא ייקח את הBYTE הנמוך של האוגר ויבדוק מול התא הנמוך בזיכרון.

מה זאת אומרת מטרה נוספת בבפעולות האלה ?

פורסם
  • מחבר

הכוונה היא שכאשר שואלים אותי מה עושה התת שיגרה אז אני אמור לומר כי היא מחפשת רצף של 2 תאים כאשר האחד 22H והשני 33H

החל מכתובת 100H ועד כתובת 138H או עד 139H ??? והאם זה מספיק להסבר ?

אגב היכן למדת הקורס ?

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים