آرایه و ادرس دهی در اسمبلی

scooter2005

Member
یه سوالی داشتم در مورد آدرس دهی و دستور si ,offset

الان در این تصویر که خودم درست کردم می خوایم مقادیر و دستورات زیر رو اعمال کنیم
x db ?
y db 60
t db 4 dup (0)
n db 100
کد:
mov al , 10
mov bl , 20
mov cl , 25
mov si , offset x
mov [si] , al
add si , 1
mov cl [si]
mov si+2 ,bl
mov si+3 ,cl
mov si+5 ,al


الان میشه بگید از خط سوم به بعد چه اتفاقاتی افتاده ؟
5ur7fq.jpg
 

the_king

مدیرکل انجمن
یه سوالی داشتم در مورد آدرس دهی و دستور si ,offset

الان در این تصویر که خودم درست کردم می خوایم مقادیر و دستورات زیر رو اعمال کنیم
کد:
mov al , 10
mov bl , 20
mov cl , 25
mov si , offset x
mov [si] , al
add si , 1
mov cl [si]
mov si+2 ,bl
mov si+3 ,cl
mov si+5 ,al


الان میشه بگید از خط سوم به بعد چه اتفاقاتی افتاده ؟
5ur7fq.jpg
کدتون اشکال داره، توی سطر هفتم بین cl و [si] کاراکتر کاما از قلم افتاده.
در سه سطر بعدی هم si+2 و si+3 و si+4 قابل قبول نیستند، بایستی در دو طرف آن از [ و ] استفاده بشه :

کد:
MOV	AL, 10
MOV	BL, 20
MOV	CL, 25
MOV	SI, OFFSET x
MOV	[SI], AL
ADD	SI, 1
MOV	CL, [SI]
MOV	[SI + 2], BL
MOV	[SI + 3], CL
MOV	[SI + 5], AL

در سطر چهارم، SI به آدرس x در حافظه اشاره می کند.
در سطر پنجم، مقدار AL در خانه ای که SI به آن اشاره می کند (یعنی x) قرار می گیرد یعنی x برابر 10 می شود.
در سطر ششم، مقدار SI یک واحد افزایش می یابد، یعنی SI به جای x به y اشاره می کند.
در سطر هفتم، مقدار موجود در خانه ای که SI به آن اشاره می کند در درون CL قرار داده می شود، یعنی CL برابر 60
می شود.
در سطر هشتم، مقدار موجود در BL به درون خانه ای که دو خانه از موقعیتی که SI به آن اشاره می کند جلوتر است،
قرار می گیرد، یعنی مقدار 20 در درون دومین خانه t (یعنی [t[1) قرار می گیرد.
در سطر نهم، مقدار CL به درون خانه ای که سه خانه از موقعیتی که SI به آن اشاره می کند جلوتر است،
قرار می گیرد، یعنی مقدار 60 در درون سومین خانه t (یعنی [t[2) قرار می گیرد.
در سطر دهم، مقدار AL به درون خانه ای که پنج خانه از موقعیتی که SI به آن اشاره می کند جلوتر است،
قرار می گیرد، یعنی مقدار 10 در درون n قرار می گیرد.
 

جدیدترین ارسال ها

بالا