تبلیغات
دانلود سورس پروژه های مختلف برنامه نویسی، آموزش برنامه نویسی - ثبات ها در پردازنده 8086
دانلود سورس پروژه های مختلف برنامه نویسی، آموزش برنامه نویسی
دانلود رایگان سورس پروژه
سایت برنامه نویسی تک کدر takcoder.ir


آموزش برنامه نویسی با استفاده از نوین ترین روش و ارائه پروژه های نمونه و مجموعه عظیم سورس کدهای آماده برای شما دوستان

مدیر سایت : Yahya Taherzadeh
نویسندگان
نظرسنجی
زبان برنامه نویسی مورد علاقه شما؟






آموزش اسمبلی: جلسه اول

ساختمان پردازنده 8086 / 8088 از دو دید قابل بررسی می باشد:

1. سخت افزاری.

2. نرم افزاری.

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

 

شناخت ثبات ها

 الف) همه منظوره :

1.     AX

2.     BX

3.     CX

4.     DX

ب) ثبات های قطعه :

1.     CS

2.     DS

3.     ES

4.     SS

ج) ثبات های شاخص :

1.     SI

2.     DI

 د) ثبات های پشته :

1.     BP

2.     SP

       ی) ثبات های اشاره گر دستورالعمل  IP

       و) ثبات پرچم

.......

پردازنده 8086 دارای 14 ثبات 16بیتی برنامه نویسی است. ثبات های دیگری نیز وجود دارد که از دید برنامه نویس پنهان است.

  

الف) همه منظوره General Purpose Register :

 

ثبات AX (انباره Accumulator):

نزدیک ترین ثبات به قسمت ALU است، به همین دلیل سرعت محاسباتی نسبت به بقیه ثبات ها بیشتر است، اکثر عملیات ریاضی در این ثبات انجام می گیرد، به عنوان یک انباره به طور ضمنی در عملیات ورودی و خروجی استفاده می شود.

ADD AX,4

 

ثبات BX (پایه BASE):

این ثبات علاوه بر همه منظوره بودن، در برخی روش های آدرس دهی نقش ثبات پایه را بازی می کند، به غیر از عملیات ریاضی می تواند به عنوان Offset متعلق به بخش داده باشد.

ADD BX,4      :  BL=BL+4

Mov al,[BX]   :  al = Value[DS*10+BX]

ثبات CX (شمارنده Counter):

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

ثبات DX (داده DATA):

این ثبات در بعی از دستورالعمل های محاسباتی مانند ضرب و تقسیم، نگهدارنده بخشی از نتایج است.

 

ب) ثبات های قطعه Segment Register :

آدرس آغاز هر Segment در این ثبات ها نگهداری می شود.

CS (Code Segment) : آدرس کد سگمنت را نگهداری می کند

DS (Data Segment) : آدرس سگمنت داده را نگهداری می کند

SS (Stack Segment) : آدرس سگمنت پشته را نگهداری می کند

ES (Extra Segment) : آدرس سگمنت Extra (اضافی) را نگهداری می کند

آدرس ها در 8086 ، 20 بیتی هستند یعنی برای نگهداری یک آدرس به 20 بیت یا 5 رقم هگز نیاز داریم، حال چگونه می توان یک آدرس 20 بیتی را در ثبات های 16 بیتی ذخیره کرد؟

برای حل این مشکل سگمنت ها از نقاطی شروع می شوند که چهار بیت کم ارزش آدرس آن نقاط صفر باشد، به عبارت دیگر سگمنت ها از مرز پاراگراف شروع می شوند.

مرز پاراگراف : نقاطی از حافظه که در آنها بر 10 هگز یا 16 دهدهی قابل قسمت باشند.، یعنی چهار بیت کم ارزش صفر و یا اولین رقم هگز آدرس آن نقطه صفر باشد.

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

Real Adress = Segment * 10Hex + Offset

نکته : مرز پاراگراف 16 بایت به 16 بایت تکرار می شود.

 

مثال : آدرس واقعی مقابل را پیدا کنید

42B7:3FDC

42B7 * 10 + 3FDC = 46B5C

 

 

ج) ثبات های شاخص Index Register :

SI  (Source Index) : به عنوان اندیس جهت دسترسی به عناصر داده های ساختاری است

 

DI  (Destanation Index) به عنوان اندیس جهت دسترسی به آدرس رشته ها در دستورات پردازش رشته نیز استفاده می شود.

از این ثبات ها به منظور دسترسی به داده ها در روش آدرس دهی شاخص دار مورد استفاده قرار می گیرد.

د) ثبات های پشته Pointer Register :

BP (Base Pointer) از ابتدا به انتها

SP (Stack Pointer) از انتها به ابتدا

از این ثبات ها به منظور دسترسی به داده ها در ناحیه stack memory استفاده می شود.

این ثبات ها به عنوان افست یا شاخص چهت دسترسی به فضای پشته به کار برده می شود.

* از پشته می توان به عنوان یک قطعه داده ای نیز استفاده نمود.

 

ی) ثبات های اشاره گر دستورالعمل:   PC/IP

این ثبات همواره مقدار offset دستورالعمل در حال اجراست (در ناحیه Code segment)

Real Adress = Cs * 10 Hex + IP

PC/IP مخفف Instruction Pointer / Program Counter می باشد.

 

و) ثبات پرچم (FLAG)

* در بعضی کتاب ها این ثبات با نام P.W.S (Program Word Status) شناخته می شود.

این ثبات در هر لحظه آخرین وضعیت اجرای دستورالعمل را نشان می دهد.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

C

*

P

*

A

*

Z

S

T

I

D

O

*

*

*

*

 

CF (Carry Flag) :

اگر دستورالعمل منجر به نتیجه ای شود که در آن رقم نقلی یک باشد، این بیت یک خواهد شد در غیر اینصورت صفر می شود.


PF (Parity Flag) :

از این بیت برای بالا بردن اطمینان نسبت به انتقال داده ها بین اجزاء سیستم استفاده می شود، در این صورت که همواره تعداد یک ها در یک بایت باید تعداد فردی باشد.

PF با توجه به این موضوع مقدار می گیرد یعنی اگر نتیجه دارای تعداد فرد یک باشد بیت P مقدار صفر را می گیردو اگر تعداد زوج یک باشد بیت P، مقدار یک می گیرد.


AF (Auxlary Flag) :

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


ZF (Zero Flag) :

اگر نتیجه حاصل صفر باشد این بیت یک و اگر نتیجه حاصل غیر صفر باشد این بیت صفر می شود.


SF (Sign Flag) :

اگر نتیچه حاصل منفی باشد این بیت یک و اگر نتیجه حاصل مثبت شود این بیت صفر خواهد شد.


TF (Trap Flag) :

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


IF (Intrupt Flag) :

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


DF (Direct Flag) :

این بیت نشان دهنده جهت پردازش است (به خصوص در دستورالعمل های رشته ای)

در دستورالعمل های پردازش رشته اگر این بیت صفر باشد بدین معنی است که پردازش از ابتدا به انتها (افزایشی) می باشد و اگر این بیت یک باشد بدین معنی است که پردازش از انتها به ابتدا (کاهشی) است.


OF (Overflow Flag) :

اگر نتیجه حاصل Over Flow باشد، این بیت یک، در غیر اینصورت صفر خواهد بود.


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





نوع مطلب : آموزش، اسمبلی| زبان ماشین، 
برچسب ها : برنامه نویسی با اسمبلی، آموزش زبان های برنامه نویسی، آموزش، کدهای اسمبلی، برنامه نویسی آسان، دانلود آموزش اسمبلی، دانلود رایگان،
لینک های مرتبط :
Yahya Taherzadeh
پنجشنبه 21 آذر 1392
شنبه 29 اردیبهشت 1397 10:19 ق.ظ
Hi there! I simply wish to give you a huge thumbs up
for the excellent information you've got right here on this post.
I'll be returning to your site for more soon.
شنبه 25 شهریور 1396 08:13 ب.ظ
Howdy, There's no doubt that your site could possibly be having
browser compatibility problems. Whenever I take a look at your blog in Safari, it looks
fine but when opening in Internet Explorer, it's got some overlapping
issues. I merely wanted to give you a quick heads
up! Apart from that, great website!
سه شنبه 17 مرداد 1396 08:57 ق.ظ
Hi there friends, how is all, and what you want to say
about this piece of writing, in my view its really remarkable in support of me.
سه شنبه 13 تیر 1396 12:26 ق.ظ
I drop a leave a response each time I especially enjoy a article on a site
or I have something to valuable to contribute to the conversation. Usually it is triggered by the sincerness communicated
in the post I read. And on this article دانلود سورس پروژه های مختلف برنامه نویسی،
آموزش برنامه نویسی - ثبات ها در
پردازنده 8086. I was excited enough to drop a leave a responsea response ;
-) I actually do have 2 questions for you if it's okay.

Is it only me or do a few of the remarks appear like written by brain dead folks?

:-P And, if you are writing at additional places, I would
like to follow everything fresh you have to post.
Could you make a list the complete urls of your community sites like your twitter feed, Facebook page or
linkedin profile?
سه شنبه 13 تیر 1396 12:23 ق.ظ
I drop a leave a response each time I especially enjoy a article on a site
or I have something to valuable to contribute to the conversation. Usually it is triggered by the sincerness communicated
in the post I read. And on this article دانلود سورس پروژه های مختلف برنامه نویسی،
آموزش برنامه نویسی - ثبات ها در
پردازنده 8086. I was excited enough to drop a leave a responsea response ;
-) I actually do have 2 questions for you if it's okay.

Is it only me or do a few of the remarks appear like written by brain dead folks?

:-P And, if you are writing at additional places, I would
like to follow everything fresh you have to post.
Could you make a list the complete urls of your community sites like your twitter feed, Facebook page or
linkedin profile?
یکشنبه 11 تیر 1396 07:51 ق.ظ
Loving the info on this website, you have done outstanding job on the posts.
شنبه 3 تیر 1396 03:50 ب.ظ
As the admin of this web site is working, no doubt very quickly it will be renowned,
due to its quality contents.
چهارشنبه 31 خرداد 1396 01:06 ب.ظ
Inspiring quest there. What occurred after? Thanks!
جمعه 29 اردیبهشت 1396 02:29 ق.ظ
Hello there, I found your site by the use of Google at the same time as looking for a related subject, your web site came up, it
appears to be like good. I've bookmarked it in my google bookmarks.

Hello there, just turned into alert to your blog thru Google, and located that it's truly informative.
I am gonna watch out for brussels. I will appreciate for those who proceed this in future.
Numerous people can be benefited from your writing. Cheers!
دوشنبه 18 اردیبهشت 1396 02:06 ق.ظ
It's really very complicated in this active life to listen news
on TV, so I just use the web for that reason, and get the hottest information.
چهارشنبه 13 اردیبهشت 1396 01:45 ب.ظ
This is my first time pay a quick visit at here and i am really happy
to read all at alone place.
جمعه 1 اردیبهشت 1396 02:29 ب.ظ
If you are going for most excellent contents like myself,
only visit this web site all the time because it gives quality contents, thanks
یکشنبه 27 فروردین 1396 07:24 ب.ظ
Thanks very nice blog!
جمعه 25 فروردین 1396 07:36 ب.ظ
Great web site. A lot of helpful info here. I am sending it to a few friends ans additionally sharing in delicious.

And naturally, thanks in your sweat!
جمعه 18 فروردین 1396 06:09 ب.ظ
I'll immediately clutch your rss as I can not to find your e-mail subscription hyperlink or newsletter service.
Do you have any? Please let me realize so that I may just
subscribe. Thanks.
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر




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