همراهان عزیز وب سایت آموزشی پی وی لرن وقتتون بخیر و شادی، با آموزش زبان برنامه نویسی اسمبلی (Assembly) در خدمتتون خواهیم بود. سگمنت های حافظه در زبان اسمبلی (Assembly) را در این بخش بررسی خواهیم نمود.
ما قبلاً در مورد سه بخش یک برنامه اسمبلی بحث کرده ایم. در این بخش با سگمنت های مختلف حافظه آشنا می شویم.
جالب این جاست که اگر کلمه کلیدی section را با segment جایگزین کنید ، همان نتیجه را خواهید گرفت. کد زیر را امتحان کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | segment .text ;code segment global _start ;must be declared for linker _start: ;tell linker entry point mov edx,len ;message length mov ecx,msg ;message to write mov ebx,1 ;file descriptor (stdout) mov eax,4 ;system call number (sys_write) int 0x80 ;call kernel mov eax,1 ;system call number (sys_exit) int 0x80 ;call kernel segment .data ;data segment msg db 'Hello, world!',0xa ;our dear string len equ $ - msg ;length of our dear string |
1 | Hello, world! |
با توجه به بحث بالا ، ما می توانیم بخش های مختلف حافظه را به صورت زیر مشخص کنیم.
سگمنت bss. همچنین یک سگمنت حافظه استاتیک است که شامل بافر برای داده ها در برنامه است که بعدا اعلام می شود.
سگمنت های حافظه در زبان اسمبلی (Assembly) را مورد بررسی قرار دادیم. در بخش بعدی به بررسی ثبات ها در زبان اسمبلی می پردازیم. با آموزش زبان اسمبلی (Assembly) همراه باشید.