View Full Version : سوال: کمک در نوشتن پروژه
sobhmoud
یک شنبه 01 دی 1392, 19:15 عصر
با سلام
در درس زبان ماشین استادمون یک پروژه بهمون داده که قراره نام و معدل و سن n دانشجو را گرفته و سپس چند کار بر روی اینها انجام دهد مثل پیدا کردن نام جوانترین دانشجو و .... حالا من برای ذخیره نام و معدل و سن مشکل دارم نمی دونم چجوری این ها را ذخیره کنم تا بتونم دو باره مثل یک ارایه با دادن اندیس یا هر چیز دیگه ای به اسم و معدل و سن دسترسی پیدا کنم در ضمن ما از کتابخونه irvin32 استفاده می کنیم
با تشکر
Delphi Coder
دوشنبه 02 دی 1392, 16:17 عصر
صحبت از اسمبلی تحت ویندوز هست؟ Irvine32 اونطور که من از یه سرچ اجمالی گوگل متوجه شدم ظاهرا اسم یه کتاب باید باشه که یه کتابخانه ای از توابع آماده رو در اختیار کاربراش یا خوانندگانش قرار داده و عمومیت نداره استفاده از اون.
اگر الزامی به استفاده از این کتابخانه نیست محیط کار رو مشخص کنید که اسمبلی 32 بیت تحت ویندوز هست یا 16 بیت تحت داس شاید اینجوری راحتتر بشه راهنمایی کرد.
sobhmoud
دوشنبه 02 دی 1392, 16:36 عصر
صحبت از اسمبلی تحت ویندوز هست؟ Irvine32 اونطور که من از یه سرچ اجمالی گوگل متوجه شدم ظاهرا اسم یه کتاب باید باشه که یه کتابخانه ای از توابع آماده رو در اختیار کاربراش یا خوانندگانش قرار داده و عمومیت نداره استفاده از اون.
اگر الزامی به استفاده از این کتابخانه نیست محیط کار رو مشخص کنید که اسمبلی 32 بیت تحت ویندوز هست یا 16 بیت تحت داس شاید اینجوری راحتتر بشه راهنمایی کرد.
سلام از اینکه جواب دادید ممنونم
ما از Irvine32 فقط برای همون چند تابعش ازش استفاده می کنیم مثل writestring , readstring که در کنسول کار می کنن
ما برای پروژه از اسمبلی 32 بیت تحت ویندوز استفاده می کنیم همونطور که از اسم Irvine32 پیداست حلا همونطور که قبلا گفتم همه پروژه رو نوشتم ولی نمی دونم چطور رشته ها و اعداد رو ارایه ای ذخیره کنم که بعد راحت بهشون دسترسی داشته باشم من الان از پشته استفاده می کنم و اعداد رو اونجا می ریزم ولی استادمون قبول نکرده
ممنون میشم راهنماییم کنید
Delphi Coder
دوشنبه 02 دی 1392, 17:30 عصر
برای هر دانشجو نام معدل و سن رو داریم. بیاید نام رو یک رشته حداکثر 20 بایتی در نظر بگیریم تا کارمون ساده تر باشه.
پس ما برای هر دانشجو 20 بایت اسم اون رو داریم یک بایت معدل و یک بایت هم سن اون رو داریم اینها مجموعا میشه 22 بایت. خوب.
اول خود n رو میگیریم یا اگر به شکل یه متغیر ثابت بشه تعریف کرد تعریف میکنیم (این بستگی به تعریف پروژه داره فرقی نمیکنه زیاد ولی تعریف یه متغیر ثابت راحتتره به هر حال) بعد به میزان n*22 بایت حافظه allocate میکنیم و آدرس شروع اون رو یک متغییر ذخیره میکنیم.
حالا فرض کنیم اون آدرس رو میریزیم رو ESI اونوقت
ESI+(شماره رکورد*22)=نام دانشجو
ESI+(شماره رکورد*22)+20=معدل دانشجو
ESI+(شماره رکورد*22)+21=سن دانشجو
البته یک دستور به نام STRUC در masm32 وجود داره که میتونه کار رو راحتتر کنه ولی من بدون استفاده از اون توضیح دادم تا وابسته به Syntax اسمبلر خاصی باشه.
sobhmoud
سه شنبه 03 دی 1392, 00:24 صبح
از اینکه سریع توضیح دادید ممنونم
فقط یه سوال دیگه اینکه ما که اول از همه متغییر ها رو تعریف میکنیم حالا چطوری بیام n*22 رو تعریف کنم من که n رو ندارم
بعدهم مثلا من می خوام مقدار معدل رو که ادرسش رو دارم رو تو eax بریزم از چه کدی استفاده کنم
با تشکر
Delphi Coder
پنج شنبه 05 دی 1392, 23:57 عصر
خوب n رو یا از ورودی میگیرید یا به شکل متغییر ثابت توی کد تعریف میکنید حالا n یا هر اسم دیگه.
مقدار معدل حالا با این اوصافی که گفته شده اگر فرض کنیم esi به حافظه اخذ شده یا اولین رکورد اشاره کنه و شماره رکورد رو توی ecx داشته باشیم:
mov eax,ecx
mov ebx,22
mul ebx //eax=ebx*22
mov exb,eax
xor eax,eax
mov al,byte ptr [esi+ebx]
masih.moslehi
دوشنبه 09 دی 1392, 20:22 عصر
داداش من چهارشنبه امتحان دارم یک سری نمونه سوال عملی برام بزارید .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.