אסמבלי x86/יסודות השימוש בשפה/תחילת העבודה: הבדלים בין גרסאות בדף
שורה 21: | שורה 21: | ||
==כתיבת תכנית ראשונה== |
==כתיבת תכנית ראשונה== |
||
יש מספר שיטות רבות, כשבספר נתעמק |
יש מספר שיטות רבות, כשבספר נתעמק בשלוש מן השיטות לכתיבת תבנית של תכנית. את המשמעות תבינו לאחר שתעיינו בספר זה. |
||
{{עמודות}} |
{{עמודות}} |
||
{{3 עמודות}} |
{{3 עמודות}} |
גרסה מ־13:41, 13 במאי 2018
אסמבלי x86 |
---|
|
ע"מ לכתוב תוכנית בשפת אסמבלר כל מה שאנו צריכים זה עורך טקסט פשוט (כגון Notepad או Editor של דוס), מהדר ומעבד כמובן. את קובץ המקור של התוכנית שומרים בסיומת asm. ההמרה של הקובץ לקובץ בר־הרצה נעשה בשני שלבים, ע"י התוכנות: מהדר ולינקר (כמתואר בפרק א').
תוכנות נפוצות
ניתן למצוא השוואה בין האסמבלרים השונים בויקיפדיה האנגלית. להלן מספר תוכנות נפוצות, מחולקות לפי מערכות הפעלה.
כל הפלטרפורמות
NASM - The Netwide Assembler
- הורדה: sf.net
GAS - GNU Assembler
DOS וחלונות בלבד
יש מספר תוכנות לעריכה, הידור, קישור וניפוי שגיאות בתוכניות אסמבלר:
מהמפורסמות ביניהן היא תוכנת Turbo Debugger של חברת Borland הפועלת בסביבת DOS. תוכנה זו מאפשרת הרצה מלאה של תוכנת אסמבלר כולל הידור וקישור ובדיקת שגיאות שורה אחרי שורה תוך הצגה של מצב האוגרים, הזכרון והמחסנית.
תוכנה טובה נוספת היא: Microprocessor Emulator 8086[1] שמבצעת את אותה העבודה רק בממשק גרפי ועם עוד כמה כלים יעילים.
כמו כן, ניתן לבצע Debug מלא על תוכנית הרצה (EXE) ע"י הקלדת Debug ושם הקובץ בשורת הפקודה. להציג את רשימת הפקודות בתוכנה זו יש להקליד ?.
כתיבת תכנית ראשונה
יש מספר שיטות רבות, כשבספר נתעמק בשלוש מן השיטות לכתיבת תבנית של תכנית. את המשמעות תבינו לאחר שתעיינו בספר זה.
שיטה ראשונהTITLE 8086 Code Template (for EXE file) #MAKE_EXE# ; הצהרה על קבועים ומקרו DSEG SEGMENT 'DATA' ; הצהרה על משתנים DSEG ENDS SSEG SEGMENT STACK 'STACK' DW 100h DUP (?) ; מחסנית SSEG ENDS CSEG SEGMENT 'CODE' START PROC FAR ASSUME CS:CSEG, DS:DSEG, ES:ESEG, SS:SSEG Assume nothing MOV AX, DSEG MOV DS, AX MOV ES, AX ; גוף הקוד RET START ENDP CSEG ENDS END START |
שיטה שנייהTITLE 8086 Code Template (for EXE file) #MAKE_EXE# ; הצהרה על קבועים ומקרו DSEG SEGMENT 'DATA' ; הצהרה על משתנים DSEG ENDS SSEG SEGMENT STACK 'STACK' DW 100h DUP(?) ; מחסנית SSEG ENDS CSEG SEGMENT 'CODE' START PROC FAR PUSH DS MOV AX, 0 PUSH AX MOV AX, DSEG MOV DS, AX MOV ES, AX ; גוף הקוד RET START ENDP CSEG ENDS END START |
שיטה שלישית.model small .stack 100H .data ; הצהרה על משתנים וקבועים .code mov ax,@data mov ds,ax ; גוף הקוד .exit end |