PDA

View Full Version : مبتدی: کد hello world! با emu8086



BeginnerProgrammer
پنج شنبه 11 آذر 1389, 08:41 صبح
سلام
من تازه اسمبلی رو شروع کردم دارم از روی کتابی که دوستان در تاپیکهای قبلی معرفی کردن میخونم .این کتاب با masm کار کرده اگه امکان داره کسی کد hello world! با emu8086 رو بذاره.
best Regard

BeginnerProgrammer
پنج شنبه 11 آذر 1389, 10:58 صبح
خودم جواب خودمو میدم:عصبانی:




; The easiest way to print out "Hello, World!"

name "hi"

org 100h


jmp start ; jump over data declaration


msg: db "Hello, World!", 0Dh,0Ah, 24h

start: mov dx, msg ; load offset of msg into dx.
mov ah, 09h ; print function is 9.
int 21h ; do it!

mov ah, 0
int 16h ; wait for any key....

ret ; return to operating system.


این کد خود emu هست کسی میتونه این کدو توضیح بده؟

xman_1365_x
پنج شنبه 11 آذر 1389, 13:14 عصر
خط به خط توضیح دادم حیف پرید چون دیتا بیس فروم مشکل داره(سایت جدید شده اعصاب منو هم...)
مجددا میگم نمونه این سورس ها در فروم هست جستجو نکردین
شما هم با همین emu8086 و debug کار کنید بعدا که یاد گرفتی برید سراغ masm که بیشتر ماکرو نویسی و ... هست
اول کتابشو بخونید بعد مشکلتون رو بگین اینطوری که چیزی یاد نمیگیری
در مورد توضیح سورس
خط اول توضیح
خط دوم نام برنامه
خط سوم شروع برنامه از آدرس ۱۰۰ و نوشتن برنامه اجرایی کام
خط چهارم پرش به لیبل استارت
خط پنجم آرایه از رشته که هر کاراکتر یک بایت و اسمبلر آدرس شروعش رو میزاره بجای msg البته دونقطه جلوش رو بردارید انتهای رشته هم معمولا دالر هست
خط ششم هفتم و هشتم شروع برنامه و با استفاده از وقفه چاپ هون رشته ای که گفتین
خط نهم و دهم منتظر فشار دادن کلیدی از کاربر میمونه(وقفه ها)
خط یازده خاطمه برنامه بازشگت به سیستم عامل

xman_1365_x
پنج شنبه 11 آذر 1389, 13:14 عصر
خط به خط توضیح دادم حیف پرید چون دیتا بیس فروم مشکل داره(سایت جدید شده اعصاب منو هم...)
مجددا میگم نمونه این سورس ها در فروم هست جستجو نکردین
شما هم با همین emu8086 و debug کار کنید بعدا که یاد گرفتی برید سراغ masm که بیشتر ماکرو نویسی و ... هست
اول کتابشو بخونید بعد مشکلتون رو بگین اینطوری که چیزی یاد نمیگیری
در مورد توضیح سورس
خط اول توضیح
خط دوم نام برنامه
خط سوم شروع برنامه از آدرس ۱۰۰ و نوشتن برنامه اجرایی کام
خط چهارم پرش به لیبل استارت
خط پنجم آرایه از رشته که هر کاراکتر یک بایت و اسمبلر آدرس شروعش رو میزاره بجای msg البته دونقطه جلوش رو بردارید انتهای رشته هم معمولا دالر هست
خط ششم هفتم و هشتم شروع برنامه و با استفاده از وقفه چاپ هون رشته ای که گفتین
خط نهم و دهم منتظر فشار دادن کلیدی از کاربر میمونه(وقفه ها)
خط یازده خاطمه برنامه بازشگت به سیستم عامل

BeginnerProgrammer
پنج شنبه 11 آذر 1389, 13:57 عصر
ممنون از توضیحاتتون ، ولی خط پنجمو نفهمیدم
این سه تا عدد بعد از hello world! چیه؟

xman_1365_x
جمعه 12 آذر 1389, 00:56 صبح
0Dh,0Ah
كد اسكي اينتر هست
بعد چاپ متن كرسر ميره ايتداي سطر بعد!
24h هم كد اسكي $ هست كه نشان ميده انتهاي رشته هست!
شما برين كتاب مهندس داريوش نيكمهر رو دانلود كنيد توي پست هاي قبل گذاشتم لينكشو
تا آشنا شين با اين مقدمات