ערכתי לאחרונה בתאריך 09.03.05 בשעה 18:45 בברכה, דני15
וקשה לי להאמין שאפשר לעשות משהו. אבל אני אנסה
בטח כבר שמעת שבאסמבלר אין משתנים כפי שלמדת בעבר כיוון שאסמבלי היא שפה פרימטיבית והקרובה ביותר לשפת מכונה. בעזרת אסמבלי אפשר לגשת ישירות לזיכרון. בזכרון יש לנו אוגרים בני 16 סיביות. 4 אוגרים עיקריים לשימוש כללי AX BX CX DX.
16 סיביות = 16 ספרות בינריות. בינרי = בסיס 2, כל סיבית 0 או 1, וככה זה מיוצג במחשב. אפשר באסמבלי להשתמש בבסיסים אחרים, בדרך כלל הקסדצימלי אבל חשוב להבין איך הנתונים באמת מיוצגים במחשב ולשאלה האחרונה שלך חובה להבין זאת. בוודאי כבר עסקתם בהמרות. כדי להמיר מס' בינרי לעשרוני(זה שאנחנו משתמשים בו) יש לקחת כל ספרה לפי הסדר מימין ולהכפיל אותה ב-2 בחזקת המיקום(מתחיל ב-0) ולחבר את התוצאות, 2 כי זה בסיס בינרי 2.

בכדי להמיר מבסיס עשרוני לבסיס כלשהו נחלק את המספר בבסיס, נקח את השאריות, עד שנקבל 0 והמספר יקרא הפוך. כל אוגר שלם בן 16 סיביות מחולק לחצאי אוגרים בני 8 סיביות . בית עליון ובית תחתון. AX מחולק ל-AH
(A high) ו-AL
(A low)
BX מחולק ל-bh ול-bl
cx ל-ch ו-cl
dx ל-dh ו-dlבכל פקודה באסמבלי חייבת להיות התאמה בגודל האופרנדים. הפקודה MOV מעתיקה לאופרנד הימני את ערך האופרנד השמאלי. לדוגמא mov ax,2h. ייכנס 2 בבסיס הקסדצימלי לאוגר ax בן 16 סיביות. פקודה כגון זו אסורה : mov ah,bx כי זו הכנסה של אוגר שלם BX בן 16 סיביות לתוך חצי אוגר AH שהוא חלק מ-AX. אגב - כל 4 ספרות בינריות זו ספרה הקסדצימלית אחת. זה אומר שאם נכתוב mov ax,23ffh בעצם מילינו את כל האוגר AX כי יש 4 ספרות וכל אחת 4 סיביות בבינרי סה"כ 16. במקרה זה 23 יכנס ל-AH ו-ff ל-AL.
הפקודה ADD מוסיפה מס' כלשהו לאופרנד היעד. לדוגמא אם AX ערכו 2 ונעשה add ax,3 כעת ערכו יהיה 5. הפקודה DEC מחסירה באותו אופן.
אוגר מאוד חשוב שציינת הוא אוגר הדגלים. אוגר הדגלים הוא אוגר בן 16 סיביות כאשר רק 9 מהן בשימוש. כשמו כן הוא, הוא בא לסמן מצבים שונים בפעולות אריטמטיות שונות. דגל אפס zf ערכו 1 כאשר בפעולה האריטמטית האחרונה התוצאה הייתה 0. דגל cf דלוק כאשר בפעולה האריטמטית האחרונה היה נשא(עודף), sf דגל סימן שנדלק כאשר המס' שלילי, ויש עוד דגלים שאינני זוכר וסביר להניח שכתוב לך עליהם במחברת(אם כתבת בשיעור) ורצוי גם שיהיה לך ספר.
פקודה מאוד שימושית היא הפקודה CMP שעובדת על הדגלים וכשמה כן היא compare באה להשוות. קיימות מס' פקודות להסתעפות(קפיצה), שבאות בדרך כלל לאחר הפקודה CMP ומתבצעות בהתאם לדגלים. למשל אם נכתוב cmp ax,bx ולאחר מכן je שזה jump equal כלומר קפוץ אם שווה, אם תוכן AX שווה לתוכן BX זה יקפוץ לתוית המבוקשת.
כדי לעשות לולאה לא צריך ללמוד יותר מזה. תחשוב על זה. אסביר על יתר הדברים מאוחר יותר. מקווה שעזרתי קצת.