PDA

View Full Version : چندتا سوال مبتدی ولی مهم در مورد آدرس و ارقام



Xarjam
سه شنبه 19 مهر 1390, 09:17 صبح
سلام دوستان.

لطفا تصاوير زير رو نگاه کنيد. بخشي از کتاب زبان اسمبلي نيک مهر هستش. يه چندتا سوال مبتدي داشتم.

از کجا فهميده که در اين مثال ها آدرس حافظه از 4000 يا 1A00 يا 2401 يا غيره شروع مي شه؟


http://up5.iranblog.com/images/efjywt2ggrs95hsnxly4.jpg

http://up5.iranblog.com/images/i5iokem7y8h1l2g6cwn6.jpg

http://up5.iranblog.com/images/urmxevzd16q98mduxfr5.jpg

------------------

2. به عکس زير نگاه کنيد. سوالم در مورد اين 0x52 يا 0x000001A4 يا امثال اين ارقام که در تصوير زير مي بينيد هستش.

حالا سوال اصليم هم اينه که اين x بين اين ها براي چي هستش؟

اين 0x که در همه جا مي زنه معادل چي هستش و براي چي هستش؟

http://up5.iranblog.com/images/706m7722u5vddz219sw.png

ممنونم.

xman_1365_x
چهارشنبه 20 مهر 1390, 01:43 صبح
از کجا فهميده که در اين مثال ها آدرس حافظه از 4000 يا 1A00 يا 2401 يا غيره شروع مي شه؟
آدرس های کتاب فرضی هست در واقعیت اسمبلر آدرسی مجازی ست میکنه و اگر با دیباگر فایل رو باز کنید آدرس مجازی که ست کرده نشون میده که روی هر سیستم میتونه متغیر باشه و هنگام اجرا بستگی به لودر داره هنگام بار شدن برنامه روی رم سیستم عامل آدرس هارو تغییر میده و روی حافظه قرار میده برنامرو
پس در کل فرضی هست و سیستم عامل هم بسته به اینکه کجا حافظه خالی داره برنامه رو بار میکنه و آدرس هارو مجددا ست میکنه


سوالم در مورد اين 0x52 يا 0x000001A4 يا امثال اين ارقام که در تصوير زير مي بينيد هستش.

حالا سوال اصليم هم اينه که اين x بين اين ها براي چي هستش؟

اين 0x که در همه جا مي زنه معادل چي هستش و براي چي هستش؟
0x برای نمایش و تشخیص توسط اسمبلر یا کامپایلر برای اعداد هگزادسیمال به کار میره
به صورت ثابت در ابتدا اعداد قرار میگیره و فقط جنبه تشخیص از مبنا های مختلف داره میشه
مثال:
وقتی شما تنظیم پیش فرض اسمبلر رو تغییر ندین مبنای اعداد دسیمال هست،اعداد دهدهی رو باید با پسوند d نمایش داد اما اگر شما مشخص نکنید چه مبنایی پیش فرض همون دسیمال میشناسه حالا برای فهماندن به اسمبلر باید از پیشوند یا پسوند مناسب استفاده کرد که برای مبنای دسیمال ، اکتال ، باینری و هگزا دسیمال در نظر گرفته شده