سلام به همه عزیزان
دوستان بنده تصمیم داشتم تا برنامه نویسی به زبان اسمبلی رو در محیط nasm داخل سیستم عامل لینوکس توزیع اوبونتو شروع کنم . ولی هیچ اطلاعاتی درباره نحوه کار با نرم افزار nsam ندارم . ممنون میشم کمکم کنید
سلام به همه عزیزان
دوستان بنده تصمیم داشتم تا برنامه نویسی به زبان اسمبلی رو در محیط nasm داخل سیستم عامل لینوکس توزیع اوبونتو شروع کنم . ولی هیچ اطلاعاتی درباره نحوه کار با نرم افزار nsam ندارم . ممنون میشم کمکم کنید
nasm محیط نیست یک اسمبلر متن باز هست که برای پلتفرم های مختلف نوشته شده، فکر میکنم اصلا به سایت سازندش نرفتید
اگرنه جواب سوالاتتون رو با راهنما کاملش میگرفتید، به عنوان مثال:
http://www.nasm.us/doc/nasmdoc1.html
http://www.nasm.us/doc/nasmdoc2.html
http://www.nasm.us/doc/nasmdoc8.html
اینم لیست کاملش
http://www.nasm.us/xdoc/2.11.06/nasmdoc.pdf
یا
http://www.nasm.us/xdoc/2.11.06/html/nasmdoc0.html
دوست عزیز میتونستید با جستجو در گوگل سریع تر به جوابتون برسید
http://www.csee.umbc.edu/portal/help/nasm/sample.shtml
https://www.hackthissite.org/articles/read/1110/
http://cs.lmu.edu/~ray/notes/nasmexamples/
اگر مشکلی بود سوال کنید
موفق باشی
ممنون بابت جوابتون عزیز . بنده در یک فایل متنی کد اسمبلی رو زدم و با ترمینال به مسیر فایل رفتم , بعد باید با چه دستوری object درست کنم و بعد هم اجراش کنم ؟ چون بنا به نوشته متن کتاب زمانی که دستور nasm -f elf exam.asm رو میزنم ترمینال متن error : symbol 'adres' undefined میده . کجای کارم اشتباه هستش ؟!
ممنون . اون مشکل حل شد ! کد برنامه مشکل داشت ! اما حالا به ی ایراد تازه برخورد کردم ! دستورات زیر رو وارد کردم :
nasm -f elf -l hello.lst hello.asm
gcc -o hello hello.o همین قسمت رو که وارد می کنم ارور زیر رو میده :
/usr/bin/ld: i386 architecture of input file `a.o' is incompatible with i386:x86-64 output
collect2: error: ld returned 1 exit status
فک کنم بخاطر تفاوت بین نسخه نصب شده nasm و معماری cpu باشه ! درسته ؟!
کدوم نسخه رو باید نصب کنم ؟
چطوری این ایراد رو درست کنم ؟
نسخه اوبنتو شما 64 بیتی هست لینکر یا کامپایلر به طور پیش فرض اون رو 64 تشخیص میده و به خطا میخوره باید بهش گفت ساختار elf 32 بیتی استفاده کنه
از دستور زیر استفاده کن، بجای yourEntry، نقطه شروع برنامه خودت رو بهش معرفی کن
ld -m elf_i386 -s -o hello hello.o -e yourEntry
برای استفاده از gcc میتونی از دستور زیر استفاده کنی اما قبلش یکبار این دستور رو بزن sudo apt-get install gcc-multilib تا فایل های کتابخونش نصب شه( EntryPoint پیش فرضش main هست)
gcc -m32 -s -o hello hello.o
ضمنا برای تشکر نیازی به گفتنش نیست یه button برای این کار طراحی شده،موفق باشی
آخرین ویرایش به وسیله xman_1365_x : جمعه 23 آبان 1393 در 07:12 صبح
عزیز مشکل بر طرف شد . بر طبق کتابی که معرفی کرده بودید عمل کردم . و دستورات زیر را وارد کردم .
nasm -f elf64 a.asm
gcc a.o -o a
./a
راستی ممنون که درباره دکمه تشکر بهم گفتید . از این به بعد ازش استفاده می کنم .