ورود

View Full Version : اين دستور LEA چيكار ميكنه؟



parisa_vb
چهارشنبه 09 دی 1388, 22:09 عصر
سلام...

اگه يه آرايه تعريف كرده باشم

T1 dW 8fH,32H,45H,35H



LEA SI,T1+3

حالا ميخوام بفهمم اين دستور آدرس آفست خونه چهارم رو در sI قرار ميده يا نه؟؟

...StacK...
پنج شنبه 10 دی 1388, 23:37 عصر
بهتره این ارایه رو به صورت زیر تعریف کنید:

t1 db 8fH,32H,45H,35H
lea si,t1+3 ;offset address 35h

و اما دستور شما:




T1 dW 8fH,32H,45H,35H


LEA SI,T1+3
افست خونه ای رو میده که 32H درون اون قرار داره.

شما برای دسترسی به خونه چهارم باید به صورت زیر کد بزنید:


Lea si,t1+7
t1=0;t1+7=35H
0---1----2---3----4---5----6---7----
| 8f | | 32 | | 45 | | 35 |
------------------------------------
_________-________-________-________
Word1 word2 word3 word4

در کد بالا si برابر با 7 قرار میگیره. یعنی ادرس 35H .(هر رقم هگزا 4 بیت است)

زمانی که ارایه ای به نام t1 رو تعریف میکنید در واقع ادرس اولین بایت از ارایه به جای اون قرار میگیره,و طبق شکلی که دادم هر جا از نام t1 استفاده کنید

ادرس صفر جاگزین میشه ,حالا حساب کن به چه صورت باید کد بزنی.

ضمیمه:
1-در محیط های 32 بیتی dw برابر 4 بایت و در محیط های 64 بیتی برابر 8 بایت میباشد.
2-به جای دستور Lea میتوان از شبه دستور Offset و دستور mov به صورت زیر استفاده کرد:


mov si,offset t1+7

این دستور دقیقا معادل
lea si,t1+7 میباشد.