בוחן ביום ראשון - עזרה דחופה באסמבלר!!!!!!!!! - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


JVT

Recommended Posts

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

אז ככה, נכון יש לכם את האוגרים 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 זה המספר המקסימאלי שהוא יכול להכיל.

קישור לתוכן
שתף באתרים אחרים

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

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

ולרוץ שם עם הDEBUGER

בהצלחה בבוחן

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...