تحقیق درمورد اسمبلي  

به فروشگاه عظیم فایل خوش آمدید

محل لوگو

اشتراک در خبرنامه

جهت عضویت در خبرنامه لطفا ایمیل خود را ثبت نمائید

Captcha

آمار بازدید

  • بازدید امروز : 44
  • بازدید دیروز : 703
  • بازدید کل : 3598847

تحقیق درمورد اسمبلي


تحقیق درمورد اسمبلي

لینک خرید در پایین صفحه قرار دارد.

فایل آماده پرینت(با فرمت ورد)

تعداد صفحات:103

 آموزش اسمبلي

براي ياد گرفتن اسمبلي بايد بامبناهاي عدد نويسي ، ساختمان داخلي كامپيوتر
و برنامه نويسي آشنا باشيم .
ما برنامه هايمان را مستقيما با اسمبلر Macro Assembler خواهيم نوشت و گاها از Debug
استفاده خواهيم كرد . بعلاوه چون برنامه هاي حجيم نخواهيم نوشت قالب اكثر
رنامه هاي ما COM. خواهد بود .
براي شروع ابتدا نگاهي به حافظه ميكنيم :

حافظه و آدرس دهي

هر كامپيوتر مبتني بر 8086 داراي حداقل 640كيلوبايت حافظه است . اين 640
كيلوبايت به قطعات 64 كيلوبايتي تقسيم شده و مااين قطعات را "قطعه " يا Segment
ميناميم . هر سگمنت هم به خانه هاي تك بايتيديگري تقسيم شده است .

براي بدست آوردن مقدار يك بايت مشخص از حافظه مابايد عد مربوط به سگمنت و
همچنين شماره آن بايت در سگمنت ( كه آفست Offset ناميده ميشود ) را بدانيم .
مثلا اگر مقدار مورد نظر در قطعه 0030h(h( يعني عدددر مبناي 16 است ) و آفست 13C4h
باشد ما بايد قطعه اي كه شماره آن 0030h است رابيابيم و بعد در همان قطعه
مقدار باين شماره 13C4 را بخوانيم .
براي نمايشاين حالت بين عدد سگمنت و آفست علامت (:) قرار ميدهيم . يعني
ابتدا عدد مربوطبه قطعه را نوشته و سپس عدد آفست را مي آوريم :
Segment:Offset

مثال : 4D2F:َ9000 **
هميشه در آدرس دهي ها از اعداد مبناي 16 استفاده ميكنيم .

| | |

| CConvertional | 1 Segment=64K | | | | | Memory

| | | | | |
| | | |
| | | |


ثباتها Registers

رجيسترها مكان هائي از CPU هستند كه براي نگهداري داده ها (DATA) و كنترلاجراي
برنامه بكار ميروند . ما ميتوانيم آنها را مقدار دهي كرده و يا بخوانيم ويا
باتغيير محتواي آنها CPU را مجبور به انجام يك پروسه (رويه يا Procedure) كنيم

دسته اي از رجيسترها كه ما انها را "ثباتهاي همه كاره يا همه منظوره " ميخوانيم
و شامل AX/BX/CX/DX هستند ، براي انتقال مقادير بين رجيستر ها و CPU بكار ميروند.
اين ثباتها را ميتوانيم به هر نحوي تغيير دهيم و مقاديري را بهآنهاارسال كنيم .

ثباتهاي ديگري هم كه نام ميبريم كاربردهاي خاص خودشان رادارند و براي مقدار دهي
آنها بايد قواعد خاصي (كه توضيح خواهيم داد) را بكاربريم .

ميكند عدد كه در اين ثبات وجود دارد شماره يك قطعه است و CPU براييافتن DS : مخفف Data Segment . محل نگهداري متغييرها و ثابتهاي برنامه را مشخص
مقادير لازم به آن قطعه مراجعه ميكند . CS

: مخفف Code Segment است وآدرس قطعه اي كه برنامه در آن قرار گرفته را
نشان ميدهد . ES

: اين يكثبات كمكي است و معمولا در آدرس دهي ها شماره قطعه را نگهداري
ميكند . DI

DataIndex:Dبا DS/ESا مرتبط است و عدد آفست را نگهداري ميكند . IP

: اين رجيستر معلوم ميكند كه برنامه در حال اجرائي كه در CS قرار دارد از
كدام بايت قطقه (يعني كدام آفست ) شروع ميشود . به همين دليل هميشه اين دو
ثبات را با هم و بصورت CS:IP نشان ميدهند.
و ...

تمام رجيسترهايفوق 16 بيتي (دوبايتي ) هستند و اعداد دوبايتي را نگهداري ميكنند.
ثباتهاي همهمنظوره به دو نيم ثبات تك بايتي تقسيم ميشوند . بايت بالائي ب
ثباتهاي همهمنظوره به دو نيم ثبات تك بايتي تقسيم ميشوند . بايت بالائي ب ثبات AH/AL است :
| AH - 8 Bit | AL -8 Bit |


تمرين :
براي ديدن رجيسترهادر DOS، DEBUG، را اجرا كنيد و فرمان 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

 بياييد يك برنامه بنويسيم

 

در اين قسمت ميخواهيم با استفاده از مطالبي كه در بخشهاي قبليياد گرفتيم
برنامه اي بنويسيم كه كامل و قابل استفاده باشد . با اين برنامهميتوانيم
فلاپي ديسكهاي خودمان را با سرعت كپي كنيم ! امروز برنامه را به شكليمينويسيم كه
بتواند ديسكهاي 1.44 را بوسيله درايو A كپي كند . بيشتر نياز ما دركپي (تكثير)
ديسكها هم به همين شكل هست . با اينحال در قسمت بعدي نگارش (Version) جديدتري از
برنامه را مينويسيم و قابليت تشخيص نوع ديسك و قابليتمشخص كردن درايو را به آن
اضافه ميكنيم .
بهترين كاري كه ميتوانيم بكنيماينست كه بتوانيم داده هاي خوانده شده از
ديسك را در حافظه EMS بنويسيم (در ايننسخه روي هاردديسك مينويسيم ) . وقتي كه
نحوه كار را حافظه گسترش يافته (Extended Memory) را هم ياد گرفتيم ، برنامه
خود را كامل كرده و از آن بعنواناولين دستختمان در برنامه نويسي اسمبلي لذت
ميبريم .
ليست برنامه در زيرقرار دارد و توضيحات برنامه را روي آن ميبينيم
قبل از آن ياد آوري ميكنم كه هرديسك HD َ1.44 داراي دو طرف و در هر طرف 80 شيار
(Track) بوده و هر شيار هم به 18 بخش بنام قطاع (Sector) تقسيم ميشود . برنامه
ما بايد محتواي تمام اينقطاعها را خوانده و در فايلي روي ديسك سخت ذخيره كند.
سپس همين داده ها را ازفايل خوانده و مجددا روي ديسك جديد بنويسد.



طول هر قطاع 512 بايتاست EQU 512 SECTORSIZE
تعداد شيار ها 80 شيار (79- 0-) است EQU 79 MAXTRACK
هر ديسك دو طرف دارد EQU 2 NUMSIDES
تعداد سكتور در هر شيار 18 تااست EQU 118 SECTOR_PER_TRACK E
.MODEL SMALL
.CODE
ORG 100H
START:
JMP MAIN

  انتشار : ۲۵ اسفند ۱۳۹۶               تعداد بازدید : 289

برچسب های مهم

دانلود جزوه کامل ریاضی هفتم (تایپ شده)

دانلود جزوه کامل ریاضی هفتم (تایپ شده)

ریاضیات در بسیاری از زمینه‌ها مثل علوم طبیعی، مهندسی، پزشکی، اقتصاد و علوم اجتماعی یک علم ضروری است. با گذشت زمان، شاخه‌های کاملاً جدیدی در ریاضیات به‌وجود آمده‌اند؛ مثل نظریه بازی‌ها. ریاضی‌دانان در ریاضیات محض (مطالعه ریاضی با هدف کشف هرچه بیشتر رازهای خود آن) بدون اینکه ... ...

http://kia-ir.ir

به راحتی از ما خرید کنید به شما تضمین میکنیم که از فایل های ما راضی باشید

فید خبر خوان    نقشه سایت    تماس با ما