alireza378
شنبه 17 مرداد 1394, 17:15 عصر
سلام.
من دارم با emu8086 روی اسمبلی کار میکنم. این کد رو نوشته ام از روی کتاب آقای سیدرضی:
MOV AX,04E7H
MOV BX,351AH
PUSH AX
PUSH BX
POP BX
POP AX
این کد مقادیر 04E7 رو وارد AX میکنه و مقدار 351A رو وارد BX میکنه. بعد هم که وارد پشته میکنه.
خب من میخوام توی emu8086 این رو قشنگ ببینم که بفهمم.
روند کار فکر میکنم اینطوری باشه:
فرض کنیم SP در ابتدا برابر FFFE باشه:
اول مقدار 04 یعنی بایت باارزش وارد آدرس بالاتر میشه ، یعنی SP برابر میشه با FFFD
بعد مقدار E7 یعنی بایت کم ارزش وارد آدرس پایین تر میشه ، یعنی SP برابر میشه با FFFC
حالا این عکس رو ببینید:
134031
دور اون 2 قسمت که خط قرمز کشیدم رو ببینید. آدرس اولی یعنی پایین پشته FFFE هست و آدرس بعدیش ، FFFC یعنی آدرس FFFD وچود نداره! و تازه توی Stack به صورت 2 کلمه ای یعنی 4 بایتی ذخیره شده!!
میشه بگید چرا اینطوریه!؟ و چچوری باید درستش کنم که به صورت 2 بایتی بهم نمایش بده !؟ ممنون
من دارم با emu8086 روی اسمبلی کار میکنم. این کد رو نوشته ام از روی کتاب آقای سیدرضی:
MOV AX,04E7H
MOV BX,351AH
PUSH AX
PUSH BX
POP BX
POP AX
این کد مقادیر 04E7 رو وارد AX میکنه و مقدار 351A رو وارد BX میکنه. بعد هم که وارد پشته میکنه.
خب من میخوام توی emu8086 این رو قشنگ ببینم که بفهمم.
روند کار فکر میکنم اینطوری باشه:
فرض کنیم SP در ابتدا برابر FFFE باشه:
اول مقدار 04 یعنی بایت باارزش وارد آدرس بالاتر میشه ، یعنی SP برابر میشه با FFFD
بعد مقدار E7 یعنی بایت کم ارزش وارد آدرس پایین تر میشه ، یعنی SP برابر میشه با FFFC
حالا این عکس رو ببینید:
134031
دور اون 2 قسمت که خط قرمز کشیدم رو ببینید. آدرس اولی یعنی پایین پشته FFFE هست و آدرس بعدیش ، FFFC یعنی آدرس FFFD وچود نداره! و تازه توی Stack به صورت 2 کلمه ای یعنی 4 بایتی ذخیره شده!!
میشه بگید چرا اینطوریه!؟ و چچوری باید درستش کنم که به صورت 2 بایتی بهم نمایش بده !؟ ممنون