RE: آموزش زبان اسمبلی درباره رجیسترها چند مطلب دیگه هم مانده که در اینجا میگم. از پردازنده های 386 به بعد(+386) ثباتهای عمومی به صورت زیر معرفی میشوند که 36 بیتی میباشند: EAX, EBX, ECX, EDX در ثباتهای اشاره گر به صورت: EDI, ESI, ESP, EBP, EIP در ثباتهای سگمنت به صورت: FS, GS
برای دیدن رجیسترها در DEBUG ,DOSرا اجرا کنید و فرمان R را صادر کنید :
D:\MASM>DEBUG -R AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=17AA ES=17AA SS=17AA CS=17AA IP=0100 NV UP EI PL NZ NA PO NC 17AA:0100 0F حافظه و آدرس دهی
هر کامپیوتر مبتنی بر 8086 دارای حداقل 640 کیلوبایت حافظه است . این 640 کیلوبایت به قطعات 64 کیلوبایتی تقسیم شده و ما این قطعات را "قطعه " یا Segment مینامیم . هر سگمنت هم به خانه های تک بایتی دیگری تقسیم شده است .
برای بدست آوردن مقدار یک بایت مشخص از حافظه ما باید عدد مربوط به سگمنت و همچنین شماره آن بایت در سگمنت ( که آفست Offset نامیده میشود-چندمین خانه از شروع سگمنت ) را بدانیم . مثلا اگر مقدار مورد نظر در قطعه 0030h( یعنی عدد در مبنای 16 است ) و آفست 13C4h باشد ما باید قطعه ای که شماره آن 0030h است را بیابیم و بعد در همان قطعه مقدار بایت شماره 13C4 را بخوانیم . برای نمایش این حالت بین عدد سگمنت و آفست علامت ( : ) قرار میدهیم . یعنی ابتدا عدد مربوط به قطعه را نوشته و سپس عدد آفست را می آوریم : Segment: Offset همیشه در آدرس دهی ها از اعداد مبنای 16 استفاده میکنیم . مثال:1234H:5678H برای به دست آوردن آدرس فیزیکی جلوی آدرسBase یک صفر میگذاریم و با آفست جمع میزنیم.
12340+5678=179B8H |