ثابت ها در زبان اسمبلی – آموزش Assembly

assembly constants 4604 تصویر

ثابت ها در زبان اسمبلی

NASM دستورالعمل های مختلفی را به منظور تعریف ثابت ها در زبان اسمبلی فراهم می کند. در این بخش به بررسی چند مورد از این دستورالعمل ها که در زیر مشاهده می کنید، می پردازیم.

  • EQU
  • %assign
  • %define

دستور EQU

دستورالعمل EQU به منظور تعریف ثابت در زبان اسمبلی مورد استفاده قرار می گیرد. در زیر سینتکس مربوط به دستور EQU را مشاهده می کنید:

CONSTANT_NAME EQU expression

برای مثال:

TOTAL_STUDENTS equ 50

نحوه استفاده از ثابت بالا در برنامه:

mov  ecx,  TOTAL_STUDENTS
cmp  eax,  TOTAL_STUDENTS

همچنین می توانید ثوابت را به صورت زیر نیز تعریف کنید:

LENGTH equ 20
WIDTH  equ 10
AREA   equ length * width

در کد فوق مقدار ثابت AREA برابر با ۲۰۰ خواهد بود.

مثال

مثال زیر نحوه استفاده از دستور EQU را نشان می دهد:

SYS_EXIT  equ 1
SYS_WRITE equ 4
STDIN     equ 0
STDOUT    equ 1
section	 .text
   global _start    ;must be declared for using gcc
_start:             ;tell linker entry point
   mov eax, SYS_WRITE         
   mov ebx, STDOUT         
   mov ecx, msg1         
   mov edx, len1 
   int 0x80                
	
   mov eax, SYS_WRITE         
   mov ebx, STDOUT         
   mov ecx, msg2         
   mov edx, len2 
   int 0x80 
	
   mov eax, SYS_WRITE         
   mov ebx, STDOUT         
   mov ecx, msg3         
   mov edx, len3 
   int 0x80
   
   mov eax,SYS_EXIT    ;system call number (sys_exit)
   int 0x80            ;call kernel

section	 .data
msg1 db	'Hello, programmers!',0xA,0xD 	
len1 equ $ - msg1			

msg2 db 'Welcome to the world of,', 0xA,0xD 
len2 equ $ - msg2 

msg3 db 'Linux assembly programming! '
len3 equ $- msg3

امتحان کنید

زمانی که کد بالا توسط کامپایلر اسمبلی و اجرا شود، نتیجه زیر را تولید خواهد کرد:

Hello, programmers!
Welcome to the world of,
Linux assembly programming!

دستور %assign

دستور %assign برای تعریف ثوابت عددی مورد استفاده قرار می گیرد (مانند دستور EQU).  این دستور امکان تعریف دوباره ثابت را فراهم می کند. برای نمونه اگر TOTAL را به صورت زیر تعریف کنیم:

%assign TOTAL 10

بعدا می توانید آن را به صورت زیر دوباره تعریف کنید:

%assign  TOTAL  20

 

توجه! دستور %assign به حروف بزرگ و کوچک حساس است.

دستور %define

این دستور امکان تعریف ثابت های عددی و رشته ای را در زبان اسمبلی فراهم می کند و شبیه به دستور #define در زبان برنامه نویسی C می باشد. برای نمونه، به منظور تعریف ثابت PTR به صورت زیر عمل کنید:

%define PTR [EBP+4]

 

توجه! دستور %define به حروف بزرگ و کوچک حساس است و امکان تعریف دوباره را نیز به شما می دهد.

نوشته ثابت ها در زبان اسمبلی – آموزش Assembly اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.

درباره نویسنده: administrator

ممکن است دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *