Page 1
1
: فصلدستورالعمل های اساسی
Email:[email protected] 1
: اهداف این فصل . یدپس از مطالعه این فصل با مفاهیم و مطالب زیر آشنا می شو
انتقال داده ها در حافظه -۱دستورالعمل های جمع ، تفریق ، ضرب و تقسیم -۲دستورالعمل های جمع و تفریق مقادیر بزرگ -۳دستورالعمل های کاهش و افزایش -۴دستورالعمل محاسبه مکمل دو یک مقدار -۵
Email:[email protected] 2
Page 2
2
انتقال داده ها بین مکان های مختلف
در ثبات کپی محتویات متغیر : مثال
در کپی محتویات
Email:[email protected] 3
...ادامه انتقال داده ها بین مکان های مختلف
MOV AL,BXMOV P1,P2MOV DS,CSMOV DS,15F3H
حاالت غیر مجاز در دستور
.طول دو عملوند باید برابر باشد.هر دو عملوند نباید آدرس حافظه باشند
.هر دو عملوند نباید ثبات سگمنت باشندنیست انتقال مقدار ثابت به ثبات سگمنت امکان پذیر
Email:[email protected] 4
Page 3
3
...ادامه انتقال داده ها بین مکان های مختلف
Datasg segment para ‘data’p1 DB 15p2 DB 25
Datasg endsCodesg segment para ‘code’main proc farassume cs:codesg ,ds:datasg
mov ax,datasgmov ds, ax
قرار داده و محتویات این دو محل را با هم عوض کند و را در محلهای ۲۵و ۱۵برنامه ای بنویسید که دو مقدار : مثال MOV AL,P1MOV BL,P2MOV P1,BLMOV P2,ALMain endp
Codesg endsend main
Email:[email protected] 5
...ادامه انتقال داده ها بین مکان های مختلف قبل از اجرامتغیرها مقدار : خروجی مثال
اجراثبات ها بعد از مقدار
اجرامتغیرها بعد از مقدار Email:[email protected] 6
Page 4
4
...ادامه انتقال داده ها بین مکان های مختلف : مثال
Email:[email protected] 7
...ادامه انتقال داده ها بین مکان های مختلف دستور بیت ) ۱۶یا ( ۸قرار داده و در ۱بیت اول عملوند ) ۱۶یا ( ۸را در ۲عملوند
را قرار می دهد ۲، عالمت عمولند ۱دوم عملوند
Email:[email protected] 8
Page 5
5
...ادامه انتقال داده ها بین مکان های مختلف دستور بیت ) ۱۶یا ( ۸قرار داده و در ۱بیت اول عملوند ) ۱۶یا ( ۸را در ۲عملوند
، مقدار صفر قرار می دهد ۱دوم عملوند
Email:[email protected] 9
...ادامه انتقال داده ها بین مکان های مختلف پس از اجرا دستورات زیر و حاصل ثبات : مثال
چند می باشد ؟
Email:[email protected] 10
Page 6
6
دستور تغییر محتویات دو عملوند
.می باشد دارای تمام شروط : فرم کلی
Email:[email protected] 11
دستور آدرس حافظه
240165 X2402
2403300 Y2404
2405
آدرس آفست متغیر را مشخص می کند
Email:[email protected] 12
Page 7
7
...ادامه - دستور آدرس حافظه مثال
2401400 X24022403
240424052406240724082409
Email:[email protected] 13
...ادامه - دستور مثال
آدرس حافظه 4001
613 X40024003248400440053654006400712640084009
4010 Email:[email protected] 14
Page 8
8
...ادامه - دستور دلند هر سه دستور زیر با یکدیگر معا: نکته
Email:[email protected] 15
...ادامه - دستور مثال
آدرس حافظه 4001
126400240032484004400561340064007
1260400840094010 Email:[email protected] 16
Page 9
9
...ادامه - دستور : مثال
Email:[email protected] 17
...ادامه - دستور .دستور العمل زیر را در نظر بگیرد: مثال
بدست می آید ، در و ، مجموع مقادیر این دستورالعمل محتوی آدرسی را که ، از . قرار می دهد ثبات Email:[email protected] 18
Page 10
10
داده ) واقعی ( محاسبه آدرس فیزیکی تآدرس شروع سگمن
داده مورد نظرافست
DS = 18A3
...ادامه - دستور . ندمی گوی افستمورد نظر از ابتدای سگمنت داده را ، فاصله
Offset = 5B27آدرس داده واقعی ؟
18A30 Email:[email protected] بیتی است ۲۰آدرس شروع سگمنت 0000 0011 1010 1000 0001 = 19
و آدرس شروع اگر آدرس واقعی داده ، : مثال .باشد ، مقدار آفست محاسبه شود سگمنت
...ادامه - دستور
Email:[email protected] 20
Page 11
11
دستور .قرار می دهد آدرس متغیر را در یکی از ثباتهای
ثبات متغیر مثال
ذخیره می شود در ثبات آدرس متغیر Email:[email protected] 21
...ادامه -دستور دو دستور زیر با هم برابرند : نکته
Email:[email protected] 22
Page 12
12
...ادامه -دستور : مثال
، با محتوی آدرس متغیر . قرار می گیرد جمع شده و در
IF BX=10 آدرس حافظه4001
COL400240032484004400561340064007
1260400840094010 Email:[email protected] 23
...ادامه -دستور : مثال
Email:[email protected] 24
Page 13
13
دستور .یردعملوند یک با عملوند دو جمع شده و حاصل در عملوند یک قرار می گ
) SS , DS , CS , ES. ( ثبات سگمنت نباید بعنوان عملوند یک استفاده شود. هر دو عملوند نباید حافظه باشند
. این دستور روی پرچم ها تاثیر می گذارد.باشند WORDهر دو عملوند بایستی از نوع بایت یا هر دو از نوع
Email:[email protected] 25
...ادامه - دستور
. اضافه می شود واحد به محتوی ۵
. اضافه می شود واحد به محتوی Email:[email protected] 26
Page 14
14
...ادامه - دستور
نتیجه
نتیجه
:مثال
Email:[email protected] 27
...ادامه - دستور
نتیجه
:مثال آدرس حافظه
4001613 X40024003
2484004400512840064007
400840094010 Email:[email protected] 28
Page 15
15
...ادامه - دستور در دستور تاثیر پرچم : مثال
نتیجه
Email:[email protected] 29
...ادامه - دستور
نتیجه
آدرس حافظه:مثال 101
X12102X+120103X+25104X+314105X+426106X+530107
108Email:[email protected] 30
Page 16
16
دستور جمع دو مقدار از نوع
Email:[email protected] 31
...ادامه دستور :مثال
Email:[email protected] 32
Page 17
17
...ادامه دستور x
X+2
…Y
Y+2
…Z
Z+2
31 16 15 0X Word _ high Word _ LOW
31 ADC 16 15 ADD 0Y Word _ high Word _ LOW
31 16 15 0Z Word _ high Word _ LOW
، در محاسبه ADCیکی از کاربرد های مهم دستور . می باشد double wordمجموع دو مقدار از نوع
Email:[email protected] 33
...ادامه دستور .با هم جمع کرده و حاصل را در مکان دیگری از حافظه قرار دهدبیتی موجود در حافظه را ۳۲برنامه ای بنویسید که دو عدد :مثال Datasg segment para ‘data’
p1L dw 1213hp1H dw 56ABhp2L dw 1020hp2H dw 19BDhp3L dw ?p3H dw ?
Datasg endsCodesg segment para ‘code’main proc far
assume cs:codesg ,ds:datasg
mov ax,datasgmov ds, ax
MOV AX,P1LADD AX,P2LMOV P3L,AXMOV BX,P1HADC BX,P2HMOV P3H,BX
Main endpCodesg endsend mainEmail:[email protected] 34
Page 18
18
...ادامه دستور Datasg: خروجی این مثال segment para ‘data’p1L dw 1213h
p1H dw 56ABhp2L dw 1020hp2H dw 19BDhp3L dw ?p3H dw ?
Datasg endsCodesg segment para ‘code’main proc farassume cs:codesg ,ds:datasg
Email:[email protected] 35
...ادامه دستور مقادیر ثبات ها و بیت های پرچم در آغاز کار
Email:[email protected] 36
Page 19
19
...ادامه دستور
Email:[email protected] 37
...ادامه دستور مقادیر ثبات ها و بیت های پرچم در پایان کار
Email:[email protected] 38
Page 20
20
...ادامه دستور 31 16 15 0
P1 56AB 121331 ADC 16 15 ADD 0
P2 A9BD 102031 16 15 0
P3 1 00068 2233
Email:[email protected] 39
دستور جمع . انجام می شود ADDابتدا جمع معمولی با دستور -۱. اصالح می شود DAAسپس نتیجه با دستور -۲
دستور . بعد از جمع بکار می رود BCDبرای تصحیح عدد
عملوندی ندارد .کار می کند ALروی ثبات
Email:[email protected] 40
Page 21
21
...ادامه دستور جمع : مثال
نمی باشد BCDبه صورت
AL = (D9H + 60 H ) =139H . هست BCDیک عدد 1001139 0011 0001Email:[email protected] 41
...ادامه دستور جمع خالصه عمل
، نیبل پایینی یا اگر پس از یک دستور -۱بیت ۴باشد ، به این باشد ، یا اگر ۹بزرگتر از . اضافه می شود پایین تر ،
نمی باشد BCDبه صورت باشدمی BCDبه صورت
Email:[email protected] 42
Page 22
22
...ادامه دستور جمع : مثال
. درا به نیبل پایینی اضافه می کن ۶مقدار DAAاست ، AF=1چون Email:[email protected] 43
...ادامه دستور جمع باشد ، یا اگر ۹اگر نیبل باالیی بزرگتر از -۲
.جمع می شود باشد ، نیبل باالیی با
نمی باشد BCDبه صورت باشدمی BCDبه صورت
Email:[email protected] 44
Page 23
23
دستور .قرار می دهد ۱کم کرده و حاصل را در عملوند ۱را از عملوند ۲عملوند
) SS , DS , CS , ES. ( ثبات سگمنت نباید بعنوان عملوند یک استفاده شود. هر دو عملوند نباید حافظه باشند
. این دستور روی پرچم ها تاثیر می گذارد.باشند WORDهر دو عملوند بایستی از نوع بایت یا هر دو از نوع
Email:[email protected] 45
...ادامه -دستور
. کم می شود واحد از محتوی ۵
. کم می شود واحد از محتوی Email:[email protected] 46
Page 24
24
...ادامه -دستور
نتیجه
نتیجه
:مثال
Email:[email protected] 47
...ادامه -دستور آدرس حافظه:مثال
101X26102
X+1126103X+264104X+313105X+440106
60107108
Email:[email protected] 48
Page 25
25
دستور تفریق دو مقدار از نوع
Email:[email protected] 49
...ادامه دستور :مثال
Email:[email protected] 50
Page 26
26
دستور تفریق . انجام می شود SUBابتدا تفریق معمولی با دستور -۱. اصالح می شود DASسپس نتیجه با دستور -۲
دستور . بعد از تفریق بکار می رود BCDبرای تصحیح عدد
.عملوندی ندارد.کار می کند ALروی ثبات
Email:[email protected] 51
ضرب اعداد بدون عالمت دستور : فرم کلی
بایت در بایت ضرب
کلمه در کلمه ضرب
Email:[email protected] 52
Page 27
27
...ادامه -دستور : مثال
Email:[email protected] 53
...ادامه -دستور : مثال
Email:[email protected] 54
Page 28
28
...ادامه -دستور : مثال
Email:[email protected] 55
...ادامه -دستور : مثال
Email:[email protected] 56
Page 29
29
...ادامه -دستور : مثال
Email:[email protected] 57
...ادامه -دستور طیلی با مساحت مستبرنامه اي بنویسید که :تمرین
. را محاسبه نماید ۱۳و عرض ۲۰طول . در محیط شبیه ساز اجرا شود
. کد و خروجی ارسال شودEmail:[email protected] 58
Page 30
30
...ادامه -دستور
Email:[email protected] 59
ضرب اعداد عالمت دار دستور : فرم کلی
بایت در بایت ضرب
کلمه در کلمه ضرب
Email:[email protected] 60
Page 31
31
...ادامه -دستور : مثال
Email:[email protected] 61
...ادامه -دستور : مثال
Email:[email protected] 62
Page 32
32
...ادامه -دستور : مثال
Email:[email protected] 63
بیتی بدون عالمت ۳۲ضرب دو مقدار حاصلضرب نهایی حاصلضرب جزئی ۳ ۲حاصلضرب جزئی ۱حاصلضرب جزئی
103 ×124 =(3 × 1 × 124)+(0 × 10 × 124)+ (1 × 100 × 124 ) Email:[email protected] 64
Page 33
33
... ادامه بیتی بدون عالمت ۳۲ضرب دو مقدار × ۱حاصلضرب
۲حاصلضرب۳حاصلضرب۴حاصلضرب
مجموع ) = بیتی ۶۴( حاصلضرب نهایی Email:[email protected] 65
تقسیم اعداد بدون عالمتدستور
DIV BL AX÷BL AL= خارج قسمت AH= باقی ماندهکلمه بر بایت تقسیم ه کلمه مضاعف بر کلمضرب
: فرم کلی
DIV BX DX:AX÷BX AX= خارج قسمت DX = باقی ماندهEmail:[email protected] 66
Page 34
34
...ادامه - دستور : مثال
Email:[email protected] 67
...ادامه - دستور : مثال
Email:[email protected] 68
Page 35
35
تقسیم اعداد عالمت دار دستور
IDIV BL AX÷BL AL= خارج قسمت AH= باقی ماندهکلمه بر بایت تقسیم ه کلمه مضاعف بر کلمضرب
: فرم کلی
IDIV BX DX:AX÷BX AX= خارج قسمت DX = باقی ماندهEmail:[email protected] 69
...ادامه -دستور : مثال
Email:[email protected] 70
Page 36
36
...ادامه -دستور : مثال
Email:[email protected] 71
تبدیل کد اسکی به رقم و بالعکس
. کنید OFH ،ANDکد اسکی را با : روش اول -۱AND AL,OFH
تبدیل کد اسکی به رقم :قرار دارد فرض کنید کد اسکی در
. را از کد اسکی کم کنید 30Hیا 48عدد : روش دوم -۲SUB AL,48Email:[email protected] 72
Page 37
37
... ادامه تبدیل کد اسکی به رقم و بالعکس
. کنید 30H ،ORعدد را با : روش اول -۱OR AL,30H
تبدیل رقم به کد اسکی :قرار دارد فرض کنید عدد در
. را با عدد مورد نظر جمع کنید 30Hیا 48عدد : روش دوم -۲ADD AL,48
Email:[email protected] 73
دستورالعمل های کاهش و افزایششکل کلی
. ، یک واحد کاهش پیدا می کند مقدار عملوند : . کنداضافه می ، یک واحد به مقدار عملوند :
. می گذارداثر PFو SF ،OF ،ZF ،AFاین دو دستور فقط روی فلگ های Email:[email protected] 74
Page 38
38
... ادامه –دستورالعمل های کاهش و افزایش نتیجه مثال
آدرس حافظهمثال 2000
X1302001200220032004 Email:[email protected] 75
... ادامه –دستورالعمل های کاهش و افزایش آدرس حافظهمثال
2999X103000
20300126300241300363004
3005
نتیجه
Email:[email protected] 76
Page 39
39
دستورالعمل
: شکل کلیود یک عدد بکار می ر مکمل دو ،برای محاسبه
نتیجه
Email:[email protected] 77
دستورالعمل
مبهم باشد و بخواهید آن را در اگر اندازه متغیر : مثال . قرار دهید ، از دستور زیر استفاده می شود ثبات
رود برای جایگزین کردن اندازه فرضی عملوند بکار می
Email:[email protected] 78
Page 40
40
به گسترش دستور -۱
s
SSSSSSSS s
AX
AL
ALAH
Email:[email protected] 79
...ادامه به گسترش در ثبات ضرب محتوی ثبات : مثال
Email:[email protected] 80
Page 41
41
...ادامه به گسترش دستور -۲
s
SSSSSSSSSSSSSSSSS
DX:AX
AX
AXDX
Email:[email protected] 81
...ادامه به گسترش بر ثبات تقسیم محتوی ثبات : مثال
Email:[email protected] 82