SlideShare a Scribd company logo
1 of 148
Download to read offline
Machine & Assembly Language
‫اسمبلی‬ ‫و‬ ‫ماشین‬ ‫زبان‬
‫خدا‬ ‫نام‬ ‫به‬
1
‫چهارم‬ ‫فصل‬
‫اسمبلی‬ ‫زبان‬ ‫به‬ ‫نویسی‬ ‫برنامه‬
2
‫اسمبلی‬ ‫برنامه‬ ‫قطعات‬
3
ً‫ال‬‫معمو‬‫یک‬‫برنامه‬‫اسمبلی‬‫شامل‬‫حداقل‬‫سه‬‫قطعه‬‫پشته‬،‫قطعه‬‫داده‬‫و‬‫قطعه‬‫کد‬‫است‬.‫شبه‬‫دستورات‬
SEGMENTS‫و‬ENDS‫به‬‫اسمبلر‬‫شروع‬‫و‬‫پایان‬‫یک‬‫قطعه‬‫را‬‫اعالم‬‫داشته‬‫و‬‫قالب‬‫زیر‬‫را‬‫دارند‬.
‫اسمبلی‬ ‫برنامه‬ ‫قطعات‬
4
‫برچسب‬(Label)‫باید‬‫از‬‫مقررات‬‫نامگذاری‬‫تبعیت‬‫کند‬.‫و‬‫نیز‬‫باید‬‫منحصر‬‫به‬‫فرد‬‫باشد‬.‫میدان‬(Option)
‫اطالعات‬‫مهمی‬‫را‬‫به‬‫اسمبلر‬‫برای‬‫سازماندهی‬‫می‬‫دهد‬‫ولی‬‫الزامی‬‫نیست‬.‫برچسب‬ENDS‫باید‬‫با‬‫برچسب‬
‫رهنمون‬SEGMENT‫یکسان‬‫باشد‬.
‫اسمبلی‬ ‫زبان‬ ‫در‬ ‫گذاری‬ ‫نام‬ ‫قوانین‬
5
‫هر‬‫نام‬‫باید‬‫منحصر‬‫به‬‫فرد‬‫باشد‬.
‫نام‬‫های‬‫بکار‬‫رفته‬‫برای‬‫برچسب‬‫برنامه‬‫های‬‫اسمبلی‬‫متشکل‬‫از‬‫حروف‬‫الفبا‬‫به‬‫هر‬‫دو‬‫صورت‬‫بزرگ‬‫و‬‫کو‬،‫چک‬‫ارقام‬
0‫تا‬9‫و‬‫کاراکترهای‬‫خاص‬‫مثل‬‫عالمت‬?,.,@,_,$‫هستند‬.
‫اولین‬‫کاراکتر‬‫نام‬‫باید‬‫یک‬‫کاراکتر‬‫الفبایی‬‫یا‬‫کاراکتر‬‫خاص‬‫باشد‬.‫این‬‫مکان‬‫نمی‬‫تواند‬‫به‬‫یک‬‫رق‬‫م‬‫اختصاص‬‫یابد‬.
.‫فقط‬‫به‬‫عنوان‬‫اولین‬‫کاراکتر‬‫بکارگرفته‬‫می‬،‫شود‬‫ولی‬‫چنین‬‫کاری‬‫پیشنهاد‬‫نمی‬‫شود‬‫زیرا‬‫در‬‫ویرای‬‫ش‬‫های‬‫اخیر‬
MASM‫دارای‬‫کلمات‬‫رزروی‬‫است‬‫که‬‫با‬‫آن‬‫شروع‬‫می‬‫گردد‬.
‫نام‬‫ها‬‫می‬‫توانند‬‫تا‬31‫کاراکتر‬‫طول‬‫داشته‬‫باشند‬.
‫اسمبلی‬ ‫ساده‬ ‫برنامه‬ ‫یک‬
6
‫قبل‬ ‫مثال‬ ‫پشته‬ ‫قطعه‬ ‫شرح‬
7
‫قطعه‬‫پشته‬‫در‬‫مثال‬‫قبل‬‫حاوی‬‫یک‬‫خط‬DB 64 DUP(?)‫است‬.‫این‬‫رهنمون‬64‫بایت‬‫از‬‫حافظه‬‫را‬
‫رزرو‬‫می‬‫کند‬.
‫قطعه‬ ‫شرح‬‫مثال‬ ‫داده‬‫قبل‬
8
‫در‬‫قطعه‬‫داده‬‫سه‬‫قلم‬‫داده‬DATA1,DATA2,SUM‫بصورت‬DB‫تعریف‬‫شده‬‫اند‬.‫اقالم‬‫داده‬‫تعریف‬
‫شده‬‫در‬‫قطعه‬‫داده‬‫بوسیله‬‫برچسبشان‬‫در‬‫قطعه‬‫کد‬‫دستیابی‬‫می‬‫شوند‬.
‫قبل‬ ‫مثال‬ ‫کد‬ ‫قطعه‬ ‫شرح‬
9
‫اولین‬‫خط‬‫قطعه‬‫کد‬‫پس‬‫از‬‫رهنمون‬SEGMENT،‫شبه‬‫دستور‬PROC‫می‬‫باشد‬.‫یک‬‫رویه‬
(Procedure)‫گروهی‬‫از‬‫دستورات‬‫است‬‫که‬‫برای‬‫انجام‬‫عمل‬‫خاصی‬‫در‬‫نظر‬‫گرفته‬‫شده‬‫اند‬.‫یک‬‫قطعه‬‫ک‬‫د‬
‫ممکن‬‫است‬‫فقط‬‫از‬‫یک‬‫رویه‬‫سازمان‬‫یافته‬‫باشد‬‫و‬‫یا‬ً‫ال‬‫معمو‬‫از‬‫چند‬‫رویه‬‫کوچکتر‬‫تشکیل‬‫بشود‬‫ت‬‫ا‬‫ساختار‬
‫بهتری‬‫داشته‬‫باشد‬.
‫رویه‬
10
‫هر‬‫رویه‬‫باید‬‫دارای‬‫یک‬‫نام‬‫باشد‬‫که‬‫بوسیله‬‫رهنمون‬PROC‫تعریف‬‫می‬‫شود‬.‫بدنبال‬‫آن‬‫دستورات‬‫زبان‬‫اسمبلی‬
‫و‬ً‫ا‬‫نهایت‬‫رهنمون‬ENDP‫می‬‫آید‬.‫عبارات‬PROC‫و‬ENDP‫باید‬‫دارای‬‫برچسب‬‫یکسان‬‫باشند‬.‫رهنمون‬
PROC‫می‬‫تواند‬‫انتخاب‬‫نوع‬FAR(‫دور‬)‫یا‬NEAR(‫نزدیک‬)‫را‬‫داشته‬‫باشد‬.
‫دستور‬ ‫کلی‬ ‫شکل‬PROC
11
‫شکل‬‫کلی‬‫دستور‬PROC‫بصورت‬‫زیر‬‫است‬:
‫صفت‬Attribute‫می‬‫تواند‬FAR‫یا‬NEAR‫باشد‬.
FAR‫و‬NEAR
12
‫سابروتین‬‫ها‬‫به‬‫دوسته‬‫داخلی‬‫و‬‫خارجی‬‫تقسیم‬‫می‬‫شوند‬.‫اگر‬‫روال‬‫فقط‬‫از‬‫داخل‬‫سگمنتی‬‫که‬‫این‬‫روال‬‫ت‬‫عریف‬
‫شده‬‫قابل‬‫فراخوانی‬،‫باشد‬‫روال‬‫یا‬‫سابروتین‬‫را‬‫داخلی‬،‫نامند‬‫و‬‫در‬‫شبه‬‫دستور‬PROC‫باید‬‫از‬‫صفت‬NEAR
‫استفاده‬‫شود‬.‫در‬‫صورتی‬‫که‬‫روال‬‫تعریف‬‫شده‬‫بتواند‬‫از‬‫سگمنت‬‫های‬‫دیگر‬‫نیز‬‫فراخوانی‬،‫شود‬‫آنگاه‬‫روال‬‫را‬‫خارجی‬
‫نامند‬‫و‬‫در‬‫شبه‬‫دستور‬PROC‫باید‬‫صفت‬FAR‫مورد‬‫استفاده‬‫قرار‬‫گیرد‬.
‫نکته‬
13
‫در‬‫شبه‬‫دستور‬PROC‫اگر‬‫صفت‬‫قید‬،‫نشود‬‫اسمبلر‬‫صفت‬NEAR‫را‬‫به‬‫طور‬‫پیش‬‫فرض‬‫در‬‫نظر‬‫می‬
‫گیرد‬.
‫رهنمون‬ASSUME
14
‫شبه‬‫دستور‬ASSUME‫ارتباط‬‫بین‬‫نام‬‫هر‬‫سگمنت‬،‫و‬‫ثبات‬‫های‬‫سگمنت‬‫را‬‫برقرار‬‫می‬‫کند‬.‫شبه‬‫دس‬‫تور‬
ASSUME‫در‬‫سگمنت‬‫کد‬‫بالفاصله‬‫قبل‬‫از‬‫شبه‬‫دستور‬PROC‫قرار‬‫می‬،‫گیرد‬‫که‬‫ثبات‬‫های‬‫سگمنت‬
‫را‬‫برابر‬‫با‬‫نام‬‫سگمنتی‬‫که‬‫در‬‫برنامه‬‫بکار‬‫رفته‬‫قرار‬‫دهد‬.‫ساختار‬‫این‬‫شبه‬‫دستور‬‫به‬‫صورت‬‫زیر‬‫ا‬‫ست‬.
‫رهنمون‬ASSUME
15
‫عبارت‬ASSUME‫به‬‫این‬‫دلیل‬‫الزم‬‫است‬‫که‬‫در‬‫یک‬‫برنامه‬‫به‬‫زبان‬‫اسمبلی‬‫ممکن‬‫است‬‫چندین‬‫قطعه‬‫ک‬،‫د‬‫یک‬
‫یا‬‫چندین‬‫قطعه‬‫داده‬‫و‬‫بیش‬‫از‬‫یک‬‫قطعه‬‫پشته‬‫وجود‬‫داشته‬‫باشد‬‫ولی‬‫هر‬‫بار‬‫فقط‬‫یکی‬‫از‬‫آن‬‫ها‬‫بوسیل‬‫ه‬CPU
‫آدرس‬‫دهی‬‫می‬‫شود‬‫زیرا‬‫هر‬‫بار‬‫فقط‬‫یکی‬‫از‬‫هر‬‫نوع‬‫ثبات‬‫قطعه‬‫در‬CPU‫قابل‬‫دستیابی‬‫است‬.‫بنابراین‬
ASSUME‫به‬‫اسمبلی‬‫می‬‫گوید‬‫که‬‫کدام‬‫قطعات‬‫بوسیله‬‫رهنمون‬‫های‬‫تعریف‬‫شده‬‫بوسیله‬SEGMENT
‫باید‬‫استفاده‬‫شوند‬.
‫نکته‬
16
‫هنگامی‬‫که‬‫سیستم‬‫عامل‬‫کنترل‬‫را‬‫به‬‫برنامه‬‫انتقال‬‫می‬‫دهد‬‫مقادیری‬‫را‬‫به‬‫ثبات‬‫های‬CS‫و‬SS‫اختصاص‬
‫می‬‫دهد‬.‫مقدار‬DS(‫و‬ES‫اگر‬‫بکار‬‫رفته‬‫باشد‬)‫باید‬‫توسط‬‫برنامه‬‫نویس‬‫مقدار‬‫دهی‬‫اولیه‬‫شود‬.
‫مثال‬:‫عدد‬ ‫سه‬ ‫جمع‬ ‫برنامه‬
17
‫قبل‬ ‫مثال‬ ‫اجرای‬ ‫نتیجه‬
18
‫پشته‬ ‫قطعه‬ ‫تعریف‬
19
‫قطعه‬‫پشته‬‫ای‬‫که‬‫در‬‫زیر‬‫نشان‬‫داده‬‫شده‬‫است‬‫شامل‬‫یک‬‫خط‬‫است‬‫که‬‫این‬‫رهنمون‬64‫بایت‬‫از‬‫حافظه‬‫را‬
‫رزرو‬‫می‬‫کند‬.
‫ها‬ ‫داده‬ ‫ساختمان‬(Data Structure)
20
‫ساختمان‬‫داده‬،‫ها‬‫روش‬‫های‬‫ذخیره‬‫داده‬‫ها‬‫در‬‫کامپیوتر‬‫با‬‫هدف‬‫دسترسی‬‫آسان‬‫تر‬‫و‬‫بهینه‬‫تر‬‫است‬‫در‬
‫حالیکه‬‫الگوریتم‬‫روشی‬‫به‬‫منظور‬‫حل‬‫مسئله‬‫به‬‫وسیله‬‫کامپیوتر‬‫است‬.
The Cathedral and the Bazaar
21
‫ساختمان‬‫داده‬‫ی‬‫خوب‬‫و‬‫برنامه‬‫ضعیف‬‫بسیار‬‫بهتر‬‫از‬‫برنامه‬‫خوب‬‫و‬‫ساختمان‬‫داده‬‫بی‬‫ارزش‬‫کار‬‫کند‬‫می‬.
‫بروکس‬:"‫اگر‬‫خواهی‬‫می‬‫مرا‬‫گیج‬،‫کنی‬‫برنامه‬‫ات‬‫را‬‫به‬‫من‬‫نشان‬‫بده‬‫ولی‬‫ساختمان‬‫داده‬‫ات‬‫برنامه‬‫را‬‫پنهان‬‫کن‬.‫اما‬‫اگر‬‫ساختم‬‫ان‬
‫داده‬‫ات‬‫برنامه‬‫را‬‫به‬‫من‬‫نشان‬،‫دهی‬‫اغلب‬‫دیگر‬‫نیازی‬‫به‬‫دیدن‬‫کد‬‫ات‬‫برنامه‬‫ندارم؛‬‫همه‬‫چیز‬‫واضح‬‫و‬‫مشخص‬‫است‬."
‫ها‬ ‫داده‬ ‫ساختمان‬
22
ِ‫ن‬‫داد‬‫سازمان‬‫ها‬‫داده‬‫به‬‫یک‬‫طریق‬‫خاص‬‫و‬‫بر‬‫ی‬‫پایه‬‫مدل‬‫منطقی‬‫یا‬‫ریاضی‬‫که‬‫به‬‫منظور‬‫ی‬‫استفاده‬‫بهی‬‫نه‬‫از‬
‫ها‬‫داده‬‫صورت‬‫گیرد‬‫می‬‫را‬‫یک‬‫داده‬‫ساختار‬‫گویند‬‫می‬.‫داده‬‫ها‬‫ساختار‬‫انواع‬‫گوناگونی‬‫دارند‬‫که‬‫هر‬‫کدام‬‫من‬‫اسب‬
‫های‬‫برنامه‬‫مختلفی‬‫هستند‬.
‫پشته‬ ‫داده‬ ‫ساختمان‬(Stack)
23
‫در‬‫حقیقت‬،‫پشته‬‫یکی‬‫از‬‫سه‬‫بخش‬‫تخصیص‬‫یافته‬‫به‬‫یک‬‫برنامه‬‫در‬‫حال‬‫اجرا‬‫در‬‫حافظه‬(RAM)‫باشد‬‫می‬.
‫سیاست‬LIFO (Last In First Out)‫اساس‬‫کار‬‫پشته‬‫را‬‫تشکیل‬‫می‬،‫دهد‬‫مفهوم‬‫آن‬‫این‬‫است‬‫که‬‫آخرین‬
‫داده‬‫ذخیره‬‫شده‬‫در‬،‫پشته‬‫نخستین‬‫ای‬‫داده‬‫است‬‫که‬‫بازیابی‬‫شود‬‫می‬.
‫است؟‬ ‫الزم‬ ‫پشته‬ ‫چرا‬
24
‫پشته‬‫بخشی‬‫از‬‫حافظه‬‫نوشتن‬/‫خواندن‬(RAM)‫است‬‫که‬‫بوسیله‬CPU‫برای‬‫ذخیره‬‫موقت‬‫اطالعات‬‫بکار‬‫می‬
‫رود‬.CPU‫به‬‫این‬‫ناحیه‬‫ذخیره‬‫سازی‬‫نیاز‬‫دارد‬‫زیرا‬‫تعداد‬‫ثبات‬‫ها‬‫محدود‬‫است‬(‫امکان‬‫افزایش‬‫تعداد‬‫ثبا‬‫ت‬‫ها‬
‫به‬‫دلیل‬‫باالتر‬‫رفتن‬‫هزینه‬‫ساخت‬‫و‬‫مصرف‬‫بیشتر‬،‫ترانزیستور‬‫ممکن‬‫نیست‬).‫بنابراین‬‫برای‬‫ذخ‬‫یره‬‫موقت‬‫و‬‫امن‬
‫اطالعات‬‫باید‬‫محلی‬‫برای‬CPU‫در‬‫نظر‬‫گرفته‬‫شود‬.
‫پشته‬ ‫ایراد‬
25
‫مهمترین‬‫عیب‬‫پشته‬‫زمان‬‫دستیابی‬‫آن‬‫است‬.‫چون‬‫پشته‬‫در‬RAM‫قرار‬،‫دارد‬‫زمان‬‫دستیابی‬‫آن‬‫بسیار‬
‫طوالنی‬‫تر‬‫از‬‫ثبات‬‫است‬.
‫پشته‬ ‫به‬ ‫دستیابی‬ ‫نحوه‬
26
‫پشته‬‫بخشی‬‫از‬RAM‫است‬‫و‬‫باید‬‫بوسیله‬‫ثبات‬‫هایی‬‫در‬‫داخل‬CPU‫به‬‫آن‬‫اشاره‬‫شود‬.‫دو‬‫ثبات‬‫اصلی‬
‫برای‬‫دستیابی‬‫به‬‫پشته‬‫عبارتند‬‫از‬‫ثبات‬SS(‫قطعه‬‫پشته‬)‫و‬‫ثبات‬SP(‫اشاره‬‫گر‬‫پشته‬).
‫پشته‬ ‫به‬ ‫دستیابی‬ ‫نحوه‬
27
‫هر‬‫ثبات‬‫درون‬80x86(‫بجز‬‫ثبات‬‫های‬‫قطعه‬‫و‬SP)‫قابل‬‫ذخیره‬‫سازی‬‫در‬‫پشته‬‫و‬‫بازیابی‬‫آن‬‫به‬CPU‫است‬.
‫ذخیره‬‫یک‬‫ثبات‬‫در‬‫پشته‬‫را‬‫درج‬‫و‬‫بارکردن‬‫محتوای‬‫پشته‬‫را‬‫در‬CPU‫بازیافت‬‫می‬‫گویند‬.‫وظیفه‬SP‫هنگام‬
‫اجرای‬‫درج‬‫و‬‫بازیافت‬‫خیلی‬‫حساس‬‫است‬.‫در‬80x86‫ثبات‬‫اشاره‬‫گر‬‫پشته‬SP‫به‬‫مکان‬‫حافظه‬‫جاری‬‫بکار‬‫رفته‬
‫در‬‫باالی‬‫پشته‬‫اشاره‬‫می‬‫کند‬‫و‬‫به‬‫محض‬‫درج‬‫کاهش‬‫می‬‫یابد‬.‫برعکس‬‫هنگام‬‫بازیافت‬‫پشته‬‫به‬CPU،‫این‬‫اشاره‬‫گر‬
‫افزایش‬‫می‬‫یابد‬.
‫دستور‬PUSH‫پشته‬ ‫در‬
28
‫برای‬‫قراردادن‬‫عنصری‬‫در‬‫پشته‬‫از‬‫دستورالعمل‬PUSH‫استفاده‬‫می‬‫کنیم‬.
 PUSH - stores 16 bit value in the stack.
‫توجه‬
29
‫ثبات‬SS‫آدرس‬‫شروع‬‫سگمنت‬‫پشته‬‫را‬‫نگهداری‬‫می‬‫کند‬.
‫در‬‫آغاز‬،‫کار‬SP‫حاوی‬‫اندازه‬‫پشته‬‫است‬‫و‬‫به‬‫قبل‬‫از‬‫انتهای‬‫پشته‬‫اشاره‬‫می‬‫کند‬.‫نحوه‬‫ذخیره‬‫داده‬‫ها‬‫در‬‫سگمنت‬
،‫پشته‬‫متفاوت‬‫از‬‫سایر‬‫سگمنت‬‫ها‬‫است‬‫به‬‫طوری‬‫که‬‫داده‬‫ها‬‫از‬‫باالترین‬‫آدرس‬‫به‬‫پایین‬‫ترین‬‫آدرس‬‫ذخیره‬‫م‬‫ی‬‫شوند‬.
‫بخشی‬‫از‬‫پشته‬‫که‬‫به‬‫رویه‬‫ای‬‫اختصاص‬‫می‬‫یابد‬‫تا‬‫داده‬‫های‬‫آن‬‫رویه‬‫در‬‫آن‬‫ذخیره‬،‫شوند‬‫قاب‬‫پشته‬(stack
frame)‫نامیده‬‫می‬‫شود‬.
‫ثبات‬‫هایی‬‫که‬‫در‬‫پشته‬push‫می‬‫کنیم‬‫باید‬16‫بیتی‬‫باشند‬.‫با‬‫ثبات‬‫های‬8‫بیتی‬‫امکان‬‫پذیر‬‫نیست‬(al, ah,…).
‫مثال‬
30
‫مثال‬
31
‫دستور‬POP
32
‫برای‬‫حذف‬‫عنصری‬‫از‬‫پشته‬‫از‬‫دستور‬POP‫استفاده‬‫می‬‫شود‬.
‫مثال‬
33
POP AX
‫مثال‬ ‫ادامه‬
34
POP BX
‫مثال‬
35
‫مثال‬
36
‫مثال‬
37
‫برنامه‬‫ای‬‫که‬‫به‬‫کمک‬‫پشته‬‫محتویات‬‫دو‬‫ثبات‬‫را‬‫با‬‫یکدیگر‬‫جابجا‬‫می‬‫کند‬.
‫شده‬ ‫ساده‬ ‫قطعه‬ ‫روش‬
38
‫روشی‬‫که‬‫بوسیله‬‫آن‬‫قطعات‬‫در‬‫برنامه‬‫تعریف‬،‫شدند‬‫روشی‬‫سنتی‬‫به‬‫نام‬‫قطعه‬‫کامل‬‫است‬.‫در‬‫سا‬‫ل‬‫های‬‫اخیر‬
‫روش‬‫جدیدی‬‫برای‬‫تعریف‬‫قطعه‬‫معرفی‬‫شده‬،‫است‬‫که‬‫تعریف‬‫قطعه‬‫ساده‬‫شده‬،‫یا‬‫قالب‬‫ساده‬‫شده‬‫نا‬‫م‬‫دارد‬.
‫حافظه‬ ‫مدل‬
39
‫قبل‬‫از‬‫اینکه‬‫از‬‫تعریف‬‫قطعه‬‫ساده‬‫شده‬‫استفاده‬،‫کنیم‬‫مدل‬‫حافظه‬‫برای‬‫برنامه‬‫باید‬‫انتخاب‬‫شود‬.‫در‬‫میان‬‫این‬
‫انتخاب‬‫ها‬‫برای‬‫مدل‬‫حافظه‬‫می‬‫توان‬‫از‬SMALL,MEDIUM,COMPACT,LARGE,HUGE
‫استفاده‬‫کرد‬.
‫مدل‬SMALL
40
‫این‬‫مدل‬‫یکی‬‫از‬‫پر‬‫مصرف‬‫ترین‬‫مدل‬‫های‬‫حافظه‬‫برای‬‫برنامه‬‫های‬‫اسمبلی‬‫است‬.‫مدل‬SMALL‫حداکثر‬
64K‫بایت‬‫از‬‫حافظه‬‫را‬‫برای‬‫کد‬‫و‬‫به‬‫همان‬‫مقدار‬‫هم‬‫برای‬‫داده‬‫بکار‬‫می‬‫برد‬.
‫مدل‬MEDIUM
41
‫در‬‫این‬،‫مدل‬‫داده‬‫باید‬‫در‬‫همان‬64K‫قرار‬‫گیرد‬‫ولی‬‫کد‬‫می‬‫تواند‬‫از‬64K‫تجاوز‬‫نماید‬.
‫مدل‬COMPACT
42
‫این‬‫مدل‬‫بر‬‫خالف‬‫مدل‬MEDIUM‫است‬.‫در‬‫حالی‬‫که‬‫داده‬‫می‬‫تواند‬‫بیش‬‫از‬64K‫بایت‬،‫باشد‬‫کد‬‫نمی‬
‫تواند‬.
‫مدل‬LARGE
43
‫از‬‫ترکیب‬‫دو‬‫مدل‬،‫قبل‬‫مدل‬LARGE‫بدست‬‫می‬‫آید‬.‫گرچه‬‫این‬‫مدل‬‫اجازه‬‫می‬‫دهد‬‫تا‬‫کد‬‫و‬‫داده‬‫از‬64K
‫تجاوز‬،‫کنند‬‫هیچ‬‫مجموعه‬‫ای‬‫به‬‫تنهایی‬(‫مثل‬‫آرایه‬)‫نباید‬‫از‬64K‫بیشتر‬‫شود‬.
‫مدل‬HUGE
44
‫هر‬‫دو‬‫کد‬‫و‬‫داده‬‫می‬‫توانند‬‫از‬64K‫بایت‬‫حافظه‬‫بیشتر‬،‫باشند‬‫یک‬‫مجموعه‬‫تک‬‫داده‬‫مانند‬‫آرایه‬‫هم‬‫می‬
‫تواند‬‫از‬64K‫بایت‬‫بیشتر‬‫باشد‬.
‫ساده‬ ‫قطعه‬ ‫روش‬ ‫در‬ ‫حافظه‬ ‫های‬ ‫مدل‬ ‫ی‬ ‫خالصه‬
45
‫قطعه‬ ‫تعریف‬
46
‫قالب‬‫تعریف‬‫قطعه‬‫ساده‬‫شده‬‫سه‬‫رهنمون‬‫ساده‬‫را‬‫استفاده‬‫می‬‫کند‬.
.CODE
.DATA
.STACK
‫با‬‫استفاده‬‫از‬‫این‬،‫روش‬‫بکارگیری‬‫رهنمون‬‫های‬SEGMENT‫و‬END‫دیگر‬‫الزم‬‫نیست‬.
‫شده‬ ‫ساده‬ ‫قطعه‬ ‫تعریف‬
47
‫نکته‬
48
‫ترتیب‬‫قطعات‬‫اهمیت‬‫ندارد‬.
‫نکته‬
49
‫در‬‫ساختار‬‫تعریف‬‫قطعه‬‫ساده‬،‫شده‬‫دستوراتی‬‫که‬‫ثبات‬‫سگمنت‬‫را‬‫مقدار‬‫اولیه‬‫می‬‫دهند‬‫به‬‫صورت‬‫ز‬‫یر‬‫است‬.
‫ساده‬ ‫قطعه‬ ‫روش‬ ‫به‬ ‫عدد‬ ‫سه‬ ‫جمع‬ ‫برنامه‬
50
‫اسمبلی‬ ‫زبان‬ ‫های‬ ‫برنامه‬ ‫اسمبل‬ ‫و‬ ‫ترجمه‬ ‫نحوه‬
51
‫اسمبلی‬ ‫زبان‬ ‫های‬ ‫برنامه‬ ‫اسمبل‬ ‫و‬ ‫ترجمه‬ ‫نحوه‬
52
‫برنامه‬‫ای‬‫که‬‫با‬‫دستورات‬‫اسمبلی‬‫نوشته‬‫می‬،‫شود‬‫برنامه‬‫اسمبلی‬‫اصلی‬(Source Program)‫نامیده‬‫می‬
‫شود‬‫و‬‫با‬‫پسوند‬.asm‫تعریف‬‫می‬‫گردد‬.‫از‬‫برنامه‬‫مترجم‬(Assembler)‫برای‬‫ترجمه‬‫برنامه‬‫اسمبلی‬‫به‬
‫برنامه‬‫زبان‬‫ماشین‬(Object Program)‫استفاده‬‫می‬،‫کنیم‬‫که‬‫این‬‫برنامه‬‫با‬‫پسوند‬.obj‫مشخص‬‫می‬‫گردد‬.
‫و‬‫باالخره‬‫برنامه‬‫پیوند‬‫دهنده‬(Linker)‫برنامه‬‫ها‬‫با‬‫پسوند‬.obj،‫را‬‫با‬‫تخصیص‬‫آدرس‬‫های‬‫حافظه‬‫مناسب‬‫برای‬
،‫آنها‬‫به‬‫یک‬‫برنامه‬‫قابل‬‫اجرای‬.exe‫تبدیل‬‫می‬‫کند‬.
‫اسمبلی‬ ‫زبان‬ ‫های‬ ‫برنامه‬ ‫اسمبل‬ ‫و‬ ‫ترجمه‬ ‫نحوه‬
53
‫اسمبلر‬ ‫توسط‬ ‫اسمبلی‬ ‫برنامه‬ ‫ترجمه‬ ‫نحوه‬
54
‫برنامه‬‫مترجم‬‫اسمبلر‬،‫دستورات‬‫برنامه‬‫اسمبلی‬‫را‬‫می‬،‫خواند‬‫و‬‫کد‬‫باینری‬‫معادل‬‫آنها‬‫را‬‫پیدا‬‫می‬‫کند‬.‫د‬‫ر‬‫حقیقت‬
‫برنامه‬‫مترجم‬،‫اسمبلر‬‫برای‬‫ترجمه‬‫برنامه‬‫اسمبلی‬‫کاربر‬‫به‬‫زبان‬،‫ماشین‬‫دوبار‬‫برنامه‬‫کاربر‬‫را‬‫مرور‬(Two
Pass Assembler)‫می‬‫کند‬.‫در‬‫مرور‬‫اول‬،‫اسمبلر‬‫تمام‬‫برنامه‬‫اسمبلی‬‫را‬‫می‬،‫خواند‬‫و‬‫تعداد‬‫بایت‬‫های‬‫هر‬
‫دستور‬‫را‬‫مشخص‬‫می‬،‫کند‬‫و‬‫یک‬‫جدول‬‫از‬‫سمبل‬‫ها‬(Symbol Table)‫از‬‫برچسب‬‫دستورات‬‫و‬‫آدرس‬،‫آنها‬‫و‬
‫همچنین‬‫نام‬‫داده‬‫و‬‫آدرس‬‫آنها‬‫درست‬‫می‬‫کند‬.‫در‬‫مرور‬‫دوم‬‫برنامه‬،‫اسمبلی‬‫توسط‬‫برنامه‬‫مترجم‬،‫اسمبلر‬‫ب‬‫ا‬
‫استفاده‬‫از‬‫جدول‬‫سمبل‬،‫ها‬‫ترجمه‬‫برنامه‬‫را‬‫کامل‬‫می‬‫کند‬.
‫دستورات‬ ‫با‬ ‫آشنایی‬‫تقسیم‬ ‫و‬ ‫ضرب‬
55
‫دستور‬‫ضرب‬MUL
‫دستور‬‫تقسیم‬DIV
‫ضرب‬ ‫دستور‬MUL
56
‫عملیات‬‫ضرب‬‫چندین‬‫حالت‬‫می‬‫تواند‬‫داشته‬‫باشد‬:
‫ضرب‬‫یک‬‫بایت‬‫در‬‫یک‬‫بایت‬
‫ضرب‬‫یک‬‫کلمه‬‫در‬‫یک‬‫کلمه‬
‫ضرب‬‫یک‬‫بایت‬‫در‬‫یک‬‫کلمه‬
‫بایت‬ ‫یک‬ ‫در‬ ‫بایت‬ ‫یک‬ ‫ضرب‬
57
‫در‬‫ضرب‬‫بایت‬‫در‬‫بایت‬،‫یکی‬‫از‬‫عملوندها‬‫باید‬‫در‬‫ثبات‬AL‫قرار‬‫داشته‬،‫باشد‬‫و‬‫دومین‬‫عملوند‬‫می‬‫تواند‬‫در‬
‫ثبات‬‫و‬‫یا‬‫حافظه‬‫باشد‬.‫بعد‬‫از‬‫انجام‬‫عمل‬‫ضرب‬‫نتیجه‬‫در‬‫ثبات‬AX‫قرار‬‫می‬‫گیرد‬.
‫مثال‬
58
‫برنامه‬‫ای‬‫بنویسد‬‫که‬‫عدد‬1F‫را‬‫در‬3A‫ضرب‬‫نماید‬.
‫جواب‬
59
‫اجرا‬ ‫نتیجه‬
60
‫یک‬ ‫در‬ ‫کلمه‬ ‫یک‬ ‫ضرب‬‫کلمه‬
61
‫در‬‫ضرب‬‫کلمه‬‫در‬‫کلمه‬،‫یک‬‫عملوند‬‫باید‬‫در‬‫ثبات‬AX‫قرار‬‫گیرد‬‫و‬‫دومین‬‫عملوند‬‫می‬‫تواند‬‫در‬‫ثبات‬‫قرار‬
‫گیرد‬‫یا‬‫در‬‫حافظه‬.‫بعد‬‫از‬‫عمل‬‫ضرب‬‫نتیجه‬‫در‬‫ثبات‬‫های‬AX‫و‬DX‫قرار‬‫خواهد‬‫داشت‬.
‫مثال‬
62
‫مثال‬
63
‫برنامه‬‫ای‬‫بنویسید‬‫که‬‫دو‬‫عدد‬12F4H‫و‬3E21H‫را‬‫در‬‫هم‬‫ضرب‬‫نماید‬.
‫جواب‬
64
‫قبل‬ ‫مثال‬ ‫خروجی‬
65
‫کلمه‬ ‫در‬ ‫بایت‬ ‫ضرب‬
66
‫این‬‫ضرب‬‫شبیه‬‫ضرب‬‫کلمه‬‫در‬‫کلمه‬‫می‬‫باشد‬.‫بجز‬‫اینکه‬AL‫حاوی‬‫بایت‬‫عملوند‬‫بوده‬‫و‬AH‫باید‬‫صفر‬‫شود‬.
‫ضرب‬ ‫خالصه‬
67
‫تقسیم‬
68
‫در‬‫تقسیم‬‫چندین‬‫حالت‬‫ممکن‬‫است‬‫داشته‬‫باشیم‬.
‫بایت‬‫تقسیم‬‫بر‬‫بایت‬
‫کلمه‬‫تقسیم‬‫بر‬‫کلمه‬
‫کلمه‬‫تقسیم‬‫بر‬‫بایت‬
‫کلمه‬‫مضاعف‬‫تقسیم‬‫بر‬‫کلمه‬
‫تقسیم‬
69
‫در‬،‫تقسیم‬‫مواردی‬‫پیش‬‫می‬‫آید‬‫که‬CPU‫قادر‬‫به‬‫انجام‬‫عمل‬‫تقسیم‬‫نیست‬.‫در‬‫این‬‫موارد‬‫یک‬‫وقفه‬‫فعال‬‫می‬
‫گردد‬‫که‬‫به‬‫آن‬‫استثنا‬‫گویند‬.
‫اگر‬‫مقسوم‬‫علیه‬‫صفر‬‫باشد‬(‫هر‬‫عددی‬‫را‬‫بر‬‫صفر‬‫تقسیم‬‫نماییم‬)
‫اگر‬‫خارج‬‫قسمت‬‫خیلی‬‫بزرگ‬‫باشد‬‫که‬‫در‬‫ثبات‬‫اختصاص‬‫یافته‬‫جای‬‫نگیرد‬.
‫در‬PC‫های‬IBM‫و‬‫سازگار‬‫با‬‫آنها‬‫اگر‬‫هر‬‫یک‬‫از‬‫موارد‬‫فوق‬‫اتفاق‬‫افتاد‬‫پیام‬“Divide Error”‫نمایش‬‫داده‬
‫می‬‫شود‬.
‫بایت‬ ‫بر‬ ‫بایت‬ ‫تقسیم‬
70
‫در‬‫تقسیم‬‫بایت‬‫بر‬‫بایت‬،‫مقسوم‬‫باید‬‫در‬‫ثبات‬AL‫قرار‬‫گیرد‬‫و‬‫ثبات‬AH‫صفر‬‫شود‬.‫مقسوم‬‫علیه‬‫نمی‬‫تواند‬
‫یک‬‫عملوند‬‫فوری‬‫باشد‬‫ولی‬‫می‬‫تواند‬‫در‬‫ثبات‬‫یا‬‫حافظه‬‫قرار‬‫بگیرد‬.‫چنانچه‬‫مقسوم‬‫علیه‬‫در‬‫حافظ‬‫ه‬‫قرار‬
‫گرفت‬‫آدرس‬‫دهی‬‫آن‬‫باید‬‫قابل‬‫قبول‬‫باشد‬.‫بعد‬‫از‬‫اجرای‬‫دستور‬DIV،‫خارج‬‫قسمت‬‫در‬AL‫و‬‫باقی‬‫مانده‬‫در‬
‫ثبات‬AH‫قرار‬‫خواهد‬‫گرفت‬.
‫بایت‬ ‫بر‬ ‫بایت‬ ‫تقسیم‬
71
‫روش‬‫های‬‫مختلف‬‫آدرس‬‫دهی‬‫که‬‫مقسوم‬‫علیه‬‫در‬‫تقسیم‬‫می‬‫تواند‬‫داشته‬‫باشد‬‫بصورت‬‫زیر‬‫است‬.
‫قبل‬ ‫اسالید‬ ‫ادامه‬
72
‫مثال‬
73
‫برنامه‬‫ای‬‫بنویسید‬‫که‬‫عدد‬23‫را‬‫بر‬5‫تقسیم‬‫نماید‬.
‫قبل‬ ‫مثال‬ ‫جواب‬
74
‫قبل‬ ‫مثال‬ ‫اجرای‬ ‫نتیجه‬
75
‫کلمه‬ ‫بر‬ ‫کلمه‬ ‫تقسیم‬
76
‫در‬‫این‬‫حالت‬‫مقسوم‬‫در‬AX‫قرار‬‫می‬‫گیرد‬‫و‬DX‫باید‬‫صفر‬‫گردد‬.‫مقسوم‬‫علیه‬‫می‬‫تواند‬‫در‬‫یک‬‫ثبات‬‫یا‬
‫حافظه‬‫باشد‬.‫بعد‬‫از‬‫اجرای‬‫دستور‬،‫تقسیم‬‫خارج‬‫قسمت‬‫در‬AX‫و‬‫باقی‬‫مانده‬‫در‬DX‫قرار‬‫می‬‫گیرند‬.
‫تقسیم‬ ‫ی‬ ‫خالصه‬
77
‫نزولی‬ ‫و‬ ‫صعودی‬ ‫شمارنده‬ ‫دستورات‬
78
‫دستور‬‫شمارنده‬‫صعودی‬INC
‫دستور‬‫شمارنده‬‫نزولی‬DEC
‫صعودی‬ ‫شمارنده‬ ‫دستور‬INC
79
‫با‬‫این‬‫دستور‬‫به‬‫محتوای‬‫یکی‬‫از‬‫ثبات‬‫ها‬‫یا‬‫یک‬‫خانه‬،‫حافظه‬‫یک‬‫واحد‬‫اضافه‬‫می‬‫شود‬.
‫نزولی‬ ‫شمارنده‬ ‫دستور‬DEC
80
‫با‬‫این‬‫دستور‬‫محتوای‬‫یکی‬‫از‬‫ثبات‬‫های‬‫یا‬‫خانه‬،‫حافظه‬‫یک‬‫واحد‬‫کم‬‫می‬‫شود‬.
‫دستورات‬ ‫تاثیر‬INC‫و‬DEC‫پرچم‬ ‫ثبات‬ ‫بر‬
81
‫دستورات‬INC‫و‬DEC‫بر‬‫بیت‬‫های‬‫پرچم‬ZF, SF, OF, PF, AF‫اثر‬‫می‬‫گذارند‬‫و‬‫بر‬‫بیت‬‫پرچم‬CF
‫را‬‫تغییری‬‫نمی‬‫دهند‬.
‫نکته‬
82
‫از‬‫دستور‬ADD‫هم‬‫می‬‫توان‬‫برای‬‫اضافه‬‫کردن‬‫یک‬‫واحد‬‫به‬‫ثبات‬‫یا‬‫خانه‬‫حافظه‬‫استفاده‬‫کرد‬.‫اما‬‫اگر‬‫از‬
‫دستور‬INC‫استفاده‬،‫کنیم‬‫بیت‬‫پرچم‬CF‫تغییر‬‫نمی‬‫کند‬‫که‬‫گاهی‬‫از‬‫این‬‫خاصیت‬‫بهره‬‫میگیریم‬(‫و‬‫نی‬‫ز‬
SUB‫به‬‫جای‬DEC).
‫دستور‬NEG
83
‫این‬‫دستور‬‫مکمل‬‫دو‬،‫عملوند‬‫را‬‫محاسبه‬‫می‬‫کند‬.
‫نکته‬
84
‫مکمل‬2‫نمودن‬‫یک‬،‫عدد‬‫یعنی‬‫تغییر‬‫عالمت‬‫دادن‬‫آن‬‫عدد‬.‫لذا‬‫اگر‬‫عدد‬‫مثبت‬،‫باشد‬‫منفی‬‫می‬‫گردد‬‫و‬‫د‬‫ر‬
‫صورتیکه‬‫عدد‬‫منفی‬،‫باشد‬‫مثبت‬‫می‬‫شود‬.‫در‬‫واقع‬‫از‬‫این‬‫دستور‬‫می‬‫توان‬‫برای‬‫تغییر‬‫عالمت‬‫عملو‬‫ندها‬
‫استفاده‬‫نمود‬.
85
‫برنامه‬ ‫کنترل‬ ‫دستورات‬
‫منطقی‬ ‫دستورات‬ ‫و‬
‫حلقه‬ ‫و‬ ‫پرش‬ ‫دستورات‬
86
‫بعضی‬‫اوقات‬‫در‬‫ب‬‫ر‬‫نامه‬‫نویسی‬‫نیاز‬‫است‬‫که‬‫اجرای‬‫دستورات‬‫از‬‫محل‬‫دیگری‬‫در‬‫برنامه‬‫ادامه‬،‫یابد‬‫که‬‫در‬‫این‬
‫مواقع‬‫می‬‫توان‬‫از‬‫دستورات‬‫کنترل‬‫برنامه‬‫شامل‬‫دستورات‬‫پرش‬JMP‫استفاده‬‫کرد‬.‫عالوه‬‫بر‬‫این‬‫اکثر‬‫برنامه‬
‫ها‬‫شامل‬‫تعدادی‬‫عملیات‬‫مقایسه‬‫اطالعات‬،‫هستند‬‫که‬‫متناسب‬‫با‬‫نتیجه‬،‫مقایسه‬‫می‬‫بایستی‬‫به‬‫محل‬‫به‬
‫خصوصی‬‫از‬‫برنامه‬‫مراجعه‬‫شود‬‫و‬‫دستورات‬‫مورد‬‫نظر‬‫اجرا‬،‫گردند‬‫که‬‫در‬‫این‬‫مواقع‬‫از‬‫دستورات‬‫پرش‬‫شرط‬‫ی‬
‫و‬LOOP‫استفاده‬‫می‬‫شود‬.
‫پرش‬ ‫دستور‬JMP
87
‫دستور‬JMP lable‫یک‬‫پرش‬‫بدون‬‫شرط‬‫است‬‫که‬‫کنترل‬‫را‬‫بدون‬‫هر‬‫شرطی‬‫به‬‫هدفی‬‫که‬‫با‬lable
‫مشخص‬‫شده‬‫محول‬‫می‬‫کند‬.
‫پرش‬ ‫دستور‬ ‫انواع‬JMP
88
‫نوع‬Short jump‫که‬‫دارای‬‫قالب‬JMP SHORT lable‫می‬‫باشد‬.
‫در‬‫این‬‫نوع‬،‫پرش‬‫آدرس‬‫هدف‬‫در‬‫محدوده‬-128‫تا‬+127‫بایتی‬‫نسبت‬‫به‬‫آدرس‬IP‫جاری‬‫واقع‬‫است‬.‫به‬‫عبارت‬‫دیگر‬‫آدرس‬
label‫حداکثر‬+127‫بایت‬‫پایین‬،‫تر‬‫یا‬-128‫بایت‬،‫باالتر‬‫نسبت‬‫به‬‫دستور‬‫بعد‬‫از‬JMP‫قرار‬‫دارد‬.
‫نوع‬Near jump‫که‬‫پیش‬‫فرض‬‫است‬‫و‬‫دارای‬‫قالب‬JMP label‫می‬‫باشد‬.
‫در‬‫این‬،‫نوع‬‫آدرس‬‫دستور‬،‫هدف‬‫در‬‫داخل‬‫سگمنت‬‫دستور‬‫پرش‬‫قرار‬‫دارد‬.
‫نوع‬Far jump‫که‬‫دارای‬‫قالب‬JMP FAR PTR label‫می‬‫باشد‬.
‫این‬‫پرش‬‫به‬‫خارج‬‫قطعه‬‫کد‬‫جاری‬‫صورت‬‫می‬‫گیرد‬‫و‬‫به‬‫معنی‬‫این‬‫است‬‫که‬‫نه‬‫فقط‬IP‫بلکه‬CS‫هم‬‫با‬‫مقدار‬‫جدید‬‫جایگزین‬‫می‬
‫شود‬.
‫شرطی‬ ‫پرش‬ ‫دستورات‬
89
‫در‬‫پرش‬‫های‬،‫شرطی‬‫الزم‬‫است‬‫مقایسه‬‫ای‬‫صورت‬‫بپذیرد‬‫و‬‫بر‬‫اساس‬‫نتایج‬،‫مقایسه‬‫عمل‬‫پرش‬‫انجام‬‫شود‬.
‫شرطی‬ ‫های‬ ‫پرش‬ ‫در‬ ‫مقایسه‬ ‫انجام‬
90
‫برای‬‫انجام‬‫مقایسه‬‫و‬‫بررسی‬‫شرط‬‫ها‬‫از‬‫دستور‬CMP‫استفاده‬‫می‬‫شود‬.‫دستور‬CMP‫دو‬‫عملوند‬‫را‬‫مقایسه‬
‫کرده‬‫و‬‫بر‬‫طبق‬‫نتیجه‬‫آن‬‫پرچم‬‫ها‬‫را‬‫تغییر‬‫می‬‫دهد‬.‫خود‬‫عملوندها‬‫بدون‬‫تغییر‬‫باقی‬‫می‬‫مانند‬.‫عملوند‬‫مقصد‬
‫در‬‫یک‬،‫ثبات‬‫در‬‫حافظه‬‫یا‬‫فوری‬‫است‬.‫گرچه‬‫همه‬‫پرچم‬‫های‬OF,ZF,PF,SF,AF,CF‫نتیجه‬‫مقایسه‬‫را‬
‫منعکس‬‫می‬‫سازند‬‫ولی‬CF‫و‬ZF‫بکار‬‫می‬‫روند‬.
‫دستور‬CMP
91
‫تاثیر‬‫دستور‬CMP‫بر‬‫بیت‬‫های‬CF‫و‬ZF‫ثبات‬‫فلگ‬‫به‬‫صورت‬‫زیر‬‫است‬.
‫مثال‬
92
‫مثال‬
93
‫مثال‬
94
‫شرطی‬ ‫های‬ ‫العمل‬ ‫دستور‬
95
‫مثال‬
96
‫دستورات‬‫مقابل‬‫را‬‫در‬‫نظر‬‫بگیرید‬:
‫در‬‫دستور‬‫اول‬‫از‬‫ثبات‬CX‫یکی‬‫کم‬‫می‬،‫شود‬‫و‬‫در‬‫دستور‬‫دوم‬‫بیت‬‫تشخیص‬‫صفر‬(‫بیت‬ZF‫ثبات‬‫پرچم‬)‫را‬‫بررسی‬‫می‬‫نماید‬.‫اگر‬
ZF=0،‫باشد‬‫یعنی‬‫نتیجه‬‫محاسبات‬‫که‬‫کم‬‫کردن‬‫یک‬‫واحد‬‫از‬CX،‫است‬‫صفر‬‫نشده‬‫لذا‬‫کنترل‬‫به‬‫دستوری‬‫که‬‫برچسب‬‫آن‬
A20‫است‬‫می‬‫رود‬.‫در‬‫صورتی‬‫که‬CX‫برابر‬‫صفر‬،‫شود‬‫یعنی‬ZF=1،‫است‬‫دستور‬‫بعد‬‫از‬JNZ‫اجرا‬‫می‬‫شود‬.
‫شرطی‬ ‫پرش‬ ‫دستورات‬ ‫انواع‬
97
‫دستورات‬‫پرش‬‫شرطی‬‫سه‬‫نوع‬‫می‬،‫باشند‬‫که‬‫عبارتند‬‫از‬‫دستورات‬‫پرش‬‫شرطی‬‫مبتنی‬‫بر‬‫بیت‬‫ه‬‫ای‬‫پرچم‬،
‫دستورات‬‫شرطی‬‫برای‬‫اعداد‬‫عالمتدار‬‫و‬‫دستورات‬‫شرطی‬‫برای‬‫اعداد‬‫بدون‬‫عالمت‬.‫تمامی‬‫دستورات‬‫پرش‬
‫شرطی‬‫از‬‫نوع‬SHORT‫می‬‫باشند‬.
‫پرچم‬ ‫های‬ ‫بیت‬ ‫بر‬ ‫مبتنی‬ ‫شرطی‬ ‫پرش‬ ‫دستورات‬
98
‫این‬‫دستورات‬‫با‬‫توجه‬‫به‬،‫یک‬‫یا‬‫صفر‬‫بودن‬‫بیت‬‫های‬‫پرچم‬‫نقلی‬CF،‫عالمت‬SF،‫سرریز‬OF،‫توازن‬PF
‫اجرا‬‫می‬‫شوند‬.
‫کنند‬ ‫می‬ ‫تست‬ ‫را‬ ‫فلگ‬ ‫یک‬ ‫که‬ ‫دستوراتی‬
99
‫کنند‬ ‫می‬ ‫تست‬ ‫را‬ ‫فلگ‬ ‫یک‬ ‫که‬ ‫دستوراتی‬
100
‫عالمت‬ ‫بدون‬ ‫های‬ ‫داده‬ ‫برای‬ ‫شرطی‬ ‫دستورات‬
101
‫دار‬ ‫عالمت‬ ‫های‬ ‫داده‬ ‫برای‬ ‫پرش‬ ‫دستورات‬
102
‫مثال‬
103
‫برنامه‬‫ای‬‫بنویسید‬‫که‬‫تعداد‬‫ارقام‬‫عدد‬N‫را‬‫محاسبه‬
‫نموده‬‫و‬‫در‬X‫قرار‬‫دهد‬.
‫مثال‬
104
‫مثال‬
105
‫مثال‬
106
‫مثال‬
107
‫دستور‬LOOP
108
‫دستور‬LOOP‫برای‬‫کنترل‬‫برنامه‬‫و‬‫تکرار‬‫دستورات‬‫یک‬‫حلقه‬‫بکار‬‫می‬‫رود‬.‫برای‬‫این‬‫منظور‬‫تعداد‬‫تک‬‫رار‬‫حلقه‬
‫را‬‫در‬‫ثبات‬CX‫قرار‬‫می‬‫دهیم‬.‫در‬‫هر‬‫بار‬‫اجرای‬،‫حلقه‬‫دستور‬LOOP‫به‬‫طور‬‫خودکار‬‫از‬‫ثبات‬CX‫یکی‬‫کم‬
‫می‬‫کند‬‫و‬‫تا‬‫زمانی‬‫که‬CX‫صفر‬،‫نشده‬‫کنترل‬‫به‬‫آدرس‬‫ابتدای‬‫حلقه‬LOOP‫پرش‬‫می‬‫کند‬.‫به‬‫محض‬‫اینکه‬
CX‫صفر‬،‫شد‬‫اجرای‬‫حلقه‬‫پایان‬‫می‬‫یابد‬‫و‬‫دستور‬‫بعد‬‫از‬LOOP‫اجرا‬‫می‬‫شود‬.
‫مثال‬
109
‫مثال‬
110
‫مثال‬
111
‫برنامه‬‫ای‬‫بنویسید‬‫که‬‫ماکزیمم‬‫بین‬‫سه‬‫عدد‬‫را‬‫پیدا‬‫نماید‬.
‫قبل‬ ‫مثال‬ ‫جواب‬
112
‫قبل‬ ‫مثال‬ ‫خروجی‬
113
‫مشاهده‬‫می‬‫شود‬‫که‬‫بزرگترین‬‫مقدار‬‫یعنی‬‫عدد‬18(‫معادل‬12H)‫در‬‫متغیر‬MAX‫قرار‬‫گرفته‬‫است‬.
‫مثال‬
114
‫مثال‬
115
‫نکته‬
116
‫نکته‬
117
‫تکرار‬ ‫دستورالعمل‬ ‫خالصه‬
118
‫مثال‬
119
120
‫منطقی‬ ‫دستورات‬
‫منطقی‬ ‫دستورات‬
121
‫در‬‫این‬‫بخش‬‫دستورات‬‫منطقی‬AND,OR,XOR,SHIFT‫بررسی‬‫می‬‫شوند‬‫و‬‫عملکرد‬‫آن‬‫ها‬‫در‬‫قالب‬
‫مثال‬‫های‬‫شرح‬‫داده‬‫می‬‫شود‬.
‫دستور‬AND
122
‫این‬‫دستور‬‫عمل‬AND‫منطقی‬‫را‬‫بر‬‫روی‬‫عملوندها‬‫انجام‬‫داده‬‫و‬‫نتیجه‬‫را‬‫در‬‫عملوند‬‫مقصد‬‫قرار‬‫می‬‫دهد‬.
‫عملوند‬‫مقصد‬‫می‬‫تواند‬‫ثبات‬‫یا‬‫حافظه‬‫باشد‬.‫عملوند‬‫مبدا‬‫هم‬‫می‬‫تواند‬‫ثبات‬،‫یا‬‫در‬‫حافظه‬‫یا‬‫فوری‬‫ب‬‫اشد‬.
‫مثال‬
123
‫نکته‬
124
‫دستور‬AND‫بطور‬‫خودکار‬CF‫و‬OF‫را‬‫به‬‫صفر‬‫تبدیل‬‫می‬‫نماید‬‫و‬‫بیت‬‫های‬PF,ZF,SF‫را‬‫بر‬‫طبق‬
‫نتجه‬‫عملیات‬‫مقدار‬‫می‬‫دهد‬.‫بقیه‬‫بیت‬‫های‬‫پرچم‬‫در‬‫اثر‬‫این‬‫دستور‬‫تغییر‬‫نمی‬‫کنند‬.
‫نکته‬
125
‫از‬‫دستور‬AND‫برای‬‫آزمون‬‫صفر‬‫بودن‬‫یک‬‫عملوند‬‫هم‬‫استفاده‬‫می‬‫شود‬.
‫در‬‫دستورات‬‫فوق‬‫ثبات‬DH‫را‬‫با‬‫خوش‬AND‫می‬‫نماید‬‫و‬‫اگر‬‫نتیجه‬‫صفر‬‫شد‬ZF‫را‬‫مساوی‬1‫می‬‫نماید‬‫و‬
‫سپس‬CPU‫دستوری‬‫که‬‫در‬‫آدرس‬XXXX‫قرار‬‫دارد‬‫را‬‫برداشت‬‫می‬‫کند‬.‫در‬‫غیر‬‫این‬‫صورت‬‫دستور‬‫زیر‬
JZ‫اجرا‬‫می‬‫گردد‬.
‫دستور‬OR
126
‫در‬‫این‬‫دستور‬‫عملوندهای‬‫مقصد‬‫و‬‫مبدا‬‫با‬‫هم‬OR‫می‬‫شوند‬‫و‬‫حاصل‬‫در‬‫عملوند‬‫مقصد‬‫قرار‬‫می‬‫گیرد‬.‫از‬‫این‬
‫دستور‬‫برای‬1‫نمودن‬‫بعضی‬‫بیت‬‫های‬‫یک‬‫عملوند‬‫استفاده‬‫می‬‫شود‬.‫عملوند‬‫مبدا‬‫می‬‫تواند‬‫یک‬،‫ثبات‬‫ح‬‫افظه‬‫و‬
‫یا‬‫داده‬‫فوری‬‫باشد‬.
‫مثال‬
127
‫دستور‬XOR
128
‫دستور‬XOR‫عملوندها‬‫را‬‫با‬‫هم‬OR‫انحصاری‬‫می‬‫نماید‬‫و‬‫حاصل‬‫را‬‫در‬‫عملوند‬‫مقصد‬‫قرار‬‫می‬‫دهد‬.‫دستور‬
XOR‫بیت‬‫های‬‫نتیجه‬‫را‬‫یک‬‫می‬،‫کند‬‫به‬‫شرطی‬‫که‬‫با‬‫هم‬‫یکسان‬‫نباشند؛‬‫در‬‫غیر‬‫این‬،‫صورت‬‫آنها‬‫ر‬‫ا‬‫صفر‬
‫می‬‫نماید‬.
‫مثال‬
129
‫مثال‬
130
‫نکته‬
131
‫کاربرد‬‫دیگر‬‫از‬‫دستور‬XOR‫معکوس‬‫کردن‬‫بیت‬‫های‬‫یک‬‫عملوند‬‫است‬.‫برای‬‫مثال‬‫برای‬‫معکوس‬‫کردن‬‫بیت‬
‫دوم‬‫ثبات‬AL:
‫دستور‬‫فوق‬‫باعث‬‫می‬‫گردد‬‫که‬‫مقدار‬‫بیت‬‫دوم‬AL‫معکوس‬،‫شود‬‫و‬‫بیت‬‫های‬‫دیگر‬‫آن‬‫دست‬‫نخورده‬‫باقی‬
‫بماند‬.
‫مکان‬ ‫نقل‬
132
‫دو‬‫نوع‬‫دستور‬‫نقل‬‫مکان‬(‫شیفت‬)‫وجود‬‫دارد‬:‫محاسباتی‬‫و‬‫منطقی‬.‫نقل‬‫مکان‬‫منطقی‬‫برای‬‫عملوندها‬‫ی‬‫بدون‬
‫عالمت‬‫استفاده‬‫می‬،‫شود‬‫و‬‫نقل‬‫مکان‬‫محاسباتی‬‫برای‬‫عملوندهای‬‫عالمت‬‫دار‬‫می‬‫باشد‬.‫با‬‫استفاده‬‫از‬‫د‬‫ستورات‬
‫نقل‬،‫مکان‬‫محتوای‬‫یک‬‫ثبات‬‫یا‬‫یک‬‫مکان‬‫از‬‫حافظه‬‫به‬‫راست‬‫یا‬‫چپ‬‫نقل‬‫مکان‬‫داده‬‫می‬‫شود‬.‫تعداد‬‫د‬‫فعاتی‬
(‫یا‬‫بیت‬‫هایی‬)‫که‬‫عملوند‬‫نقل‬‫مکان‬‫داده‬‫می‬،‫شود‬‫اگر‬‫نقل‬‫مکان‬‫یکبار‬‫باشد‬‫در‬‫دستور‬‫ذکر‬‫می‬‫گ‬‫ردد‬‫و‬‫اگر‬
‫دفعات‬‫بیش‬‫از‬‫یکبار‬‫باشد‬‫از‬‫ثبات‬CL‫استفاده‬‫می‬‫شود‬.
‫دستور‬SHR
133
‫این‬،‫دستور‬‫نقل‬‫مکان‬‫منطقی‬‫به‬‫راست‬‫می‬‫باشد‬.‫عملوند‬‫بیت‬‫به‬‫بیت‬‫به‬‫راست‬‫نقل‬‫مکان‬‫می‬‫ی‬‫ابد‬،‫و‬‫در‬‫هر‬
‫نقل‬،‫مکان‬LSB(‫کم‬‫ارزش‬‫ترین‬‫بیت‬)‫به‬‫پرچم‬‫نقلی‬‫منتقل‬‫می‬‫شود‬.‫همچنین‬MSB(‫با‬‫ارزش‬‫ترین‬
‫بیت‬)‫با‬‫صفر‬‫پر‬‫می‬‫گردد‬.
‫مثال‬
134
‫مثال‬
135
‫اگر‬‫عملوند‬‫فقط‬‫یکبار‬‫نقل‬‫مکان‬،‫یابد‬‫به‬‫جای‬‫قرار‬‫دادن‬1‫در‬CL،1‫در‬‫خود‬‫دستور‬‫قرار‬‫می‬‫گیرد‬.‫این‬‫کار‬
‫یک‬‫دستور‬‫صرفه‬‫جویی‬‫می‬‫نماید‬.
‫بعد‬‫از‬‫نقل‬‫مکان‬،‫فوق‬CF=1‫و‬BX=7FFFH‫خواهد‬‫شد‬.
‫نکته‬
136
‫عملوند‬‫نقل‬‫مکان‬‫یافته‬‫می‬‫تواند‬‫در‬‫ثبات‬‫یا‬‫در‬‫حافظه‬،‫باشد‬‫اما‬‫استفاده‬‫از‬‫روش‬‫آدرس‬‫دهی‬‫فوری‬‫د‬‫ر‬
‫دستورات‬‫نقل‬‫مکان‬‫مجاز‬‫نمی‬‫باشد‬.‫برای‬‫مثال‬SHR 25,CL‫باعث‬‫بروز‬‫خطا‬‫می‬‫گردد‬.
‫مثال‬
137
‫دستور‬SHL
138
‫نقل‬‫مکان‬‫به‬‫چپ‬‫نیز‬‫یک‬‫نقل‬‫مکان‬‫منطقی‬‫است‬.‫این‬‫عمل‬‫عکس‬SHR‫است‬.‫پس‬‫از‬‫هر‬‫نقل‬،‫مکان‬LSB
‫با‬0‫پر‬‫می‬‫شود‬‫و‬MSB‫به‬CF‫می‬‫رود‬.‫همه‬‫قوانین‬‫مانند‬SHR‫است‬.
‫مثال‬
139
‫چرخش‬ ‫دستورات‬
140
‫در‬‫بسیاری‬‫از‬‫کاربردها‬‫نیاز‬‫به‬‫چرخش‬‫بیتی‬‫یک‬‫عملوند‬‫وجود‬‫دارد‬.‫دستور‬‫چرخش‬
ROR,ROL,RCR,RCLً‫ا‬‫خصوص‬‫به‬‫همین‬‫منظور‬‫طراحی‬‫شده‬‫اند‬.‫این‬‫دستورات‬‫می‬‫توانند‬‫یک‬‫عملون‬‫د‬
‫را‬‫به‬‫راست‬‫یا‬‫به‬‫چپ‬‫بچرخانند‬.‫در‬‫دستورات‬،‫چرخش‬‫عملوند‬‫می‬‫تواند‬‫در‬‫یک‬‫ثبات‬‫یا‬‫حافظه‬‫باشد‬.‫اگ‬‫ر‬‫تعداد‬
‫چرخش‬‫عملوند‬‫بیش‬‫از‬‫یکبار‬،‫باشد‬‫از‬CL‫استفاده‬‫می‬‫شود‬.
‫راست‬ ‫به‬ ‫چرخش‬ROR
141
‫در‬‫چرخش‬‫به‬‫راست‬،‫با‬‫نقل‬‫مکان‬‫بیت‬‫ها‬‫از‬‫چپ‬‫به‬،‫راست‬‫از‬‫انتهای‬‫سمت‬‫راست‬(LSB)‫خارج‬‫می‬‫شوند‬‫و‬
‫از‬‫سمت‬‫چپ‬‫وارد‬‫می‬‫گردند‬.،‫بعالوه‬‫با‬‫خروج‬‫هر‬‫بیت‬‫از‬LSB،‫یک‬‫کپی‬‫به‬‫پرچم‬‫نقلی‬‫انتقال‬‫می‬‫یابد‬.
‫مثال‬
142
‫مثال‬
143
‫چپ‬ ‫به‬ ‫چرخش‬ROL
144
‫در‬‫چرخش‬‫به‬‫چپ‬،‫با‬‫هر‬‫چرخش‬‫راست‬‫به‬،‫چپ‬‫بیت‬‫انتهای‬‫چپ‬(MSB)‫خارج‬‫و‬‫از‬‫سمت‬‫راست‬(LSB)
‫وارد‬‫می‬‫شود‬.،‫بعالوه‬‫هر‬‫بیت‬‫که‬MSB‫را‬‫ترک‬‫کند‬‫به‬‫پرچم‬‫نقلی‬CF‫هم‬‫وارد‬‫می‬‫شود‬.‫اگر‬‫عملوند‬‫یکبار‬
،‫بچرخد‬‫اجرای‬‫یک‬‫دستور‬‫کافی‬‫است‬.‫در‬‫غیر‬‫این‬‫صورت‬‫تعداد‬‫دفعات‬‫در‬CL‫نگهداری‬‫می‬‫شود‬.
‫مثال‬
145
‫مثال‬
146
‫مثال‬
147
‫قبل‬ ‫مثال‬ ‫کد‬
148

More Related Content

More from M Nemati

Artificial Intelligence (AI)
Artificial Intelligence (AI)Artificial Intelligence (AI)
Artificial Intelligence (AI)M Nemati
 
Machine & Assembly Language - Chapter 5
Machine & Assembly Language - Chapter 5Machine & Assembly Language - Chapter 5
Machine & Assembly Language - Chapter 5M Nemati
 
Machine & Assembly Language - Chapter 3
Machine & Assembly Language - Chapter 3Machine & Assembly Language - Chapter 3
Machine & Assembly Language - Chapter 3M Nemati
 
Machine & Assembly Language - Chapter 2
Machine & Assembly Language - Chapter 2Machine & Assembly Language - Chapter 2
Machine & Assembly Language - Chapter 2M Nemati
 
Machine & Assembly Language - Chapter 1
Machine & Assembly Language - Chapter 1Machine & Assembly Language - Chapter 1
Machine & Assembly Language - Chapter 1M Nemati
 
IoT Course - Chapter 1
IoT Course -  Chapter 1IoT Course -  Chapter 1
IoT Course - Chapter 1M Nemati
 
IoT Course - Chapter 2
IoT Course -  Chapter 2IoT Course -  Chapter 2
IoT Course - Chapter 2M Nemati
 
Java script
Java scriptJava script
Java scriptM Nemati
 
Fundamentals of programming
Fundamentals of programmingFundamentals of programming
Fundamentals of programmingM Nemati
 
مقدمه درس برنامه نویسی مبتنی بر وب
مقدمه درس برنامه نویسی مبتنی بر وبمقدمه درس برنامه نویسی مبتنی بر وب
مقدمه درس برنامه نویسی مبتنی بر وبM Nemati
 
Java how to_program 1
Java how to_program 1Java how to_program 1
Java how to_program 1M Nemati
 

More from M Nemati (14)

Artificial Intelligence (AI)
Artificial Intelligence (AI)Artificial Intelligence (AI)
Artificial Intelligence (AI)
 
Machine & Assembly Language - Chapter 5
Machine & Assembly Language - Chapter 5Machine & Assembly Language - Chapter 5
Machine & Assembly Language - Chapter 5
 
Machine & Assembly Language - Chapter 3
Machine & Assembly Language - Chapter 3Machine & Assembly Language - Chapter 3
Machine & Assembly Language - Chapter 3
 
Machine & Assembly Language - Chapter 2
Machine & Assembly Language - Chapter 2Machine & Assembly Language - Chapter 2
Machine & Assembly Language - Chapter 2
 
Machine & Assembly Language - Chapter 1
Machine & Assembly Language - Chapter 1Machine & Assembly Language - Chapter 1
Machine & Assembly Language - Chapter 1
 
IoT Course - Chapter 1
IoT Course -  Chapter 1IoT Course -  Chapter 1
IoT Course - Chapter 1
 
IoT Course - Chapter 2
IoT Course -  Chapter 2IoT Course -  Chapter 2
IoT Course - Chapter 2
 
J query
J queryJ query
J query
 
Java script
Java scriptJava script
Java script
 
Fundamentals of programming
Fundamentals of programmingFundamentals of programming
Fundamentals of programming
 
CSS
CSSCSS
CSS
 
HTML
HTMLHTML
HTML
 
مقدمه درس برنامه نویسی مبتنی بر وب
مقدمه درس برنامه نویسی مبتنی بر وبمقدمه درس برنامه نویسی مبتنی بر وب
مقدمه درس برنامه نویسی مبتنی بر وب
 
Java how to_program 1
Java how to_program 1Java how to_program 1
Java how to_program 1
 

Machine & Assembly Language - Chapter 4