اسمبلی!
مدیران انجمن: Mahdi Mahdavi, MASTER, شوراي نظارت

-
- پست: 70
- تاریخ عضویت: جمعه ۳۰ اردیبهشت ۱۳۹۰, ۷:۲۲ ب.ظ
- سپاسهای ارسالی: 17 بار
- سپاسهای دریافتی: 28 بار
اسمبلی!
سلام دوستان!خوبین؟من یه سوال دارم!می خوام یه برنامه به زبان اسمبلی بنویسم که سه تا کاراکتر
ch1,ch2
و
ch3
از ورودی بگیره و اونا رو به ترتیب صعودی چاپ کنه.یعنی اگر
ch2
بزرگتر از
ch1
بود مقدار این دوتا رو با هم عوض کنه.میشه راهنماییم کنین؟

-
- پست: 145
- تاریخ عضویت: سهشنبه ۱۳ مرداد ۱۳۸۸, ۲:۰۲ ب.ظ
- سپاسهای ارسالی: 297 بار
- سپاسهای دریافتی: 250 بار

-
- پست: 235
- تاریخ عضویت: یکشنبه ۲۵ بهمن ۱۳۸۸, ۵:۰۶ ق.ظ
- سپاسهای ارسالی: 977 بار
- سپاسهای دریافتی: 988 بار
Re: اسمبلی!
منظورتون از اسمبلی، x86 هست یا ARM؟ در ضمن باید بگی تحت چه کمپایلری میخوای بنویسی، هر کمپایلری استانداردها و library مخصوص خودش داره.
فایل زیر یه نمونه هست، میتونی با برنامه [External Link Removed for Guests] کمپایل کنی. (برای architecture x86)
[External Link Removed for Guests]
فایل اجرایی
[External Link Removed for Guests]
فقط برای عدد هست نه حروف! خودت تغییرش بده.
اگه میخوای برنامه نویسی سطح پایین (برای نوشتن bootloader یا ساخت kernel) رو یاد بگیری من توصیه میکنم از برنامه شبیه ساز EMU8086 شروع کنی، منم از همین برنامه اسمبلی رو شروع کردم.
موفق باشی

فایل زیر یه نمونه هست، میتونی با برنامه [External Link Removed for Guests] کمپایل کنی. (برای architecture x86)
[External Link Removed for Guests]
فایل اجرایی
[External Link Removed for Guests]
فقط برای عدد هست نه حروف! خودت تغییرش بده.
اگه میخوای برنامه نویسی سطح پایین (برای نوشتن bootloader یا ساخت kernel) رو یاد بگیری من توصیه میکنم از برنامه شبیه ساز EMU8086 شروع کنی، منم از همین برنامه اسمبلی رو شروع کردم.
موفق باشی

خوشبختی ما در سه جمله است ... تجربه از دیروز , استفاده از امروز , امید به فردا ... ولی ما با سه جمله دیگر زندگی مان را تباه میکنیم حسرت دیروز , اتلاف امروز , ترس از فردا ... دکتر علی شریعتی

-
- پست: 70
- تاریخ عضویت: جمعه ۳۰ اردیبهشت ۱۳۹۰, ۷:۲۲ ب.ظ
- سپاسهای ارسالی: 17 بار
- سپاسهای دریافتی: 28 بار
Re: اسمبلی!
مرسی HS368عزیز!جواب سوالاتونو نمی دونم!فقط می دونم که ما با نرم افزار emu8086کار می کنیم .بابت زحمتی که کشیدین و این برنامه رو گذاشتین واقعا متشکرم.دو تا سوال!این eax که کاراکترها رو میریزین توش چیه؟ثباته؟...و دیگه اینکه واسه اینکه برای حروف هم جواب بده باید چیکار کنم؟؟؟

-
- پست: 235
- تاریخ عضویت: یکشنبه ۲۵ بهمن ۱۳۸۸, ۵:۰۶ ق.ظ
- سپاسهای ارسالی: 977 بار
- سپاسهای دریافتی: 988 بار
Re: اسمبلی!
[External Link Removed for Guests]
فایل بالا رو تو برنامه EMU8086 اجرا کن، برای حروف نوشتم.
eax ریجیستر 32 بیتی هست که تو حالت protected mode میشه ازش استفاده کرد. ax هم 16 بیت اول eax هست و ah و al قسمت 8 بیت بالایی و 8 بیت پایینی ax هست. در حالت real mode که برنامه ی EMU8086 به صورت پیش فرض هست به eax دسترسی ندارید باید به حالت protected mode برید و ... (فکر کنم هنوز اینجاهارو بهتون نگفته باشند)
فایل بالا رو تو برنامه EMU8086 اجرا کن، برای حروف نوشتم.
eax ریجیستر 32 بیتی هست که تو حالت protected mode میشه ازش استفاده کرد. ax هم 16 بیت اول eax هست و ah و al قسمت 8 بیت بالایی و 8 بیت پایینی ax هست. در حالت real mode که برنامه ی EMU8086 به صورت پیش فرض هست به eax دسترسی ندارید باید به حالت protected mode برید و ... (فکر کنم هنوز اینجاهارو بهتون نگفته باشند)
خوشبختی ما در سه جمله است ... تجربه از دیروز , استفاده از امروز , امید به فردا ... ولی ما با سه جمله دیگر زندگی مان را تباه میکنیم حسرت دیروز , اتلاف امروز , ترس از فردا ... دکتر علی شریعتی

-
- پست: 70
- تاریخ عضویت: جمعه ۳۰ اردیبهشت ۱۳۹۰, ۷:۲۲ ب.ظ
- سپاسهای ارسالی: 17 بار
- سپاسهای دریافتی: 28 بار
Re: اسمبلی!
واقعا ممنون HS368!خیلی لطف کردی!البته یه سوال دارم در مورد برنامه:خط 12تا 15 برنامه دقیقا چیکار می کنه؟یعنی وقتی اون دوتا مقدار رو توی ثباتهای dlو al میریزیم چی میشه؟!

-
- پست: 235
- تاریخ عضویت: یکشنبه ۲۵ بهمن ۱۳۸۸, ۵:۰۶ ق.ظ
- سپاسهای ارسالی: 977 بار
- سپاسهای دریافتی: 988 بار
Re: اسمبلی!
ted mosby نوشته شده:واقعا ممنون HS368!خیلی لطف کردی!البته یه سوال دارم در مورد برنامه:خط 12تا 15 برنامه دقیقا چیکار می کنه؟یعنی وقتی اون دوتا مقدار رو توی ثباتهای dlو al میریزیم چی میشه؟!
منظورتون اینه:
mov ah, 2
mov dl, 0Dh
int 21h
mov dl, 0Ah
int 21h
دستور mov ah, 2 و int 21h برای چاپ چاراکتر در روی صفحه نمایش هست و چاراکتر مورد نظر رو در ریجستر dl قرار میدیم. عدد 0Dh میشه 13 و 0Ah میشه 10. برای اومدن به خط جدید باید دو بایت 13 و 10 پشت سرهم داشته باشی، توی فایل های txt هم میتونی با برنامه hex editor ببینی. عدد 10 در اسکی newline و عدد 13 return یا همون کلید enter کیبرد میشه. اگه دقت کرده باشی بعد از وارد کردن حرف سریعا به خط بعدی میره.
برای یاد گیری به help و sample های برنامه نگاه بنداز.
خوشبختی ما در سه جمله است ... تجربه از دیروز , استفاده از امروز , امید به فردا ... ولی ما با سه جمله دیگر زندگی مان را تباه میکنیم حسرت دیروز , اتلاف امروز , ترس از فردا ... دکتر علی شریعتی
