صفحه 1 از 1

اسمبلی!

ارسال شده: دوشنبه ۱۶ آبان ۱۳۹۰, ۳:۴۳ ب.ظ
توسط ted mosby

سلام دوستان!خوبین؟من یه سوال دارم!می خوام یه برنامه به زبان اسمبلی بنویسم که سه تا کاراکتر
    
ch1,ch2
 
  
و
   
ch3
 
  
از ورودی بگیره و اونا رو به ترتیب صعودی چاپ کنه.یعنی اگر
   
ch2
 
  
بزرگتر از
   
ch1
 
  
بود مقدار این دوتا رو با هم عوض کنه.میشه راهنماییم کنین؟
 

Re: اسمبلی!

ارسال شده: دوشنبه ۱۶ آبان ۱۳۹۰, ۶:۴۶ ب.ظ
توسط ted mosby
تو رو خدا راهنماییم کنین دیگه! :sad:

Re: اسمبلی!

ارسال شده: دوشنبه ۱۶ آبان ۱۳۹۰, ۶:۵۵ ب.ظ
توسط j.ghahraman
باید چهارتا آرایه بگیری سه تاش پرمیشه چهارمی برای مقایسه استفاده میشه

Re: اسمبلی!

ارسال شده: دوشنبه ۱۶ آبان ۱۳۹۰, ۷:۱۰ ب.ظ
توسط ted mosby
مگه تو اسمبلی میشه آرایه تعریف کرد؟؟استادمون هنوز بهمون درس نداده!

Re: اسمبلی!

ارسال شده: سه‌شنبه ۱۷ آبان ۱۳۹۰, ۱:۱۵ ق.ظ
توسط HS368
منظورتون از اسمبلی، x86 هست یا ARM؟ در ضمن باید بگی تحت چه کمپایلری میخوای بنویسی، هر کمپایلری استانداردها و library مخصوص خودش داره.

فایل زیر یه نمونه هست، میتونی با برنامه [External Link Removed for Guests] کمپایل کنی. (برای architecture x86)
[External Link Removed for Guests]

فایل اجرایی
[External Link Removed for Guests]

فقط برای عدد هست نه حروف! خودت تغییرش بده.

اگه میخوای برنامه نویسی سطح پایین (برای نوشتن bootloader یا ساخت kernel) رو یاد بگیری من توصیه میکنم از برنامه شبیه ساز EMU8086 شروع کنی، منم از همین برنامه اسمبلی رو شروع کردم.
موفق باشی تصویر تصویر

Re: اسمبلی!

ارسال شده: سه‌شنبه ۱۷ آبان ۱۳۹۰, ۵:۳۹ ب.ظ
توسط ted mosby
مرسی HS368عزیز!جواب سوالاتونو نمی دونم!فقط می دونم که ما با نرم افزار emu8086کار می کنیم .بابت زحمتی که کشیدین و این برنامه رو گذاشتین واقعا متشکرم.دو تا سوال!این eax که کاراکترها رو میریزین توش چیه؟ثباته؟...و دیگه اینکه واسه اینکه برای حروف هم جواب بده باید چیکار کنم؟؟؟

Re: اسمبلی!

ارسال شده: سه‌شنبه ۱۷ آبان ۱۳۹۰, ۶:۴۳ ب.ظ
توسط HS368
[External Link Removed for Guests]
فایل بالا رو تو برنامه EMU8086 اجرا کن، برای حروف نوشتم.

eax ریجیستر 32 بیتی هست که تو حالت protected mode میشه ازش استفاده کرد. ax هم 16 بیت اول eax هست و ah و al قسمت 8 بیت بالایی و 8 بیت پایینی ax هست. در حالت real mode که برنامه ی EMU8086 به صورت پیش فرض هست به eax دسترسی ندارید باید به حالت protected mode برید و ... (فکر کنم هنوز اینجاهارو بهتون نگفته باشند)

Re: اسمبلی!

ارسال شده: سه‌شنبه ۱۷ آبان ۱۳۹۰, ۸:۰۱ ب.ظ
توسط ted mosby
واقعا ممنون HS368!خیلی لطف کردی!البته یه سوال دارم در مورد برنامه:خط 12تا 15 برنامه دقیقا چیکار می کنه؟یعنی وقتی اون دوتا مقدار رو توی ثباتهای dlو al میریزیم چی میشه؟!

Re: اسمبلی!

ارسال شده: سه‌شنبه ۱۷ آبان ۱۳۹۰, ۸:۳۹ ب.ظ
توسط HS368
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 های برنامه نگاه بنداز.  

Re: اسمبلی!

ارسال شده: چهارشنبه ۱۸ آبان ۱۳۹۰, ۱۰:۵۶ ق.ظ
توسط ted mosby
مرسی HS368 عزیز بابت برنامه و جواب دادن سوالام.خیلی لطف کردی. :razz: :razz: :razz: