ورود

View Full Version : سوال: متغییر ها قبل از دستور RETURN



hansolbook
دوشنبه 05 آبان 1393, 20:28 عصر
با سلام من یک سئوال داشتم لطفا راهنمایی کنید
در کد زیر

ORG 100h
MOV AL, var1
MOV BX, var2
RET ; stops the program.
VAR1 DB 7
var2 DW 1234h


اگر متغییر ها قبل از دستور RETURN تعریف شود چه اتفاقی می افتد که برنامه تا بی نهایت اجرا میشود آیا مشکل از Emulator یا
پروسسور است؟

خیلی ممنون میشوم من رو راهنمایی کاممل کنید با تشکر

xman_1365_x
سه شنبه 06 آبان 1393, 21:59 عصر
اگر داده هارو در کد سگمنت تعریف کنید وقتی پردازنده به اون آدرس ها میرسه سعی میکنه اونارو به دستورالعمل های خودش تفسیر و اجرا کنه
که var1 معادل دستور pop es میشه و var2 معادل دستور معادل xor al,12h میشه
اما برنامه شما چون استک رو تغییری نمیده با توجه به مقداری که ss:sp اشاره میکنه هنگام ret اون رو میخونه و به اون آدرس پرش میکنه و ip به اونجا اشاره و اجرا میشه ...
اگر بخواین تکرار شود میتونید به شکل زیر استفاده کنید


ORG 100h
l1:
push offset l1
MOV AL, var1
MOV BX, var2
RET ; stops the program.
VAR1 DB 7
var2 DW 1234h

موفق باشید