PDA

View Full Version : سوال: فرق بین Lea و offset



هادی2020
چهارشنبه 08 خرداد 1387, 19:08 عصر
دلیل بوجود آمدن lea در صورتی که می دانیم قبل از آن دستور offset وجود داشت در چیست؟:متفکر:

مهران موسوی
پنج شنبه 09 خرداد 1387, 02:11 صبح
عملگر offset با استفاده از mov كار Lea رو انجام ميده ...


mov bx , offset test

مثلا اين كد ادرس افست test رو در bx قرار ميده ..

هادی2020
پنج شنبه 09 خرداد 1387, 12:54 عصر
عملگر offset با استفاده از mov كار Lea رو انجام ميده ...


mov bx , offset testمثلا اين كد ادرس افست test رو در bx قرار ميده ..
از دوست عزیز برای پاسخ تشکر می کنم
دوستان شاید سوالم را بد مطرح کرده باشم سوال را اصلاح می کنم مثلا دستور زیر همشه جواب نمی دهد:
mov dx, offset st1[si]
اینطوری که من شنده ام اگر اشتباه نکنم در زمان اسمبلر کردن برنامه چیزی در si وجود ندارد به همین خاطر خطا ایجاد می باشد
دوستانی که این مطلب را گرفته اند جواب بدهند و دوستانی که می گویند امکان ندارد لطفا جواب ندهند

Feremerz
یک شنبه 12 خرداد 1387, 06:23 صبح
از دوست عزیز برای پاسخ تشکر می کنم
دوستان شاید سوالم را بد مطرح کرده باشم سوال را اصلاح می کنم مثلا دستور زیر همشه جواب نمی دهد:
mov dx, offset st1[si]
اینطوری که من شنده ام اگر اشتباه نکنم در زمان اسمبلر کردن برنامه چیزی در si وجود ندارد به همین خاطر خطا ایجاد می باشد
دوستانی که این مطلب را گرفته اند جواب بدهند و دوستانی که می گویند امکان ندارد لطفا جواب ندهند

آره آقاي جاودانه هم همينو گفت :لبخند:

hoax3r
یک شنبه 12 خرداد 1387, 18:42 عصر
دستور OFFSET آدرس آفستهایی رو برمی گردونه که مشخص باشن و در مورد آدرسدهی های پیچیده تر کاربرد نداره
یعنی در مورد زیر هیچ موقع جواب نمیگیرین چون si مشخص نیست ولی مثلا اگه بجای si یه عدد میزاشتین مشکلی نداشت


mov dx, offset st1[si]


و در این مواقع باید از دستور lea استفده بشه، مثل این



lea eax, st1[si]

یا این


lea eax, st1[si+bx+9]


شاد باشید

هادی2020
دوشنبه 13 خرداد 1387, 08:43 صبح
دستور OFFSET آدرس آفستهایی رو برمی گردونه که مشخص باشن و در مورد آدرسدهی های پیچیده تر کاربرد نداره
یعنی در مورد زیر هیچ موقع جواب نمیگیرین چون si مشخص نیست ولی مثلا اگه بجای si یه عدد میزاشتین مشکلی نداشت


mov dx, offset st1[si]
و در این مواقع باید از دستور lea استفده بشه، مثل این



lea eax, st1[si]
یا این


lea eax, st1[si+bx+9]
شاد باشید

سوال اینجاست که چرا si مشحص نیست

hoax3r
دوشنبه 13 خرداد 1387, 09:52 صبح
به نظر میاد شما اصلا منظوره منو متوجه نشدین من منظورم از آدرس مشخص این بود که آدرس باید ثابت باشه نه متغییر
مقدار si میتونه متغییر باشه به همین جهت قابل استفاده با دستور OFFSET نیست.