مقدمات زبان اسمبلی
Download
Report
Transcript مقدمات زبان اسمبلی
زبان اسمبلی
مقدمات
دسته بندی الیه ای زبان های
برنامه سازی
زبان
زبان
زبان
زبان
زبان
ماشین
اسمبلی
های میانی
های سطح باال
های بسیار سطح باال
امتیازات زبان اسمبلی
حجم اشغال حافظه کمتر و سرعت اجرای
باال
انجام کارهای فوق العاده بیشتر
سازگاری مناسب با برنامه هایی که
زمان بالدرنگ دارند
راحت تر نوشتن برنامه های مقیم در
حافظه
ملزومات زبان اسمبلی
کامپیوتر شخصی همساز با IBM
سیستم عامل DOSو آشانیی با فرامین آن
ویراستار برای تایپ و ویرایش کد
مترجم زبان اسمبلی ،اسمبلر ،مانند توربو
اسمبلر یا ماکرو اسمبلر
آشنایی با سیستم اعداد و ساختمان ماشین
آماده سازی و اجرای برنامه
تایپ در یک ویراستار متنی و ذخیره با پسوند .asm
اسمبل نمودن برنامه با اسمبر مانند توربو اسمبلر یا ماکرو
اسمبلر .فایل با پسوند .objساخته میشود
پیوند دادن برنامه با استفاده از پیوند دهنده .تبدیل .obj
به .exe
اجرای برنامه و رفع خطا در صورت وجود
شناسه
از عناصر برنامه اسمبلی میباشد :نام
برنامه،زیربرنامه،برچسب،عملوند
شناسه باید دارای نام باشد.
ترکیبی از حروف aتا zو Aتا ، Zارقام صفر تا 9و
کاراکتر هایی مانند @?,$,-,
نام شناسه نباید با ارقام شروع شود
از @ برای شروع نام استفاده نکنید.
حداکثر طول نام هر شناسه 31کاراکتر است.
قالب کلی دستورات
]عملوندها[ دستورالعمل
]توضیحات;[
دستورالعمل
.1
.2
دستوراتی که به کد زبان ماشین ترجمه می شوند.
دستوراتی که راهنمای اسمبلر نام دارند.
]شناسه[
دستور العمل دو عملوندی
عملوند < > ,عملوند مقصد< دستورالعمل
]توضیحات;[ >منبع
]شناسه[
عملوند مقصد جایی است که نتیجه عمل دستورالعمل باید در آنجا قرار می گیرد.
عملوند منبع جایی است که اطالعات مورد نیاز دستورالعمل در آنجا قرار می گیرد.
تعریف سگمنت ها
پارامترها
segmentنام سگمنت
...
endsنام سگمنت
پارامتر ها
.1
.2
.3
پارامتر تنظیم
پارامتر ترکیب
پارامتر کالس
segmentنام سگمنت
پارامتر [ ]پارامتر تنظیم[
]پارامتر کالس[ ]ترکیب
پارامتر های سگمنت – پارامتر تنظیم
تعیین مرز سگمنت از نقطه شروع
: BYTE آدرس سگمنت از هر نقطه ای از حافظه
: WORD آدرس سگمنت از هر نقطه ای از حافظه که آدرس آن زوج باشد
: PARA آدرس سگمنت از مرز پاراگراف ( جایی که بر 16قابل قسمت باشد)
: PAGE آدرس سگمنت از هر جایی که بر 256قابل قسمت باشد
اگر پارامتر تنظیم ذکر نشود پیش فرض سیستم PARAدر نظر گرفته میشود.
پارامتر های سگمنت – پارامتر
ترکیب
مشخص کننده پیوند سگمنت جاری با سایر سگمنت ها (پس از ترجمه برنامه)
:NONE به طور منطقی سگمنت از سگمنت های دیگر جدا است ولی ممکن است
به طور فیزیکی در کنار هم باشند .فرض میشود هر سگمنت آدرس پایه مخصوص به
خود را دارد.
:PUBLIC کنار هم قرار دادن سگمنت های PUBLICبا نام و کالس یکسان توسط
برنامه پیوند دهنده
:STACK برنامه پیوند دهنده پشته را عمومی در نظر می گیرد.حداقل یک پشته را در
نظر می گیرد .در صورت وجود چند پشته SP،به اولین پشته اشاره خواهد کرد.
:COMMON برنامه پیوند دهنده به سگمنت های با نام و کالس یکسان ،آدرس
یکسان می دهد.
: AT به صورت آدرس پاراگراف ATبه کار می رود که آدرس پاراگراف قبال باید تعریف
شده باشد.
پارامتر های سگمنت – پارامتر کالس
کمک کردن به پیوند دهنده جهت پیوند
سگمنت ها با نام مختلف
مشخص کردن کردن سگمنت ها
کنترل ترتیب سمگمنت ها
’public ‘data
’stack ‘stack
segment para
…
ends
segment para
…
ends
datasg
darasg
stacksg
stacksg
ویژگی های سگمنت کد و تعریف
PROCEDURE
حاوی دستور العمل های برنامه
far
حاوی یک یا چند procedure
proc
endp
نام رویه
…
نام رویه
سگمنت کدی که از یک رویه تشکیل شده است:
’none ‘code
segment para
proc far
…
endp
ends
codesg
pname
pname
codesg
تعیین اهداف هر سگمنت
بعد از تعیین سگمنت ها باید اهداف هر سگمنت را مشخص شود.
هر سگمنت به ثبات آن سگمنت مرتبط میشود.
از راهنمای( assume )directiveاستفاده میکنیم:
,سگمنت اضافی, es:سگمنت داده, ds:سگمنت کدassume cs:
سگمنت پشتهss:
تعیین اهداف هر سگمنت
stacksg
stacksg
datasg
darasg
codesg
proc1
proc1
codesg
segment
…
ends
segment
…
ends
segment
proc far
assume
…
ends
ends
para
stack ‘stack’
para
public ‘data’
para
‘code’
cs:codesg, ds:datasg, ss:stacksg
تعریف داده ها در سگمنت داده ها
با استفاده از دستور DB
جهت تعریف داده ها در برنامه اسمبلی باید آن ها را در
سگمنت داده ها قرار دهید.
دستور dbبرای داده های یک بایتی به کار می رود.
مقادی بازه اعداد چقدر است؟
شناسه
db
مقدار
;value is 00
;value is 80
;value is FF
0
-128
255
db
db
db
pl1
pl2
pq
تعریف داده ها در سگمنت داده ها
با استفاده از دستور DB
در dbمیتوان مقادیر کاراکتری و رشته ای را تعریف کرد.
تعریف کاراکتر از ‘ (کوتیشن تنها)
تعریف رشته از “ (کوتیشن دوتایی)
نکته :اگر رشته ای به کوتیشن دوتایی محصور شود ،وجود
کوتیشن تنها در آن بعنوان یک کاراکتر داده محسوب می شود.
’‘x
”“Jack’s book
”“my first code
db
db
db
str1
pl2
pq
تعریف داده ها در سگمنت داده ها
با استفاده از دستور DB
امکان تعریف چند مقدار در دستور dbوجود
دارد.
5, 15, 30
db
pl1
دستور فوق سه بایت از حافظه را تعریف می
کند.
مقادیر 05h,0fh,1ehرا در آن قرار می دهد.
تعریف داده ها در سگمنت داده ها
با استفاده از دستور DW
برای تعریف داده های یک کلمه ای
به کار می رود.
یک کلمه چند بایت است؟ بازه ی
شناسه
dwچقدر
dwاین
قابل قبول برای
w1
مقدار dw
-32768
;value is
است؟
;value is
;value is
65535
-10000
8000
w2
dw
FFFF
w3
dw
FC18
تعریف داده ها در سگمنت داده ها
با استفاده از دستور DW
اگر برای تعریف کاراکتر از دستور dw
استفاده کنیم کاراکتر مورد نظر در بایت
کم ارزش قرار می گیرد و محتویات بایت با
ارزش 00خواهد شد.
در صورت تعریف رشته با دستور ،dwرشته
باشند.
کاراکتر
2
باید
هداکثر
های
str1 dw
’‘x
”“no
’‘ok
dw
dw
str2
str3
تعریف داده ها در سگمنت داده ها
با استفاده از دستور DW
امکان تعریف چند مقدار در دستور dwوجود
.
دارد
pl1
dw
5, 15, 30
دستور فوق چهار کلمه از حافظه را تعریف می
کند.
مقادیر 05h,0fh,1ehرا در آن قرار می دهد.
تعریف داده ها در سگمنت داده ها
با استفاده از دستور DW
درداخل یک کلمه بایت ها به ترتیب معکوس ذخیره
می شوند.
بایت کم ارزش در آدرس پایین تر قرار دارد.
مقدار 1234h
5, 15, 30
دستور فوق چهار کلمه از حافظه را تعریف می کند.
مقادیر 05h,0fh,1ehرا در آن قرار می دهد.
dw
pl1