אסמבלר

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

אסמבלר (Assembler) היא תוכנית מחשב המתרגמת (או: מהדרת) תוכנית שנכתבה בשפת סף (Assembly) לשפת מכונה הניתנת לביצוע על ידי המחשב.

האסמבלר מותאם בדרך כלל לשפת מכונה ספציפית, אם כי אסמבלרים מסוימים יכולים לטפל בתוכניות הכתובות בשפות סף של מעבדים שונים.

תוכן עניינים

[עריכה] מהות האסמבלר

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

עד לתחילת שנות ה-70 היה התכנות באסמבלר נפוץ למדי ואפילו דומיננטי, עקב משאבי המחשב המוגבלים שעמדו לרשות המתכנתים, והיכולת ליצור קוד חסכוני ביותר (יחסית לזה שנוצר בשפות עיליות) באמצעות האסמבלר. בעקבות התפתחותם של מהדרי שפות עיליות יעילים יותר, אשר יכולים ליצור קוד קצר ומהיר יותר משל מתכנת אסמבלי ממוצע, עברו מרבית המתכנתים לפיתוח בשפות עיליות שהוא קל ופשוט יותר, והאסמבלר נותר בעיקר ככלי עזר המשמש מתכנתי מערכות הפעלה וכן בפיתוח חלקי תוכנה הדורשים ביצועים מהירים במיוחד.

לקיצור תהליך התכנות של פעולות נפוצות נוספו לאסמבלר הוראות מכלול (Macro statements) לביצוע פעולות אלה, שכל אחת מהן התפתחה לסדרה של פקודות אסמבלר.

לכל מעבד שפת מכונה משלו, ובהתאם לכך אסמבלר משלו.

דוגמה לפקודה באסמבלר: L 8,DATA. פקודה זו (באסמבלר של מחשבי IBM Mainframe) טוענת לאוגר 8 את המלה הנמצאת בזיכרון בכתובת DATA.

[עריכה] אסמבלר למעבדי אינטל

[עריכה] אסמבלרים נפוצים למעבדי אינטל

  • TASM‏ (Turbo Assembler) - אסמבלר ישן, היסטורי מבית בורלנד. פיתוחו הופסק יחד עם כל קו מוצרי ה-Turbo.

[עריכה] פעולות בסיסיות

פעולות בסיסיות באסמבלר x86
הוראת אסמבלי משמעותה
 MOV op1, op2
העתקת op2 אל op1
 ADD op1, op2
חיבור op1 עם op2 והשמה ב-op1
 SUB op1, op2
חיסור op1 ב-op2 והשמה ב-op1
 INC op
הגדלת op ב-1
 DEC op
הקטנת op ב-1
 CMP op1, op2
השוואה בין op1 ל-op2 (פעולת SUB מדומה תוך עדכון אוגר הדגלים אך ללא שינוי האופרנדים)
 OR op1, op2
פעולת OR לוגית בין op1 ל-op2 והשמה ב-op1
 AND op1, op2
פעולת AND לוגית בין op1 ל-op2 והשמה ב-op1

[עריכה] תוכנית Hello world

להלן קוד לאסמבלר MASM היוצר תוכנית DOS המציגה הודעת Hello world:

.MODEL Small
.STACK 100h
.DATA
   db msg 'Hello, world!$'
.CODE
start:       ; code starts here
   mov ah, 09h
   mov dx, offset msg
   int 21h   ; function 09: output $-ended string from DS:DX to console
   mov ax, 4C00h
   int 21h   ; function 4C: terminate program (termination code in AL)
end start

[עריכה] ראו גם

[עריכה] קישורים חיצוניים

כלים אישיים
גרסאות שפה
מרחבי שם
פעולות
ניווט
קהילה
תיבת כלים
דף זה בשפות אחרות
הדפסה/יצוא