אסמבלי x86/יסודות השימוש בשפה/תחילת העבודה: הבדלים בין גרסאות בדף

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
תוכן שנמחק תוכן שנוסף
שורה 21: שורה 21:


==כתיבת תכנית ראשונה==
==כתיבת תכנית ראשונה==
יש 3 שיטות עיקריות לכתיבת תבנית של תכנית. את המשמעות תבינו לאחר שתעיינו בספר זה.
יש מספר שיטות רבות, כשבספר נתעמק בשלושה מן השיטות לכתיבת תבנית של תכנית. את המשמעות תבינו לאחר שתעיינו בספר זה.
{{עמודות}}
{{עמודות}}
{{3 עמודות}}
{{3 עמודות}}

גרסה מ־06:30, 3 בספטמבר 2017

אסמבלי x86











ע"מ לכתוב תוכנית בשפת אסמבלר כל מה שאנו צריכים זה עורך טקסט פשוט (כגון Notepad או Editor של דוס), מהדר ומעבד כמובן. את קובץ המקור של התוכנית שומרים בסיומת asm. ההמרה של הקובץ לקובץ בר־הרצה נעשה בשני שלבים, ע"י התוכנות: מהדר ולינקר (כמתואר בפרק א').

תוכנות נפוצות

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

כל הפלטרפורמות

NASM - The Netwide Assembler

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

הערות שוליים

  1. ^ Microprocessor Emulator / 8086 Assembly להורדה.