close
دانلود فیلم
جمع دو عدد در اسمبلی

اسمبل و اجرای برنامه

برای ايجاد برنامه به سه ابزار نياز است: يک اديتور متن، يک اسمبلر برای تبديل برنامه به فايل مقصد و يک لينکر برای توليد فايل اجرائی.

برنامه اسمبلی را در يک اديتور متن نوشته و با پسوند .asm ذخيره کنيد. فراموش نکنيد که حتما از يک اديتور اسکی استفاده کنيد. توسط اسمبلر (masm.exe يا tasm.exe) از فايل مبدا .asm فايل مقصد .obj را ايجاد کنيد. اسمبلر برنامه زبان اسمبلی را به کد ماشين تبديل می کند. اگر خطائی در برنامه وجود داشته باشد اسمبلر خطا را گزارش می دهد. لينکر (link.exe يا tlink.exe) از يک يا ترکيب چند فايل .obj يک برنامه قابل اجرا از نوع .exe يا .com را می سازد.


مثال. برنامه first.asm را در اديتور متن ذخيره کنيد. سپس در خط فرمان سيستم عامل، در محلی که اسبلر نصب شده است، دستورات زير را به ترتيب وارد کنيد تا فايل اجرائی first.exe ايجاد شود.

C:masm>masm first
C:masm>link first
C:masm>first


مثال: در برنامه زير دو عدد با هم جمع می شود.

        .MODEL small
        .STACK [size]
        .DATA
number1 DW 0800h   ;=128
number2 DW ffebh    ;=-493
sum         DW ?            ;store result

        .CODE
begin:
   mov AX,@Data
   mov DS,AX
   mov AX,number1 ;get first number in AX
   add AX,number2  ;add AX with second number
   mov sum,AX      ;store result in Sum
   mov AX,4c00h
   int 21h
END begin

مثال: تکه برنامه زير اعداد 1 تا 10 را در آرايه ای از نوع word ذخيره می نمايد.

        .MODEL small
        .STACK [size]
        .DATA
Array DW 10 dup(?)
        .CODE
begin:
   mov AX,@Data
   mov DS,AX
   mov CX,1
   mov SI, offset Array
Forl:
   mov [SI], CX
   inc SI
   inc SI
   cmp CX,10
   je endf
   inc CX
   jmp forl
Endf:
   mov AX,4c00h
   int 21h
END begin

برای دسترسی به عناصر آرايه معمولا از عملوند غيرمستقيم ثباتی استفاده می شود. برای تخصیص آدرس آفست يک آرايه می توان از دستور LEA هم استفاده کرد. دقت کنيد چون عناصر آرايه دو بايتی هستند هربار دو واحد به SI اضافه می شود. در حالتی که عناصر آرايه از نوع بايت تعريف می شوند به اشاره گر آرايه يک واحد اضافه می شود.

مثال: کاراکتر * را نمايش می دهد.

        .MODEL small
        .STACK [size]
        .CODE
main PROC
   mov AH,2h
   mov DL,2ah
   int 21h
   mov AX,4c00h
   int 21h
main ENDP
END main

به کانال تلگرام سایت ما بپیوندید