اسمبلی!

در اين بخش شما ميتوانيد درباره برنامه ها و نرم افزارهاي كامپيوتر به بحث و تبادل نظر بپردازيد

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

ارسال پست
Novice Poster
Novice Poster
پست: 70
تاریخ عضویت: جمعه ۳۰ اردیبهشت ۱۳۹۰, ۷:۲۲ ب.ظ
سپاس‌های ارسالی: 17 بار
سپاس‌های دریافتی: 28 بار

اسمبلی!

پست توسط ted mosby »


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

Re: اسمبلی!

پست توسط ted mosby »

تو رو خدا راهنماییم کنین دیگه! :sad:
Junior Poster
Junior Poster
پست: 145
تاریخ عضویت: سه‌شنبه ۱۳ مرداد ۱۳۸۸, ۲:۰۲ ب.ظ
سپاس‌های ارسالی: 297 بار
سپاس‌های دریافتی: 250 بار

Re: اسمبلی!

پست توسط j.ghahraman »

باید چهارتا آرایه بگیری سه تاش پرمیشه چهارمی برای مقایسه استفاده میشه
Novice Poster
Novice Poster
پست: 70
تاریخ عضویت: جمعه ۳۰ اردیبهشت ۱۳۹۰, ۷:۲۲ ب.ظ
سپاس‌های ارسالی: 17 بار
سپاس‌های دریافتی: 28 بار

Re: اسمبلی!

پست توسط ted mosby »

مگه تو اسمبلی میشه آرایه تعریف کرد؟؟استادمون هنوز بهمون درس نداده!
Major I
Major I
پست: 235
تاریخ عضویت: یک‌شنبه ۲۵ بهمن ۱۳۸۸, ۵:۰۶ ق.ظ
سپاس‌های ارسالی: 977 بار
سپاس‌های دریافتی: 988 بار

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 شروع کنی، منم از همین برنامه اسمبلی رو شروع کردم.
موفق باشی تصویر تصویر
خوشبختی ما در سه جمله است ... تجربه از دیروز , استفاده از امروز , امید به فردا ... ولی ما با سه جمله دیگر زندگی مان را تباه میکنیم حسرت دیروز , اتلاف امروز , ترس از فردا ... دکتر علی شریعتی
Novice Poster
Novice Poster
پست: 70
تاریخ عضویت: جمعه ۳۰ اردیبهشت ۱۳۹۰, ۷:۲۲ ب.ظ
سپاس‌های ارسالی: 17 بار
سپاس‌های دریافتی: 28 بار

Re: اسمبلی!

پست توسط ted mosby »

مرسی HS368عزیز!جواب سوالاتونو نمی دونم!فقط می دونم که ما با نرم افزار emu8086کار می کنیم .بابت زحمتی که کشیدین و این برنامه رو گذاشتین واقعا متشکرم.دو تا سوال!این eax که کاراکترها رو میریزین توش چیه؟ثباته؟...و دیگه اینکه واسه اینکه برای حروف هم جواب بده باید چیکار کنم؟؟؟
Major I
Major I
پست: 235
تاریخ عضویت: یک‌شنبه ۲۵ بهمن ۱۳۸۸, ۵:۰۶ ق.ظ
سپاس‌های ارسالی: 977 بار
سپاس‌های دریافتی: 988 بار

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 برید و ... (فکر کنم هنوز اینجاهارو بهتون نگفته باشند)
خوشبختی ما در سه جمله است ... تجربه از دیروز , استفاده از امروز , امید به فردا ... ولی ما با سه جمله دیگر زندگی مان را تباه میکنیم حسرت دیروز , اتلاف امروز , ترس از فردا ... دکتر علی شریعتی
Novice Poster
Novice Poster
پست: 70
تاریخ عضویت: جمعه ۳۰ اردیبهشت ۱۳۹۰, ۷:۲۲ ب.ظ
سپاس‌های ارسالی: 17 بار
سپاس‌های دریافتی: 28 بار

Re: اسمبلی!

پست توسط ted mosby »

واقعا ممنون HS368!خیلی لطف کردی!البته یه سوال دارم در مورد برنامه:خط 12تا 15 برنامه دقیقا چیکار می کنه؟یعنی وقتی اون دوتا مقدار رو توی ثباتهای dlو al میریزیم چی میشه؟!
Major I
Major I
پست: 235
تاریخ عضویت: یک‌شنبه ۲۵ بهمن ۱۳۸۸, ۵:۰۶ ق.ظ
سپاس‌های ارسالی: 977 بار
سپاس‌های دریافتی: 988 بار

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 های برنامه نگاه بنداز.  
خوشبختی ما در سه جمله است ... تجربه از دیروز , استفاده از امروز , امید به فردا ... ولی ما با سه جمله دیگر زندگی مان را تباه میکنیم حسرت دیروز , اتلاف امروز , ترس از فردا ... دکتر علی شریعتی
Novice Poster
Novice Poster
پست: 70
تاریخ عضویت: جمعه ۳۰ اردیبهشت ۱۳۹۰, ۷:۲۲ ب.ظ
سپاس‌های ارسالی: 17 بار
سپاس‌های دریافتی: 28 بار

Re: اسمبلی!

پست توسط ted mosby »

مرسی HS368 عزیز بابت برنامه و جواب دادن سوالام.خیلی لطف کردی. :razz: :razz: :razz:
ارسال پست

بازگشت به “نرم افزار كامپيوتر”