עבור לתוכן

שלום לכולם, כמה שאלות באמסבלר 8086

Featured Replies

פורסם

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

'שיחקתי' קצת עם המחשבון של הווינדוס במצב programmer, מצאתי ש- 87H זה 135 (כשמתייחסים אליו כמספר גדול) אבל אם אני מקטין את זה לבית אחד (8 סיביות) זה -121. זאת הכוונה כשהמחשב יכול להתייחס למספר ב- H בשתי צורות?

דבר נוסף תמיד אני תוהה וזה חשוב בכל האוגרים AX,BX וכו' קודם בא AL ואז AH או ההפך? (אם זה בטבלה, אז זה מצב אחד או2?)

AL

----

AH

--------------------------

AH

----

AL

דבר נוסף, מה הפקודות XOR, OR, MUL, IMUL עושות? ואם אפשר עם דוגמאות טובות והסבר טוב שאני יבין,

כי כל מה שאני מצאתי בגוגל זה למשל - XOR , עושה פקודה של XOR בין 2 אופרנדים. (מה אני אמור להבין מזה)

פורסם

מספר גדול או משפר שלילי - אני מניח שאתה מתכוון ל 2s complement - בה הMSB (הביט שהערך שהוא נותן לך הכי "גדול") מציין שהערך שהביט נותן לך מוכפל ב- -1.

לדוגמא - 10000000 - מציין שזה 128-.

כל שאר הביטים נספרים בצורה רגילה, והם נסכמים לך רגיל.

לדוגמא - 10000001 - מציין שזה

-128 + 1 = -127

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

AL וAH מייצגים 2 בתים ברגיסטר AX. AL מייצג את הביטים הנמוכים, ו- AH מייצג את הביטים הגבוהים. אם ניקח מספר שלילי שנמצא ב- AX, אז בAH יהיה הMSB ס(לדוגמא 10000000) וב- AL יהיה שאר הערך (לדוגמא 00000000).

בשביל הפקודות - אתה יכול לחפש בגוגל 8086 instruction set.

XOR - פועל בצורה הבאה על כל ביט במספר שלך( rs מציינים את 2 הביטים עליהם אתה מבצע את הXOR, וה- RD מציין לך את התוצאה)


rs1 | rs2 | rd
0 0 0
0 1 1
1 0 1
1 1 0




ובפשטות - אם 2 הביטים שונים - הוא יחזיר אחד. אם 2 הביטים זהים - הוא יחזיר 0.

את הפעולה הזו מבצעים על כל הביטים של 2 האוגרים בהתאמה (הביט הראשון עם הביט הראשון, הביט השני עם הביט השני וכו').

פורסם
  • מחבר

אוו תודה זה ממש עזר :)

ארכיון

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

דיונים חדשים