ABA


"~~ המדריך המלא לאסמבלר ~~"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #7098 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 7098
BoMBoM 
חבר מתאריך 9.5.02
21836 הודעות
   10:17   05.10.03   
אל הפורום  
  ~~ המדריך המלא לאסמבלר ~~  
 
   ערכתי לאחרונה בתאריך 05.10.03 בשעה 10:20 בברכה, BoMBoM
 
מה זה אסמבלר בכלל ? בטוח שמעתם את השם הזה פעם או פעמיים בחיים אז אני יסביר מה זה ולמה זה.
מה בכתבה ?
• הסבר קצר על אסמבלר
• בסיסי ספירה
• המרה מבינארי לדצימלי
• אוגרים
• פקודות
הסבר.
אסמבלר היא שפת תכנות אשר לוקחת פקודות מחשב פשוטות והופכת אותם לחבילות של ביטים אשר עובדים תחת אוגרים ומריצים את הפקודות שכתבתם בה בתור תוכנית.
אסמבלר היא שפת סף, היא לא שפה עלית כמו סי או ויז'ואל בייסיק.

/* הכוונה היא: C לדוגמה היא שפת תכנות הגיונית. אתם אומרים לה
printf
והיא מדפיסה משהו על המסך. לעומתה אסמבלר זה הדבר הכי קרוב לשפת מכונה (אחרי שפה בינארית כמובן) שאפשר לתכנת בו. אם תסתכלו על קוד של אסמבלי לא תבינו מיד מה הוא עושה, אלא תצטרכו לעקוב, לחשוב, להסתכל ולנסות להבין מה בדיוק דוחפים למחסנית ולמה כשעושים
push %eax
לדוגמה. בלאדי. */

נתחיל את כל הלמידה שלנו ממשהו פשוט:

בסיסי ספירה.
בינארי (בסיס 2) אוקטאלי (בסיס 8) דצימלי (בסיס 10) הקסדצימלי (בסיס 16)
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 --- 8 8
1001 --- 9 9
1010 --- 10 A
1011 --- 11 B
1100 --- 12 C
1101 --- 13 D
1110 --- 14 E
1111 --- 15 F
כמה דברים שכדאי לזכור !!!
1. בסיס בינארי מתאפיין רק בשני מספרים, 0 ואחד.
2. במספרים בינארי יש דבר שנקרא אפס מוביל, למשל אתה צריכים מילה בינארית למילת מחשב בת 7 אותיות אבל מספר הבינארי שלכם הוא 6 אותיות אז אתם יכולים להוסיף אפס משמאל והמחשב מתייחס אליו כמו ל 0 ואילו אם תוסיפו מצד שני, זה יהיה מספר אחר והמחשב לא יריץ את התוכנית הנכונה. דוגמא:
6 אותיות – 1101010 , 7 אותיות – 01101010, שימו לב לאפס האדום שהוספתי.
3. כל בסיס פרט לבינארי ימשיך את סדרת המספרים העולה עד למספר של הבסיס פחות אחד, דוגמא, בסיס 15 יהיה מספר 0-14. בסיס 99 יהיה מספרים 0-98.
4. הטבלה שלמעלה תעזור לכם להמיר מספר, אם אתם צריכים להמיר מספר 15 באוקטלי למספר בדצימלי אז מה עושים ?
לוקחים את 1 שזה 0001 ולוקחים את 5 שזה 0101 ומחברים, קיבלתם 000101010 ועכשיו עושים המרה למספר רגיל (דצימלי). והנה ההסבר איך להפוך מבינארי לעשרוני (דצימלי).
המרה מבינארי לדצימלי:

איך אני הופך מבינארי לעשרוני.
הסבר ודוגמא:
ניקח את המספר 00110011, בחישוב מהיר הוא מסמל את המספר 51.
אוקי איך עשיתי את זה.
הנה היא הטבלה של הבינארי – במחשבים.

1 2 4 8 16 32 64 128
נכניס את הבינארי מתחת.
1 1 0 0 1 1 0 0

עכשיו אם יש מתחת לספרה האמיתית 0 אז המספר שווה אפס אבל אם יש אחד אז הוא שווה כמה שכתוב מעל ה1.
למשל:
יש אחד מעל האחד אז זוכרים 1, יש אחד מעל ה 2, זוכרים עוד 2,
וכו' עד שמגיעים ל: 1+2+16+32 = 51.
ברור ? אני אתן לכם פה תרגילים או שתיים:
11001100 = ?
00000010 = ?
בראשון אמור לצאת 204.
בשני אמור לצאת 2.
אני מקווה שהבנתם אם לא תקראו שוב כי זה לא ממש קשה.
עכשיו איך הופכים מעשרוני לבינארי? זה קצת יותר מסובך אבל עדיין נכנס להגדרה של קל.
ניקל את המספר 143 ואז מה עושים ?

1 2 4 8 16 32 64 128

יאללה בוא נתחיל, משמאל לימין,
האם 143 נכנס בתיבה של 128, אם הוא גדול מ 128 זה אומר שכן, אז נרשום שם אחד.
עכשיו נשאר לנו 15 (143-128).
נמשיך, 15 נכנס ב 64, לא. נכתוב שם אפס, האם 15 נכנס ב 32, גם לא, נשאיר שם אפס.
15 לא נכנס ב – 16, אז נכתוב גם שם 0.
15 נכנס ב 8, כן אז נכתוב שם אחד ונשאר לנו 7 (15-8) .
7 נכנס ב 4, כן נכתוב אחד ונשאר לנו 3 (7-4)
3 נכנס ב שתיים, כן נכתוב שם אחד ונשאר לנו אחד (3-2).
ועכשיו נשאר אחד והוא מתאים בול לאחד בסוף אז גם שם נכתוב 1.
איזה בינארי יצא לנו ?
10001111
מקווה שהבנתם, אם לא, אז תחזרו על זה…
1 2 4 8 16 32 64 128
1 1 1 1 0 0 0 1
אוקי אז עכשיו תתרגלו את זה עד שתעשו את זה בלי דף נייר ובלי מחשבון (שזה הדרך הקלה).
** הנה שיטה שתעשה לכם חיים קלים, אם צריכים להפוך מספר מבסיס X (כל בסיס חוץ מבינארי) לבסיס דצימלי (עשרוני) אז קודם עושים המרה לבינארי לפי הטבלה שלמעלה ואז מבינארי לעשרוני, תאמינו לי הכי קל.
עכשיו… הייתי מעוניין להתחיל לדבר קצת על אוגרים.


אוגרים:
אוגרים הם בעצם תאי זיכרון בתוך המעבד, ישנם 4 אוגרים כלליים שבד"כ מתכנתים באסמבלר משתמשים בהם והם, Ax, Bx, Cx, Dx וישנו עוד אוגר IP אבל לא צריך אותו כרגע, נחזור אליו בעתיד.
כל אוגר הוא אוגר של 16 סיביות, שניתן לחלקו לשני חלקים, כל חלק 8 סיביות.
עכשיו מה הפרוש הפרקטי של כל אוגר :
Ax – accumulator
Bx – base
Cx – count
Dx – data
IP – instruction pointer

/* פירסינג יקירי, שכחת לציין מה תפקידו של כל אוגר…
ככה: AX משמש בד"כ לזכור ערכים. ביצעתם פעולה חשבונית? אחסנתם מספר? זה בד"כ יהיה מאוחסן באוגר הזה.
BX אומר לפי איזה בסיס לבצע חישובים. לא מעניין כרגע.
CX הוא מונה. אם יש לכם לופ ואתם צריכים מונה, תשתמשו באוגר הזה.
DX גם לאחסון ערכים.
IP זה אוגר מאוד מאוד חשוב. לא מכניסים בו ערכים. הוא משמש לציין איפה ההתחלה של התוכנית שלכם, ז"א מאיפה להתחיל לבצע את ההוראות.
את כל האוגרים האלה ועוד הרבה הרבה אחרים תראו בעזרת תוכנת
debug שבאה עם דוס. כדי ללמוד איך להשתמש בתוכנה, פנו ל reference בסוף הטקסט הזה. בלאדי. */

בואו נגיד שזהו אוגר ה Ax שלנו, אני יסביר איך הוא בנוי.


0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15


0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15


האוגר שיותר למעלה, מראה לכם את AX במצב טבעי, כולל את כל 16 הביטים שלו ואילו האוגר שיותר למטה מחולק לשתיים, כל חלק 8 ביט כמו שכתבתי למעלה.
ניתן לך תרשים של כל האוגרים שנשתמש בהם:


0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Ax
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Bx
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Cx
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Dx

אני בטוח ששמתם לב שאמרתי שיש 16 ביטים בכל אוגר וכתוב רק 15, לאלה שלא הבינו למה, כמו שאמרתי למעלה, באסמבלר עושים את כל הסדרה פחות 1 (0 משומש כמו-כן).
אוקי, אני מקווה שעד לפה אתם עוקבים ועכשיו הייתי רוצה לעבור לפקודות.
אוקי עכשיו עוד משהו, כל אוגר שמחולק לשתיים יקרא כך
Ax - | AL | AH
AH מסמל אוגר A–high ואילו AL מסמל אוגר A–low.
ככה כל אחד ואחד מהם, מ AX עד ל DX.
AX שווה 16 סיביות, ואילו AL שווה 8 סיביות, חשוב מאוד לזכור את זה, קצת תרגול:
אני רושם אוגר או חלק מאוגר ואתם רושמים כמה סיביות יש בתוכו.
AX = ?
BL = ?
AL = ?
CH = ?
DL = ?
(תשובות בסדר יורד, 16,8,8,8,8,)
(* רמז, הראשון זה 16.)

פקודות.
אני אתן פקודה, איך כותבים אותה ומה פירוש הפקודה.
לא לשכוח, יש פסיק אחרי כל שם של אוגר ולא לשכוח נקודה פסיק בסוף הפקודה (;).
ברירת המחדל של הקומפלייר היא שונה בכל תוכנה ותוכנה יש כאלה שאצלם ברירת המחדל היא 16, אז כל מספר שתכניס היא תחשיב אותו בבסיס 16 וכדומה, אז בואו נגיד שכרגע ברירת המחדל שלנו היא 10, בסיס דצימלי, עשרוני.
הדוגמא תהיה מסומנת באדום.

Mov – העתקה של ערך
Mov Op1, Op2; - צורה
Mov Ax, 123; (Ax123)

Add – פעולת חיבור בין שני ערכים
Add Op1, Op2; - צורה
Mov Ax, 12;
Mov Bx, 12;
Add Ax, Bx; (Ax  24)

Sub – פעולת חיסור בין שני ערכים
Sub Op1, Op2; - צורה
Mov Ax, 12;
Mov Bx, 12;
Sub Ax, Bx; (Ax  0)

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

האוגר AX קולט ערך 12, האוגר BX קולט ערך 15, האוגר CX קולט ערך 18 ואז עושים חשבון בין כולם, אוגר AX יהיה שווה 45.
אם לא תצליחו אז אני מוסיף בסוף העמוד את התשובה הנכונה:

להתראות ועד לפעם הבאה, שמרו על עצמכם, Pirsing


///////////////////
Mov ax, 12;
Mov bx, 15;
Mov cx, 18;
Add Ax, Bx;
Add Ax, Cx;
///////////////////

מי שרוצה יכול להוריד שתי תוכנות לאסמבלר

FSD
Turboassembly


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  תודה רבהההה דני15  05.10.03 10:44 1
  תודה רבה רבה רבה רבה HwM 05.10.03 14:21 2
  אשפר לשים את זה בפורום מדריכים וטיפים ? BoMBoM  05.10.03 16:13 3
     לא היה לי כח לקרוא אבל יש לי תיקון קטן Vidi 05.10.03 17:20 4
  חביב- תיקונים imbaro 05.10.03 20:45 5
     צודק, אבל בכל מקרה תודה לו :) TheBinary 22.10.03 21:20 10
  אחי שמע....! yakir_r2 09.10.03 22:57 6
     לא נכון אחי BoMBoM  10.10.03 11:12 7
         זה עדיין לא שלך! ל משנה מאיפה לקחת Vidi 10.10.03 13:45 8
  מברוק על ההשקעה... Dudenland 22.10.03 13:55 9
     תודה רבה ELECTROD  23.10.03 21:10 11
  BomBom אתה אמור לדעת Fsd !!!! Ganja man 25.10.03 16:36 12
  בעע המדריך הזה לא שלך. אני מכיר את מי שזה שלו dfxhgasdfhg 26.10.03 00:06 13
     רייזור לא גנב Vidi 28.10.03 14:31 15
  תודה Godx 26.10.03 22:08 14

       
דני15 
חבר מתאריך 3.8.02
47437 הודעות, 8 פידבק
   10:44   05.10.03   
אל הפורום  
  1. תודה רבהההה  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
HwM

   14:21   05.10.03   
אל הפורום  
  2. תודה רבה רבה רבה רבה  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BoMBoM 
חבר מתאריך 9.5.02
21836 הודעות
   16:13   05.10.03   
אל הפורום  
  3. אשפר לשים את זה בפורום מדריכים וטיפים ?  
בתגובה להודעה מספר 0
 
   אם אתם יכולים תשימו (מנהלים כמובן)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Vidi
חבר מתאריך 1.10.17
591 הודעות
   17:20   05.10.03   
אל הפורום  
  4. לא היה לי כח לקרוא אבל יש לי תיקון קטן  
בתגובה להודעה מספר 3
 
לשפה שאתה מדבר עליה קוראים אסמבלי,
אסמבלר זה הקומפילר...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
imbaro

   20:45   05.10.03   
אל הפורום  
  5. חביב- תיקונים  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 05.10.03 בשעה 20:48 בברכה, imbaro
 
בסיס
bx,si,di
הם אוגרים שבאמצאותם ניתן לגשת לזיכרון בצורה זו
mov bx.9h
mov ,5
פעולות אלומכניסות לתא הזיכרון 9 את הערך 5

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TheBinary

   21:20   22.10.03   
אל הפורום  
  10. צודק, אבל בכל מקרה תודה לו :)  
בתגובה להודעה מספר 5
 
   יש Interrupts (פסיקות) פונקציות ועד מלא (חוקים תאי זיכרון זיכרון פיסי ולוגי וכו')
ד"א אף פעם לא עבדה לי פסיקה מס' 19H (עושה Reset) =/


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
yakir_r2

   22:57   09.10.03   
אל הפורום  
  6. אחי שמע....!  
בתגובה להודעה מספר 0
 
   לפחות תן קרדיט! העתקת את המדריך הזה מילה במילה מהמדריך של Pirsing!
לא יפה....

(אם אתה זה Pirsing....מצטער)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BoMBoM 
חבר מתאריך 9.5.02
21836 הודעות
   11:12   10.10.03   
אל הפורום  
  7. לא נכון אחי  
בתגובה להודעה מספר 6
 
   לקחתי את זה מהספר של RAZOR


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Vidi
חבר מתאריך 1.10.17
591 הודעות
   13:45   10.10.03   
אל הפורום  
  8. זה עדיין לא שלך! ל משנה מאיפה לקחת  
בתגובה להודעה מספר 7
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dudenland

   13:55   22.10.03   
אל הפורום  
  9. מברוק על ההשקעה...  
בתגובה להודעה מספר 0
 
   אבל להבא, אל תפרסם מדריכים בנושאים שאתה לא ממש מתמחה בהם, ואני יכול להסיק זאת לפי כמות הטעויות שיש לך פה (במדריך הזה)...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ELECTROD 
חבר מתאריך 14.9.03
233 הודעות
   21:10   23.10.03   
אל הפורום  
  11. תודה רבה  
בתגובה להודעה מספר 9
 
   http://rotter.net/User_files/nor/3f85f8de3c806b0a.jpg


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ganja man

   16:36   25.10.03   
אל הפורום  
  12. BomBom אתה אמור לדעת Fsd !!!!  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 25.10.03 בשעה 16:37 בברכה, Ganja man
 
כמה טעויות
אסון


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dfxhgasdfhg

   00:06   26.10.03   
אל הפורום  
  13. בעע המדריך הזה לא שלך. אני מכיר את מי שזה שלו  
בתגובה להודעה מספר 0
 
   פירסינג (ירון) ובלאדי (דניאל? בת 20+) עוד מימי IHC וגיהנום. לא רייזור ולא כלום הרייזור הזה גנב!!! בקיצור תן קרדיט


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Vidi
חבר מתאריך 1.10.17
591 הודעות
   14:31   28.10.03   
אל הפורום  
  15. רייזור לא גנב  
בתגובה להודעה מספר 13
 
אם אני לא טועה הם אישרו לו להשתמש בכתבות...
אז הוא לא גנב הוא פשוט "אוגר" הוא לקח את כל הכתבות ואסף
אותם למקום אחד הוא אף פעם לא אמר שהם שלו :|
בכל מקרה dfxhgasdfhg איפה פירסינג ובלאדי?
לא ראיתי את בלאדי מאז הריב של שמוליק ושלה...
ואת פירסינג פשוט לא ראיתי הרבה מאוד זמן :\


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Godx

   22:08   26.10.03   
אל הפורום  
  14. תודה  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net