עבור לתוכן

בוחן ביום ראשון - עזרה דחופה באסמבלר!!!!!!!!!

Featured Replies

פורסם

יש לי בוחן ביום ראשון על כתיבת תכנית בסיסית באסמבלר אבל אני לא מבין משהו עם האוגרים.

אז ככה, נכון יש לכם את האוגרים AX, BX, CX ו-DX?

עכשיו, כל אחד מהם מתחלק ל-2 כשכל אחד שווה 8 סיביות.

AL, AH

BL, BH

CL, CH

DL, DH

הבנתי ש-L מייצג את החלק הנמוך במילה, ו-H מייצג את החלק הגבוה. אז מזתומרת החלק הנמוך והגבוה? כאילו מתי אני יודע מתי צריך להשתמש ב-L, H או X?

נגיד ויש לי את התכנית הזאת:


stack 100h
data
code
mov ax,@data
mov ds,ax

mov al,255
add al,1

mov ah,4ch
int 21h
end
model small

אז למה השתמשו ב-L ולא ב-H או X?

ועוד שאלה קטנה, אילו מבין הפעולות הבאות משפיעות על הדגלים: mov, add, inc?

אה, ותודה מראש. D:

פורסם

אם אתה צריך לשמור ערכים קטנים מספיק לך להשתמש ב ah או al. אם אתה צריך ערכים גדולים יותר אתה צריך את ax.

גבוה ונמוך זה רק סימון כלשהו(שקשור לארכיטקטורה של המעבד).

שים לב שבתוכנית שיש לך שם הLSB של ah לא ידלק, אלא ידלק הCARRY. או היית מבצע את זה על ax אז היה בידיוק הפוך.

ניתן לדעת מי הדגלים שמושפעים מהפעולות ע"י שמם. למשל, אחרי חיבור יכול להיות לך CARRY(במו בחיבור עשרוני, לדוגמא 9+9). כנ"ל השאר.

פורסם
  • מחבר

אם אתה צריך לשמור ערכים קטנים מספיק לך להשתמש ב ah או al. אם אתה צריך ערכים גדולים יותר אתה צריך את ax.

גבוה ונמוך זה רק סימון כלשהו(שקשור לארכיטקטורה של המעבד).

שים לב שבתוכנית שיש לך שם הLSB של ah לא ידלק, אלא ידלק הCARRY. או היית מבצע את זה על ax אז היה בידיוק הפוך.

ניתן לדעת מי הדגלים שמושפעים מהפעולות ע"י שמם. למשל, אחרי חיבור יכול להיות לך CARRY(במו בחיבור עשרוני, לדוגמא 9+9). כנ"ל השאר.

שניה שניה לא הבנתי כלום ממה שאמרת, אנחנו רק התחלנו ללמוד את התכנות באסמבלר.

לא הבנתי מתי צריך AL, AH או AX. תהיה יותר ספציפי עם המספרים.

והשאלה השנייה הייתה אילו מהפעולות יכולות להשפיע על הדגלים (המורה אמרה שיש פעולות שלא משפיעות עליהם, אני לא זוכר איזה ולכן אני שואל).

פורסם

אכן. יש פעולות שלא משפיעות על חלק מהדגלים. AND לדוגמא לא משפיע על דגל הCARRY, לעומת הפקודה AND שכן משפיעה.al או ah יכולים להכיל מספרים מ0 עד 255(8 ביטים). ax(שהוא פשוט צירוף של שניהם ביחד, אחד על השני, בידיוק באותו מקום במעבד) יכול להכיל עד 65 ומשהו אלף. ax בנוי מ ah ו al, ולכן מכיל 16 ביטים. 2^16-1 זה המספר המקסימאלי שהוא יכול להכיל.

פורסם
  • מחבר

אוקיי, עכשיו הבנתי הרבה יותר טוב.

בקשר ל-AH ו-AL, אני צריך לדעת מראש אם המספר הבינארי שאני אקבל בתוצאה יעבור את ה-8 סיביות או לא, נכון?

פורסם

אתה יכול להכניס מקסימום 8 ביט לאוגרים מסוג AL או AH או BL או BX וכדומה

דבר שני הדרך הכי טובה לראות איזה דגלים משתנים ועוד זה להפעיל את התוכנה TURBO ( אם אין לך אני אשלח לך .)

ולרוץ שם עם הDEBUGER

בהצלחה בבוחן

פורסם
  • מחבר

זה בוחן בכתב, אני לא חושב שהמורה תיתן לבדוק דברים במחשב.

היא אמרה שיש פעולות שלעולם לא משפיעות על הדגלים Z, S, C ולכן כותבים שם '?'.

פורסם

ברור לי שלא תוכל בבוחן עצמן להשתשמש התכוונתי שתכתוב משהו קטן ותריץ ב DEBUGER לראות את השפעת הדגלים

ארכיון

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

דיונים חדשים