ایران سرفراز- نرم افزار وپروژهای دانشجویی


نرم افزار وپروژهای دانشجویی

Assemblyفصل اول اسمبلی-سگمنت داده ها-آفست های سگمنت

<!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

mohsen_mahyar@yahoo.com

mo-mah.persian.blog.ir

به نام خدا

 

Assemblyفصل اول اسمبلی-

Programming

برنامه نویسی به زبان اسمبلی برای کامپیوترهای شخصی

حافظه داخلی

وحافظه فقط (RAM) دو نوع حافظه داخلی روی کامپیوتر عبارتند از:حافظه با دستیابی تصادفی

شماره گذاری می شوند به طوری که OO بایت های حافظه به ترتیب با شروع از (Ram) خوانی

هرمکانی دارای یک آدرس منحصر به فردی می باشد

شامل یک تراشه حافظه بخوصوصی است که فقط می تواند خوانده شود. چون دستورالعمل :ROM

هاودادها به طور دائمی در داخل تراشه هاجایگزاری شده اند نمی توانندتغییر داده شوند.سیستم

68 شروع شده ودستگاههای ورودی / خروجی نظیر K از أدرس (BIOS) ورودی – خروجی پایه

960 شروع می K کنترل کننده دیسک سخت را مدیریت می کند. حافظه فقط خوانی که از

شودعملیات اساسی کامپیوترنظیر امتحان کردن خود کامپیوتر در موقعروشن شدن ،الگوهای نقطه

ای گرافیکی وبار کننده خود دیسک را کنترل می کند.وقتی که کامپیوتر را روشن می کنید،حافظه

RAM کنترلهای گوناگونی را انجام داده واطلاعات مخصوص سیستم را از دیسک به حافظه ROM

بار گذاری می کند.

ارتباط دارد که بهتر بود درحافظه خواندن – نوشتن RAM یک برنامه نویس اصولا با حافظه : RAM

به عنوان یک برگه کاری برای ذخیره سازی موقت واجرای برنامه RAM نام گذاری می شد.حافظه

محتوی)از بین می رود باید از ) RAM ها بکار می رود چون در موقع خاموش شدن کامپیوتر حافظه

حافظه خارجی برای نگهداری برنامه ها و داده ها استفاده کنیم.وقتی که کامپیوتر را روشن می کنید،

بار گذاری می کند. سپس می توانید RAM بخشی از سیستم عامل ر ابه داخل ROM روال راه اندازی

را از آن درخواست کنید. RAM انجام عملیاتی نظیر بار گذاری یک برنامه از دیسک به داخل

آدرس دهی داده ها در حافظه

بسته به مدل،پردازنده می تواند در هر زمان به یک یا چند بایت از حافظه دسترسی داشته باشد عدد

0526 است نمایش آن به دو بایت یا H دهدهی 1315 را در نظر بگیرید نمایش هگزا دسیمال آن

یک کلمه از حافظه نیاز دارد.آن شامل با ارزش ترین بایت یعنی 05 و کم ارزش ترین بایت یعنی

29 می باشد.

سیستم داده را در حافظه به ترتیب معکوس ذخیره می کند:بایت دارای کم ارزشتر در آدرس پایین

ترو بایت دارای ارزش بیشتر در آدرس بالاتر حافظه ذخیره می شود.

پردازنده انتظار دارد که داده های عددی در حافظه به ترتیب معکوس قرار گیرند و داده ها را مطابق

با آن پردازش می کند .

سگمنت ها و آدرس دهی.

یک سگمنت ناحیه خاصی است که در یک برنامه تعریف شده واز مرز پاراگراف شروع می شود

یعنی از مکانی که همواره بر ١۶ یا ١٠ شانزده شانزدهی بخش پذیر است. هر چندکه یک سمگنت

64 باشد ولی نقطه به k می تواند در هر جایی از حافظه قرار بگیرد و در حالت حقیقی می تواند تا

اندازه ای فضا لازم دارد که برنامه برای اجرا شدن به آن نیاز دارد.

ممکن است هر تعداد سگمنت وجود داشته باشد ، برای آدرس دهی سگمنت مورد نظر فقط لازم

است که آدرس مو جود در یک ثبات سگمنت مناسبی را تغییر داد. ٣ سگمنت اصلی عبارتند از

سگمنت های داده ، پشته وکد

سگمنت کد

سگمنت کد شامل دستورالعمل های ماشین است اجرا می شوند. معمولا اولین دستورالعمل اجرایی

در شروعاین سگمنت قرار دارد. وسیستم عامل به آن مکان پیوند داده می شود تا اجرای برنامه را

سگمنت کد را آدرس دهی می ، (cs) شروع کند همانطور که از نام آن پیداست ، ثبات سگمنت کد

64 نیاز داشته باشد ، برنامه ممکن است نیاز داشته باشد که بیش k کند.اگر ناحیه کد شما به بیش از

از یک سگمنت کد را تعریف کند.

سگمنت داده ها

سگمنت داده ها شامل داده ها ، ثابت ها و نواحی کاری یک برنامه می باشد ثبات سگمنت داده ها

64 نیاز داشته باشد در k سگمنت داده ها را آدرس دهی می کند . "اگر ناحیه داده به بیش از (DS)

برنامه می توانید بیش از یک سگمنت داده را تعریف کنید ".

سگمنت پشتر

به زبان ساده ، پشتر حاوی هر گونه داده و آدرسی است که برای ذخیره موقت و یا جهت استفاده

سگمنت پشتر را آدرس (ss) توسط زیر روال های فراخوانی شده لازم است . ثبات سگمنت پشته

دهی می کند.

حدود یک سگمنت

یک ثبات سگمنت حاوی آدرس شروع یک سگمنت می باشد همانطور که قبلا ذکر شد یک

سگمنت بر روی مرز پارا گراف شروع می شود که آدرسی است که همواره بر ١۶ تقسیم پذیر است

088 شروع می شود در نظر بگیرید چون دراین مورد EOH یک سگمنت داده را از مکان حافظه

وتمام موارد دیگرراستی ترین رقم شانزده شانزدهی برابر صفر است طراحان کامپیوتر تشخیص

038E 038 به صورت EOH دادند که ذخیره کردن رقم صفر درثبات سگمنت لازم نیست . لذا

ذخیره می شود که صفر سمت راست آن بدیهی است. در این کتاب هر جا لازم باشد از کروشه ها

038 استفاده خواهد شد. [ برای اشاره به سمت راست ترین صفر ما نند [ 0

آفست های سگمنت

در داخل یک برنامه مکان های حافظه نسبت به آدرس شروع سگمنت بیان می شوند فاصله بایتی

از آدرس سگمنت تا یک مکان دیگر در داخل همان سگمنت به صورت یک آفست (جا بجایی)

یا از صفر تا 65,535 FFFFH 0000 تا H بیان می شود. محدوده یک افست ٢بایتی می تواند از

باشد. بنابراین اولین بایت سگمنت که در آفست 00 ، دومین بایت در آفست 01 الی آخر تا آفست

65535 قرار می گیرند برای مراجعه به هر مکان حافظه در یک سگمنت ، پردازنده آدرس سگمنت

موجود در یک ثبات سگمنت را با یک مقدار افست ترکیب می کند.

حاوی آدرس DS 038 شروع می شود در نظر بگیرید. ثبات EOH یک سگمنت داده را که از مکان

0032 بایت در H 038 می باشد ویک دستور العمل به مکانی با آفست E[o]H سگمنت داده ها یعنی

داخل سگمنت داده ها مراجعه می کند.

03912 می باشد. H بنا براین مکان حافظه واقعی بایت مراجعه شده به وسیله این دستورالعمل برابر

توجه داشته با شید که یک برنامه ممکن است دارای یک یا چند سگمنت باشد که می توانند از هر

مکانی از حافظه شروع شده, اندازه آنها متفاوت بوده و به هر ترتیبی قرار بگیرند.

ظرفیت آدرس دهی

مورد استفاده قرار می گیرد دارای قابلیت PC پردازنده های گوناگون انیتس که توسط کامپیوترهای

8086 : ثبات آنهابه احوال ١۶ بیت می باشند / های آدرس دهی مختلفی می باشند.آدرس دهی 8088

چون یک آدرس سگمنت برروی مرزپاراگراف (همواره بر ١۶ تقسیم پذیر است) قرار دارد ۴بیت

سمت راست آدرس آن صفر می باشندهمانطور که قبلا بحث شد یک آدرس سگمنت در ثبات

برابر nnnn[o] سگمنت ذخیره شده و پردازنده ۴ بیت سمت راست را به صورت شانزده شانزدهی

امکان آدرس دهی تا ١٠۴٨۵۶٠ بایت را فراهم می کند،اگر FFFF[o]H، در نظر می گیرید. حال o

شانزده شانزدهی را به صورت 1111 دو رویی نوشته و ۴بیتسمت راست را F مطمئن نیستید،هر

قرار داده وسپس مقادیربیت ها را با هم جمع کنیم. o برابر

آدرس دهی 80286 :در حالت حقیقی،پردازنده ٨٠٢٨۶ عمل آدرس دهی را مثل ٨٠٨۶ انجام می

FFFFF[o] دهد در حالت محافظت شده،پردازنده از ٢۴ بیت برای آدرس دهی استفاده می کند، لذا

امکان آدرس دهی تا ١۶ میلیون بایت را فراهم می کند.ثبات های سگمنت به عنوان انتخابگرهای

دستیابی به آدرس سگمنت ٢۴ بیتی از حافظه عمل کرده واین مقدار را با یک آفست ١۶ بیتی جمع

می کنند.

80386 :در حالت حقیقی این پردازنده ها عمل آدرس دهی را خیلی شبیه / آدرس پنتیوم / 486

٨٠٨۶ انجام میدهند. در حالت محافظت شده این پردازنده ها از ۴٨ بیتبرای آدرس دهی استفاده می

کنند. که امکان آدرس دهی سگمنت ها راتا ۴ میلیون بایت فراهم می کنند.ثبات های سگمنت

١۶ بیتی به عنوان انتخاب کننده دسترسی به آدرس سگمنت ٣٢ بیتی از حافظه عمل کرده واین مقدار

را به یک آفست ٣٢ بیتی اضافه می کنند.

ثبات ها

ثبات های پر دازنده برای کنترل دستور العمل های اجرایی، مدیریت آدرس دهی حافظه و انجام

بیت SS,DS,CS محاسبات بکار می روند.ثباتها با استفاده ازنام آنها آدرس دهی می شوند مانند

های یک ثبات به طور قراردادی از راست به چپ و با شروع ازصفر شماره گذاری می شوند.

ثبات های سگمنت

یک ثبات سگمنت به طول ١۶ بیت می باشد و برای آدرس دهی ناحیه ای از حافظه که به عنوان

سگمنت جاری شناخته می شودبکار می رود چون یک سگمنت روی مرز پاراگراف تنظیم می

در نظر گرفته می شوند. o شوند، ۴بیت سمت راست آدرس آن در ثبات سگمنت برابر

حاوی آدرس شروع سگمنت که در یک برنامه است. این آدرس سگمنت بعلاوه :CS ثبات های

آدرس دستورالعملی راکه برای اجرا واکشی (Ip) یک مقدار آفست درثبات اشاره گر دستورالعمل

لازم نیست. cs می شود نشان می دهد. برنامه نویسی معمولی مراجعه به ثبات

حاوی آدرس شروع سگمنت یک برنامه است. دستورالعمل ها برای مراجعه به داده ها از : DS ثبات

این آدرس استفاده می کنند.این آدرس بعلاوه یک مقدار آفست در داخل یک دستورالعمل واقعی

مکانی در سگمنت داده ها را مشخص می کند.

امکان پیاده سازی پشته ای را که یک برنامه برای ذخیره کردن موقت آدرس ها وداده ها : SS ثبات

استفاده می کند . سیستم ، آدرس شروع سگمنت بعلاوه یک مقدار افست درثبات اشاره گر پشته

کلمه جاری در پشته را که آدرس دهی می شود، نشان می دهد.در برنامه نویسی معمولی لازم (sp)

مراجعه کنید. ss نیست مستقیما به ثبات

توسط برخی عملیات رشته ای برای مدیریت آدرس دهی حافظه بکار می رود در اینجا : ES ثبات

ES ثبات اندیس)مرتبط است در برنامه ای که لازم است از ) DI سگمنت اضافی)با ثبات ) ES ثبات

استفاده شود با یک آدرس سگمنت مناسبی مقدار دهی اولیه می شود.

ثبات های سگمنت اضافی کمکی روی پردازنده های ٨٠٣٨۶ و بعد از آن. : FS,GS ثبات های

ثباتهای اشاره گر

BP,SP,IP: سه ثبات اشاره گر عبارتند از

حاوی آدرس آفست دستور العمل ۵ بعدی است IP ثبات ١۶ بیتی (IP) : ثباتاشاره گر دستورالعمل

دستورالعمل جاری را IP مرتبط می باشد. به این معنی که ثبات CS با ثبات IP که اجرا خواهد شد

مراجعه نمی کنید IP در سگمنت که اجرایی جاری نشان می دهد. معمولا در یک برنامه به ثبات

برای امتحان کردن یک برنامه مقدار آن را تغییر DEBV ولی می توانید در موقع استفاده از برنامه 6

می EIP توسع یافته ٣٢ بیتی به نام IP دهید. ٨٠٣٨۶ وپردازنده های بعد از آن دارای یک ثبات

514 می باشد برای پیدا کردن H حاوی IP 39 و B4[o] H حاوی CS باشند. در مثال ، ثبات

جمع می کند. IP را با افست موجود در CS دستورالعمل اجرای بعدی ,پردازنه آدرس موجود در

آدرس IP بعلاوه آدرس افست در CS 39 آدرس سگمنت در B40H+514H=3A054H

دستورالعمل بعدی.

مرتبط بوده و به سیستم امکان ss اشاره گر ...): با ثبات ) BP اشاره گربه پشته) و ) SP ثباتهای

دستیابی به داده های موجود درسگمنت پشته را می دهند.

به طول ١۶ بیت بوده که شامل یک مقدار افست می با شد SP ثبات : (SP) ثبات اشاره گر پشته

مرتبط می شود به کلمه بالای پشته اشاره می کند ss وموقعی که این مقدار با محتوی ثبات

می باشند. ESP پردازنده ٨٠٣٨٩ وپس از آن دارای یک اشاره گر پشته ٨٢ بیتی توسعه به نام ثبات

سیستم به طور اتوماتیک این ثبات ها را مدیریت می کند.

ارجاع به پارامترهای که داده ها و آدرسهایی هستند BP ثبات ١۶ بیتی : (BP) ثبات اشاره گره مبنا

که یک برنامه از طریق پشته ارسال می کند،تسهیل می کند. ٨٠٣٨۶ و پردازنده های بعد از آن دارای

می باشند. EBP یک ثبات ٣٢ بیتی توسعه به نام

mohsen_mahyar@yahoo.com

mo-mah.persian.blog.ir

 

ثبات های همه منظوره

مبنای کار سیستم هستند . در اینکه می توانید آنها را به DX,CX,BX,AX ثبات های همه منظوره

عنوان کلمه یا به صورت بایت آدرس دهی کنید منحصر به فرد هستند. سمت چپ ترین بایت

شامل یک بخش بالایی AX قسمت بالایی وسمت راست ترین قسمت پایینی می باشند برای مثال

می باشد و می توانید به هر بخش به نام آن مراجعه کنید. ٨٠٣٨۶ AL ویک بخش پایینی AH

وپردازنده های بعد از آن از تمام ثباتهای همه منظوره بعلاوه نسخه توسعه یافته ٣٢ بیتی آنها یعنی

پشتیبانی می کنند. EDX,ECX,EBX,EAX

انتقال می دهند: ECX,BX,AX را به ثباتهای O دستورالعملهای زیر عدد

MOV AX,OO 2/MOV BH,OO 3/MOV ECX,OO

انباره اصلی ، در عملیاتی که مستلزم ورودی / خروجی و محاسبات زیاد هستند به کار : AX ثبات

استفاده کنند که کار آمدتری AX می روند . برای مثال دستورالعملهای ضرب،تقسیم و ترجمه از

تولید می کنند.

از آنجا که این ثبات تنها ثبات همه منظوره ایست که می تواند بعنوان یک اندیس برای : BX ثبات

BX توسعه آدرس دهی به کار رود به عنوان ثبات.... معروف است یکی دیگراز کار بردهای معمول

بکار گیری آن در انجام محاسبات است.

به عنوان ثبات شمارش معروف است . ممکن است حاوی مقداری برای کنترل تعداد CX:CX ثبات

می cx دفعات تکراری یک حلقه یا مقداری برای انتقال بیت ها به سمت چپ یا راست باشد، از

توان برای انجام محاسبات نیز استفاده کرد.

به عنوان ثبات داده معروف است.برخی از عملیات ورودی / خروجی نیاز به این DX:DX ثبات

با هم AX,DX ثبات دارند وعملیات ضرب وتقسیم که با اعداد بزرگ سروکار دارند از زوج ثابتهای

استفاده می کنند.

می توانید از هریک از این ثباتهای همه منظوره برای جمع وتفریق مقادیر ٨ بیتی، ١۶ بیتی و ٣٢ بیتی

استفاده کنید.

ثبات های اندیس:

برای آدرس دهی شاخص دار و استفاده در جمع وتفریق بکار می روند. DI,SI ثباتهای

ثبات اندیس منبع ۶بیتی در برخی از عملیات رشته ای مورد نیاز می باشد در این مورد : SI ثبات

مرتبط می باشد ٨٠٣٨۶ و پردازنده های پس از آن از یک ثبات توسعه یافته DS با ثبات SI ثبات

پشتیبانی می کنند. ESI ٣٢ بیتی به نام

ثبات اندیس مقصد ١۶ بیتی نیز برای انجام برخی عملیات رشته ای مورد نیاز می باشد. : DI ثبات

مرتبط می باشد. ES با ثبات DI ، در این مورد

(Flags) ثبات نشانه ها

نه بیت از ١۶ بیت ثبات نشانه ها در تمام پردازه های خانواده ٨٠٨۶ مشترک می باشد وضعیت

جاری کامپیوتر ونتایج حاصلاز پردازش را نشان می دهند بسیاری از دستورالعمل های مقایسه ای

ها را تغییر داده و برخی از دستورالعمل ها نیز برای تعیین عمل بعدی می flag وحسابی وضعیت

توانند این نشانه ها را امتحان کنند.

نشانه سرریزی) سر ریزی بیت مرتبه بالایی (سمت چپ ترین)راپس از عمل حسابی نشان می ) OF

دهد.

نشانه جهت) سمت چپ یا راست را برای انجام عملیات انتقال یا مقایسه داده های رشته ای ) DF

معین می کند.

نشانه وقفه)نشان می دهد که تمام وقفه های خارجی نظیر ورودی از صفحه کلیدباید مورد ) IF

پردازش قرار گرفته ویا صرف نظر شود.

نشانه تله) به پردازنده اجازه عملیات را در حالت تک مرحله ای می دهد. برنامه های اشکال ) TF

را برابر یک می کشد تا بتوانند برای امتحان کردن تاثیرات یک Flag این DEBVG دار نظیر

دستورالعمل بر روی ثبات ها و حافظه ، آن دستور العمل رابه تنهای اجرا کنید.

مثبت و 1 = منفی) = o) نشانه علامت) حاوی علامت نتیجه یک عمل حسابی است ) SF

یعنی نتیجه غیر zr=o) نشانه صفر) نتیجه یک عمل حسابی یا مقایسه ای را نشان می دهد ) ZF

یعنی نتیجه برابر صفر می باشد) zf= صفر بوده و 1

(نشانه رقم نقلی کمکی) حاوی یک رقم نقلی خروجی از بیت شماره ٣ از یک داده ٨ بیتی در

یک عمل حسابی ویژه می باشد. AF

نشانه توازن) توازن زوج یا فرد هشت بیت پایین نتیجه یک عمل ثابت را نشان می دهد . ) PF

نشانه رقم نقلی) حاوی رقم نقلی از یک بیت بالای(سمت چپ ترین بیت) بعد از انجام یک ) CF

عمل حسابی بوده ونیز حاوی آخرین بیت عملیات انتقال یا دوران می باشد.

ها در ثبات نشانه ها در مکانهای زیر قرار دارند. Flag

برای انجام CF,ZF,SF,OF: های که در برنامه نویسی زیاد به کار می روند عبارتند از Flag

برای تطبیق جهت عملیات رشته ای . DF عملیات مقایسه وحساب و

های می باشند که در عملیات داخلی پردازنده بکار flag ٨٠٢٨۶ وپردازنده های بعد از آن دارای

می روند وبا حالت محافظت شده کامپیوتر مرتبط می باشند .

mohsen_mahyar@yahoo.com

mo-mah.persian.blog.ir

 

   + MOHSEN GHASEMI - ۱۱:٥٩ ‎ب.ظ ; ۱۳۸٩/٦/٧