پروژه ساده با اسمبلی؛ برنامه جمع دو عدد

سلام! قراره با همدیگه یه پروژه خیلی ساده با اسمبلی بسازیم که یه ماشین‌حساب کوچولو باشه.
این برنامه، دو تا عدد از کاربر می‌گیره و جمعشون رو نمایش می‌ده.

همراه من باشید… ✨

پیش‌نیازها

یه ویرایشگر متن ساده: nano یا vim و…
اسمبلر: مثل NASM

آماده‌سازی محیط

اگه NASM رو نداری، از اینجا دانلود و نصبش کن. (می‌تونی از سایت رسمی خودش یا مخازن لینوکسی به وسیله پکیج‌منیجرهایی مثل APT یا PACMAN و… دریافتش کنی(متناسب با توزیع OS))

NASM

می‌تونید با nasm -v چک کنید که نصب شده یا نه.

یه پوشه بساز برای فایل‌های پروژه‌مون.

 

نوشتن برنامه

یه فایل جدید باز کنید و اسمش رو بذارید مثلا calc.asm

(calc مخفف calculator)

تو این فایل، کد زیر رو بنویسید:

توضیح کد

بخش داده: متن پیام‌ها و یه بافر کوچیک برای نمایش نتیجه رو توی data section تعریف کردیم.
بخش bss: اینجا حافظه لازم برای ذخیره اعداد رو رزرو کردیم.
بخش متنی (text): دستوراتمون رو اینجا می‌نویسیم.
پیام‌ها رو با ست کردن 4 توی eax به عنوان دستور sys_write چاپ می‌کنیم و ورودی‌ها رو هم با 3 توی eax تحت sys_read می‌گیریم.

هر بار برای اجرا کردن syscall از وقفه (interupt) 0x80 استفاده می‌کنیم.
اعداد رو از کاراکتر به عدد تبدیل می‌کنیم و با هم جمع می‌کنیم و نتیجه رو نمایش می‌دیم.
تامام… 😁

اگه هر سوالی داشتید یا ابهامی توی کد بود، کامنت بگذارید، پاسخ میدم…

اجرا و بررسی نتایج پخت و پزمون

دست به دامن ترمینال شو  و با nasm خروجی بگیر:

NASM work

حالا برنامت رو اجرا کن!

ASM

 

 


توجه داشته باشید که این مطلب و بعضا مطالب دیگه‌ای از وبلاگ، جنبه آموزشی داره؛ لذا گاهی لازمه مسائل اولیه و معمول رو هم توضیحات داد یا بهشون اشاره کرد. پس اگه به عنوان یه حرفه‌ای مطالب رو مرور می‌کنید، شکیبا باشید. 😶


خب حالا شما توی کامنتا بگید چطور باید کاری کرد که بعد از دادن Result، لاین جدید باز کنه و مشکلی که توی ترمینال می‌بینیم، پیش نیاد. 😉

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