برنامه ی دفتر چه تلفن ***فوری***

computer_soft

اخراجی موقت
1. mov ax,index
2. mov bx,20
3. mul bl

الان این چه کاریه؟ واسه چی اینکارو میکنیم؟
 

computer_soft

اخراجی موقت
1. mov cl,String[1]
2. mov ch,0
3. lea bx,string[2]
4. mov si,0

mov di,ax
اینجا string رو تو data معرفی میکنیم؟ چه طوری؟
 

computer_soft

اخراجی موقت
1. mov ax,index
2. mov bx,20
3. mul bl
4.
5. mov cl,String[1]
6. mov ch,0
7. lea bx,string[2]
8. mov si,0
9. mov di,ax
10.
11. copying:
12. mov Name[di],[bx+si]
13. inc di
14. inc si
15. cmp si,cx
16. jnz copying

این ای کهنوشتین رشته رو دریافت میکنه؟میریزه تو name ؟
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
با سلام،
کمی با دقت چیزایی که می نویسم رو بخونید! اینایی که سؤال کردید رو تا حالا چند بار توضیح دادم!
1. از اون جایی که می خوایم حداکثر 1000 تا نام رو تو برنامه جا بدیم، پس نیاز به آرایه ی 1000 تایی داریم، اما چون هر نام بیش از یه حرف داره پس هر نام خودش نیاز به یه آرایه ی حداکثر 20 کاراکتری داره! پس می شه اون چیزی که قبلاً گفتم.
2.چون تو اسمبلی نمی شه از دو اندیس برای آدرس دهی در ماتریس استفاده کرد و ماتریس و آرایه های چند بعدی رو به صورت آرایه در نظر می گیره، باید موقعیت خونه ی موردنظر در ماتریس رو به با فرض آرایه بودن بدست آورد. مثلاً اگر سطر 4 و ستون 5 مورد نظر باشه در یه ماتریس که تعداد ستون هاش 20 تاس، موقعیت خونه ی مورد نظر می شه:
4x20+5=85
یعنی اگر همه ی سطرها رو پشت هم قرار بدیم به صورت آرایه خونه ی 85 آرایه می شه!
حالا در این برنامه چون هر هر نام از ستون صفر شروع می شه پس دیگه لازم نیست ستون ها رو جمع کنیم و فقط سطری که می خوایم نام توش باشه (index) رو در تعداد ستون ها (20) ضرب می کنیم. ایشالا دستور mulرو هم بلدید دیگه، اگه ه تو تاپیک آموزش و آخرین پستم توضیح دادم!
3.تنها راه دریافت رشته همونیه که گفتم و برای ریختن رشته ی ورودی هم به آرایه ی نام از همون چیزی که نوشتم باید استفاده کنید.
اگه آموزش رو خونده باشید نوشتم که len یا string[1 طول رشته ی ورودیه، که می ریزیم تو cx تا به اندازه ی طول ورودی کاراکترها رو از ورودی به آرایه انتقال بده نه بیشتر! si اندیس ورودی و di اندیس محل قرار گرفتن تو آرایه اس.
ضمناً من به شخصیت کسی توهین نکردم! و گفتم که وقت نوشتن کاملش رو هم ندارم و خودتون باید تلاش کنید.
 

tingili

عضو جدید
سلام به همگی .خواهشا این برنامه رو نیاز دارم خواهشا کمک کنید . نصفه هم باشه عیبی نداره(دفترچه تلفن)
 

computer_soft

اخراجی موقت
شما توهین نکردین، کس دیگه ای توهین کرد منظورم شما نبودین
ببخشید اگه اشتباه متوجه شدین
 

computer_soft

اخراجی موقت
تشکر.
دارم یک چیزایی مینویسم ممنون از راهنماییتون و حوصله تون.
گیر کردم می پرسم
 

manspider2003200

عضو جدید
من كه اينجا رو خوندم كم مونده اسم خودمم فراموش كنم :D
دوست گرامي الان تا چه مرحله اي پيش رفتي؟ هميني كه نوشتي خروجي شما مشكلي نداره ؟
كمك خواستي بگو تا راهنماييت كنم
 

computer_soft

اخراجی موقت
من كه اينجا رو خوندم كم مونده اسم خودمم فراموش كنم :D
دوست گرامي الان تا چه مرحله اي پيش رفتي؟ هميني كه نوشتي خروجي شما مشكلي نداره ؟
كمك خواستي بگو تا راهنماييت كنم

سلام
تا حدودی برنامه رو نوشتم فردا باید تحویل بدم اما تو مرتب کردنش مشکل دارم یعنی اجرا میشه بی خطا اما اشتباه اجرا میشه
دلیلش فک میکنین چی باشه؟
 

manspider2003200

عضو جدید
سلام
تا حدودی برنامه رو نوشتم فردا باید تحویل بدم اما تو مرتب کردنش مشکل دارم یعنی اجرا میشه بی خطا اما اشتباه اجرا میشه
دلیلش فک میکنین چی باشه؟

سلام من كه نمي تونم بر اساس حدث و گمان مشكل شمارو حل كنم،حداقل سورس بزارين...

يك راهنمايي طول نام و شماره تلفن بايد ثابت باشه مثلا طولش 10 باشه(مخصوصا نام)
8 تا براي ذخيره شماره بعد انتهاش با كاراكتر دالر و بعد يك عدد مشخص كردن كليد كه از روي اون تشخيص بدين اگر اين ارايه جاش عوض شد در مرتب سازي آرايه نام هم بر اساس اين كليد ها تغيير كنه!
قبلا نمونه اي براي كار با فايل بود ميگرفت و مي نوشت و تغيرات اينچنيني بر روي كلي داده انجام ميشد اون رو نوشتم كه نزديك 2000 خط شد :biggrin:
اين برنامه شما هم اگر بخوايم با روش بافر و آرايه استفاده كنيم حد اقل 1000 خط و بيشتر ميشه
 

computer_soft

اخراجی موقت
من اصلا نتونستم واسه مرتب کردن چیزی بنویسم
فقط معمولی نوشتم که از اول حافظه میگیره چاپ میکنه ترتیب نداره
اصلا به ترتیب نوشتن رو نمیدونم
 

manspider2003200

عضو جدید
من اصلا نتونستم واسه مرتب کردن چیزی بنویسم
فقط معمولی نوشتم که از اول حافظه میگیره چاپ میکنه ترتیب نداره
اصلا به ترتیب نوشتن رو نمیدونم
چون اول به روش حلش فكر نكرديد و دقيقا چه چيز هايي نياز داريد،بعد از اينكه يك راه حل براش پيدا كرديد
برنامه رو بشكنيد به قسمت هاي كوچك يعني چي
مثلا شما نياز به گرفتن ورودي نام و تلفن داري حالا بايد بگي طولش چقدر باشه و چند تا بگيري انتهاش هم كه گفتم كليد تعيين كنيد و ذخيره كني در آرايه
كليد ها بار اول همه از 1 تا n شماره گذاري ميشه بعد مرتب سازي چون كليد هم تغيير كرده اگر بر اساس نام بوده تلفن ها بر اساس اين كليد ها مرتب بشه و يا بلعكس
كلا بايد چندين پروسيجر بنويسيد كه هر جزء كار خاصي انجام ميده وقتي به اين شكل بنويسيد و مرحله به مرحله پيش بريد مي تونيد اجرا هم بكنيد و اونو ديباگ كنيد كه از درستي هر قسمت مطمئن شيد
براي ديباگ كردن مي تونيد از debug در Command Prompt استفاده يا emu8086 كه كار ديباگ با اين نرم افزار راحت تر هست بدليل gui بودنش
با اين روش پله اي ميتونيد برنامه رو به سر انجام برسونيد.
موفق باشي
 

computer_soft

اخراجی موقت
تا الان 384 خط برنامه نوشتم همه چیش درست اجرا میشه اما مرتب نمیشه
یعنی مرتب سازی حبابی رو میخواستم نشد مرتب سازی انتخابی رو شبیه سازی کردم نشد.
تو ی امولاتور 8086 هم کار میکنم
تا حالا هم 10 تایی پروسجر دارم
 

manspider2003200

عضو جدید
تا الان 384 خط برنامه نوشتم همه چیش درست اجرا میشه اما مرتب نمیشه
یعنی مرتب سازی حبابی رو میخواستم نشد مرتب سازی انتخابی رو شبیه سازی کردم نشد.
تو ی امولاتور 8086 هم کار میکنم
تا حالا هم 10 تایی پروسجر دارم
نحوه ذخيره سازي شما چطور هست اطلاعات بيشتر بدين اگرنه مرتب سازي كاري نداره
بگين ورودي هارو دقيقا چطور دخيره كردين تا بشه راهنمايي كرد
 

Ship Storm

عضو جدید
سر انجام این پروژه به کجا رسید ؟
حداقل لینکی میذاشتید تا بقیه هم استفاده کننند
ممنون
 

Similar threads

بالا