Upload
kevina
View
72
Download
7
Embed Size (px)
DESCRIPTION
برنامه نویسی به زبان اسمبلی. فصل هفتم: دستورات ریاضی و منطقی و عملیات BCD. تهیه وتنظیم: سید مصطفی موسوی. رجیستر پرچم. رجیستر پرچم شامل پرچم هایی است که پس از انجام دستورات ریاضی و منطقی تحت تاثیر قرار میگیرند. شامل سه نوع بیت است: پرچم های شرایطی (که با رنگ سیاه مشخص شده اند) - PowerPoint PPT Presentation
Citation preview
تهیه وتنظیم: سید مصطفی موسوی
برنامه نویسی به زبان اسمبلی
فصل هفتم: دستورات ریاضی و منطقی و عملیات BCD
رجیس(تر پ(رچم ش(امل پ(رچم ه(ایی اس(ت ک(ه پس از انج(امدست(ورات (ریاضی و من(طقی تحت تاثیر ق(رار می(گیرند.
:شامل سه نوع بیت است)پرچم های شرایطی )که با رنگ سیاه مشخص شده اند پ(رچم ه(ایی ک(ه بای(د توس(ط دس(تورات خ(اص ص(فر و ی(ک گردن(د. )ک(ه ب(ا
رنگ قهوه ای مشخص شده اند( بیت ه(ای بال اس(تفاده ک(ه ب(ا عب(ارتU (Undefined).مش(خص ش(ده اند
رجیستر پرچم
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
U U U U OF DF IF TF SF ZF U AF U PF U CF
از پس ک(ه هس(تند ه(ایی پ(رچم ش(رایطی ه(ای پرچم منطقی و ریاض(ی اعم(ال و 0انج(ام و 1 ش(وند می
ایجاد شرایط خاصی را در برنامه اطالع می دهند.
رجیستر پرچم
( پرچم نقلیCF:) در دس(تورADD چنانچ(ه از رقم پ(رارزش رقم نقلی خ(ارج
شود یک می گردد و در غیر اینصورت صفر است.
Carryپرچم نقلی
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 01
CF
+
در دس(تورSUB نی(از ب(ه رقم قرض(ی باش(د ی(ک می چنانچ(ه گردد و در غیر اینصورت صفر است.
Carryپرچم نقلی
1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0
1 1 0 0 0 0 0 0
1CF
-
برای دس(تور زی(ر ب(ا ش(رطAL=2EH و BL=50H بع(د از را مشخص نمایید.CF و ALاجرای دستور مقدار
ADD AL, BL
AL=7EH
CF=0
Carryپرچم نقلی
برای دس(تور زی(ر ب(ا ش(رطAL=60H و BL=B0H بع(د از را مشخص نمایید.CF و ALاجرای دستور مقدار
ADD AL, BL
AL = 10H
CF = 1
Carryپرچم نقلی
(پرچم توازنPF:) پرچمPF انج(ام ش(ده آن روی ک(ه عم(ل ب(ایتی هم(راه ب(ه
تع(داد یع(نی دهن(د می ف(رد ت(وازن این 1تش(کیل در ه(ا مجموعه باید فرد باشد.
ه(ا زوج باش(د 1اگ(ر پس از اج(رای دس(تور تع(داد PF ی(ک می می شود.0شود و در غیر اینصورت
(Parity)پرچم توازن
1 0 1 0 1 1 0 0
0 0 1 0 1 0 1 00
PF
1
PF
ش(رط ب(ا زی(ر دس(تور اج(رای AL=05Hبرای از بع(د را مشخص نمایید.PF و ALدستور مقدار
ADD AL, 30H
AL = 35H = 00110101B
PF = 1
(Parity)پرچم توازن
ش(رط ب(ا زی(ر دس(تور اج(رای AL=04Hبرای از بع(د را مشخص نمایید.PF و ALدستور مقدار
ADD AL, 30H
AL = 34H = 00110100B
PF = 0
(Parity)پرچم توازن
(پرچم نقلی کمکیAF:) اگ(ر در جم(ع دو مق(دار ب(ایتی از بیت س(وم رقم نقلی خ(ارج
است.0 می شود و در غیر اینصورت 1شود مقدار آن
(Auxiliary)پرچم نقلی کمکی
0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0
0 0 0 1 1 0 0 0
1
AF
+
(پرچم نقلی کمکیAF:)
(Auxiliary)پرچم نقلی کمکی
0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0
0
AF
+
ش(رط ب(ا زی(ر دس(تور اج(رای AL=07Hبرای از بع(د را مشخص نمایید.AF و ALدستور، مقدار
ADD AL, 19H
AL=20H
AF=1
(Auxiliary)پرچم نقلی کمکی
در دس(تورSUB ب(ه رقم قرض(ی نی(از چنانچ(ه در بیت س(وم باشد یک می گردد و در غیر اینصورت صفر است.
(Auxiliary)پرچم نقلی کمکی
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0
1AF
-
0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0
1AF
-
(پرچم صفرZF:) ی(ا منطقی ص(فر ی(ک دس(تور ریاض(ی نتیج(ه اج(رای چنانچ(ه
می گردد.0 یک و در غیر اینصورت ZFباشد مقدار مث(ال: ب(رای دس(تور زی(ر ب(ا ش(رطAL=07H و BL=07H بع(د از
را مشخص نمایید.ZF و ALاجرای دستور، مقدار
SUB AL, BL
AL=0H
ZF=1
(Zero)پرچم صفر
(پرچم عالمتSF:) باش(د نش(ان 1در اع(داد دودوئی، اگ(ر بیت پ(رارزش براب(ر
دهن(ده اینس(ت ک(ه آن ع(دد منفی اس(ت و در غ(یر اینص(ورت عدد مثبت است.
:مثال
(Sign)پرچم عالمت
1 0 0 0 1 0 0 عدد منفی0
0 0 0 0 1 0 0 عدد مثبت0
(پرچم عالمتSF:) بیت منطقی، ی(ا ریاض(ی دس(تور ی(ک اج(رای از نتیج(ه حاص(ل در چنانچ(ه
با(ش(د )ع(دد اگ(ر ی(ک( ب(اش(د)ع(د(د( م(ثبت(( مق(دار (آن ص(فر (و( پ(رارز(ش ص(فر مت حاص(ل ا(ز (نت(یج(ه عم(ل( را نش(ان م(ث(بت( مق(دا(ر( آ(ن ی(ک می( (ش(ود یع(نی ع(ال(
می دهد.
مث(ال: ب(رای دس(تور زی(ر ب(ا ش(رطAL=5FH بع(د از اج(رای دس(تور، مق(دار AL و SF.را مشخص نمایید
ADD AL, 7DH
AL=DCH
SF=1یعنی عدد منفی است
(Sign)پرچم عالمت
مث(ال: ب(رای دس(تور زی(ر ب(ا ش(رطAL=5FH بع(د از اج(رای را مشخص نمایید.SF و ALدستور، مقدار
ADD AL, 12H
AL=71H
SF=0یعنی عدد مثبت است
(Sign)پرچم عالمت
(پرچم سرریزOF:) ی(ا ریاض(ی دس(تور ی(ک اج(رای از حاص(ل نتیج(ه چنانچ(ه
ب(رای ب(ایت و ب(ایتی بزرگ(تر از ی(ک ب(رای عملی(ات منطقی، دس(تورات کلم(ه ای بزرگ(تر از ی(ک کلم(ه باش(د، آنگ(اه پ(رچم
OF.یک می شود .کاربرد آن در بحث اعداد عالمت دار است
(Overflow)پرچم سرریز
ب(ا ش(رط زی(ر دس(تور ب(رای و AL=50Hمث(ال: BL=80 از بع(د را مشخص نمایید.OF و ALاجرای دستور، مقدار
ADD AL, BL
AL=D0H جم(ع آن D0Hحاص(ل پ(رارزش بیت ک(ه اس(ت اس(ت 1
( و اگ(ر ع(دد عالمت دار باش(د، ی(ک ع(دد منفی اس(ت. 1101)بن(ابراین جم(ع دو ع(دد مثبت ی(ک ع(دد منفی ش(ده اس(ت و
می شود.1پرچم سرریز OF=1
(Overflow)پرچم سرریز
شامل دستورات زیر است جمعADD و ADC تفریقSUB و SBB افزایش یک واحدINC کاهش یک واحدDEC ضربMUL تقسیمDIV
دستورات ریاضی
مشخصات دستورات ریاضیبه صورت بایتی و کلمه ای قابل اجرا هستند
ADD AL, 03H ADD AX, 30E3H
برای رجیس(تر ه(ای س(گمنت قاب(ل اج(را نمی باش(د. دس(تورزیر نا معتبر است:
ADD DS,12H داده ب(رای این فص(ل مع(رفی می ش(ود دس(توراتی ک(ه در
های بدون عالمت می باشد
دستورات ریاضی
:دستور جمع به شکل زیر می باشد ADD AX, 02H ADD AX, [02H] ADD AX, BX
:مشخصات دستورالعمل جمع منب(ع می توان(د ی(ک ع(دد، ی(ا مک(ان حافظ(ه و ی(ا محت(وی ی(ک
رجیستر باشد. ی(ک رجیس(تر ی(ا محت(وی و توان(د مک(ان حافظ(ه مقص(د می
باشد..منبع و مقصد نمی توانند همزمان مکانهای حافظه باشند
دستور جمع
:پرچم هایی که تحت تاثیر قرار می گیرندCFAFOFPFSFZF
ب(دون را اع(داد میکروپروسس(ور دس(تور این اج(رای برای مفه(ومی آن ب(رای بیت عالمت و گ(یرد می نظ(ر در عالمت
ندارد.
دستور جمع
.دستور جمع با در نظر گرفتن رقم نقلی به شکل زیر است ADC BX, 02H ;BX = BX + 02H + CF ADC AL, DL ;AL = AL + DL + CF
دستور جمع با در نظر گرفتن پرچم نقلی
:دستور تفریق به شکل زیر می باشد SUB AX, 02H SUB AX, [02H] SUB AX, BX
:مشخصات دستورالعمل تفریق منب(ع می توان(د ی(ک ع(دد، ی(ا مک(ان حافظ(ه و ی(ا محت(وی ی(ک
رجیستر باشد. ی(ک رجیس(تر ی(ا محت(وی و توان(د مک(ان حافظ(ه مقص(د می
باشد..منبع و مقصد نمی توانند همزمان مکانهای حافظه باشند
دستور تفریق
:پرچم هایی که تحت تاثیر قرار می گیرندCFAFOFPFSFZF
ب(دون را اع(داد میکروپروسس(ور دس(تور این اج(رای برای مفه(ومی آن ب(رای بیت عالمت و گ(یرد می نظ(ر در عالمت
ندارد.
دستور تفریق
زی(ر ب(ه ش(کل بیت قرض(ی ب(ا در نظ(ر گ(رفتن تفری(ق دس(تور است.
SBB BX, 02H ;BX = BX - 02H - CF SBB AL, DL ;AL = AL – DL - CF
دستور تفریق با در نظر گرفتن بیت قرضی
ب(ا ش(رط بع(د از BL=37H و CL=9CHمث(ال: ب(رای دس(تور زی(ر را مشخص نمایید.CF و CLاجرای دستور، مقدار
SUB CL, BL:جواب
CL=10011100
BL=00110111
CL(Result)=01100101
CF=0
دستور تفریق
مث(ال: ب(رای دس(تور زی(ر ب(ا ش(رطCL=2EH و BL=4AH بع(د از را مشخص نمایید.CF و CLاجرای دستور، مقدار
SUB CL, BL:جواب
CL=00101110
BL=01001010
CL(Result)=11100100
CF=1
SF=1
دستور تفریق
ب(ا ش(رط بع(د از BL=4CH و CL=21Hمث(ال: ب(رای دس(تور زی(ر را مشخص نمایید.CF و CLاجرای دستور، مقدار
SUB CL, BL:جواب
CL=00100001
BL=01001100
CL(Result)=11010101
CF=1
SF=1
دستور تفریق
مث(ال: برنام(ه ای بنویس(ید ک(ه دو ب(ایت تعری(ف ش(ده در س(گمنتب(ا مق(ادیر و 3EHداده 40H در را نتیج(ه و ب(ا هم(دیگر جم(ع را
قرار دهد.Resultبایت حافظه با نام
DataSeg SEGMENT
Num1 DB 3EH
Num2 DB 40H
Result DB ?
DataSeg ENDS
مثالهای مربوط به دستورات جمع و تفریق
CodeSeg SEGMENT
ASSUME CS:CodeSeg, DS:DataSeg
MOV AX, DataSeg
MOV DS, AX
MOV AL, Num1
ADD AL, Num2
MOV result, AL
MOV AX,4C00H
INT 21H
CodeSeg ENDS
END
مثالهای مربوط به دستورات جمع و تفریق
مث(ال: برنام(ه ای بنویس(ید ک(ه دو مق(دار دو کلم(ه ای تعری(ف ش(ده را ب(ا هم(دیگر 37952EB4H و 1021در س(گمنت داده ب(ا مق(ادیر
قرار دهد.resultجمع و نتیجه را در بایت حافظه با نام
DataSeg SEGMENT
Num1 DD 1021
Num2 DD 37952EB4H
Result DD ?
DataSeg ENDS
مثالهای مربوط به دستورات جمع و تفریق
CodeSeg SEGMENT
ASSUME CS:CodeSeg, DS:DataSeg
MOV AX, Num1
ADD AX, Num2
MOV result, AX
MOV AX, Num1+2
ADC AX, Num2+2
MOV result+2, AX
MOV AX,4C00H
INT 21H
CodeSeg ENDS
END
مثالهای مربوط به دستورات جمع و تفریق
CodeSeg SEGMENT
ASSUME CS:CodeSeg, DS:DataSeg
MOV AX, Num1
ADD AX, Num2
MOV result, AX
MOV AX, Num1+2
ADC AX, Num2+2
MOV result+2, AX
MOV AX,4C00H
INT 21H
CodeSeg ENDS
END
مثالهای مربوط به دستورات جمع و تفریق
مقص(د محت(وی مق(دار ب(ه واح(د ی(ک اف(زایش، دس(تور مشخص شده در دستور می افزاید.
:دستور افزایش، به شکل زیر می باشد INC AX INC [02H] INC [BX]
:مشخصات دستورالعمل افزایش.مقصد می تواند یک رجیستر یا یک مکان از حافظه باشد
INCدستور
:پرچم هایی که تحت تاثیر قرار می گیرندAFOFPFZFSF
ی(ا نقلی اگ(ر CFپرچم یع(نی گ(یرد. نمی ق(رار ت(اثیر تحت براب(ر ب(ایتی اج(رای دس(تور FFمحت(وی مقص(د ب(ا باش(د INC
ت(اثیر ق(رار نمی CF می ش(ود ام(ا پ(رچم 00مق(دار آن تحت گیرد.
INCدستور
اگ(ر زی(ر دس(تور ب(رای براب(ر BXمث(ال: و 40 باش(د [ 40 باش(د مق(دار ]34H براب(ر 40محت(وی ب(ایت ب(ا آدرس
چند است؟ INC BYTE PTR [BX]
[40] = 35H
INCدستور
مقص(د محت(وی مق(دار از واح(د ی(ک ک(اهش، دس(تور مشخص شده در دستور می کاهد.
:دستور کاهش، به شکل زیر می باشد DEC AX DEC [02H] DEC [BX]
:مشخصات دستورالعمل کاهش.مقصد می تواند یک رجیستر یا یک مکان از حافظه باشد
DECدستور
:پرچم هایی که تحت تاثیر قرار می گیرندAFOFPFZFSF
ی(ا نقلی اگ(ر CFپرچم یع(نی گ(یرد. نمی ق(رار ت(اثیر تحت ب(ایتی براب(ر ب(ا اج(رای دس(تور 00محت(وی مقص(د DEC باش(د
پ(رچم FFمق(دار آن ام(ا ت(اثیر ق(رار نمی CF می ش(ود تحت گیرد.
DECدستور
اگ(ر زی(ر دس(تور ب(رای براب(ر BXمث(ال: و 45 باش(د و محت(وی ب(ایت ب(ا 00H براب(ر 45محت(وی ب(ایت ب(ا آدرس
باش(ند آنگ(اه مق(دار این مکانه(ای 21H براب(ر 46آدرس حافظه بعد از اجرای دستور العمل چند است؟
DEC WORD PTR [BX]
[46] = 20H [45] = FFH
DECدستور
مث(ال: ب(رای دس(تور زی(ر اگ(رDATA1 بی(ان کنن(ده ی(ک داده ب(ا مق(دار آنگ(اه مق(دار 6830Hکلم(ه ای DATA1 باش(د
پس از اجرای دستور العمل چند است؟ DEC DATA1
DATA1 = 682FH
DECدستور
ب(دون ب(ایت ب(دون عالمت از منب(ع را در ب(ایتدس(تور ض(رب ب(دون عالمت، ی(ک ضرب م(ی کند.ALعالمت موجود (در رج(یستر
MUL BL ;AX = AL * BL MUL BYTE PTR [BX] ;AX = AL * [BX]
پای(ه دس(تورالعمل ض(رب، رجیس(تر ب(ه ALیع(نی ی(ک نتیج(ه ض(رب می باش(د. ق(رار می گیرد.AXدر ر(جیس(تر دو( بای(تی (شکل( یک عدد(
ب(دون عالمت از منب(ع را در کلم(ه ب(دون عالمت کلم(ه، ی(ک دو ب(ایتیدر دس(تورات ضرب می( کند.AXموجود در (رجی(ستر
MUL BX ;DX|AX = AX * BX MUL WORD PTR [BX] ;DX|AX = AX * [BX]
پای(ه دس(تورالعمل ض(رب کلم(ه ای، رجیس(تر ی(ک نتیج(ه AXیع(نی باش(د. می ق(رار می گیرد.DX و AXض(رب ب(ه ش(ک(ل ی(ک ع(د(د د(و کل(م(ه (ای د(ر ر(جیس(ترهای (
MULدستور
:دستور ضرب کلمه ای MUL منبع
MULدستور
AX
منبع
DX AX
:دستور ضرب بایتی MUL منبع
AL
منبع
AX
:مثال MUL BH ;AX = AL * BH MUL CX ;DX|AX = AX * CX MUL BYTE PTR [BX] ;AX = AL * [BX] MUL factor[BX] ;AX = AL * factor[BX]
MULدستور
مث(ال: برنام(ه بنویس(ید ک(ه ی(ک ب(ایت از حافظ(ه ب(ه ن(امMULBYTE را در ی(ک کلم(ه از حافظ(ه ب(ه ن(ام MULWORD ضرب کند.
MOV AX, MULWORD
MOV CL, MULBYTE
MOV CH,00H
MUL CX
MULدستور
ب(دون عالمت، مق(دار رجیس(تر تقس(یم ب(ر AXدس(تور را مق(د(ار موج(ود (در من(ب(ع تقس(یم( می (کن(د. خ(ارج قس(مت د(ر
قرار( می گیرد.AH و باقیمانده (در رجیستر (ALرجیستر ( DIV BL ;AL = AX / BL AH=AX % BL DIV BYTE PTR [BX] ;AL = AX / [BX] AH = AX % [BX]
ش(امل رجیس(ترهای دوکلم(ه اییا ی(ک ع(دد DX و AX را ب(ر کن(د. (خ(ارج( قس(مت (در رجیس(تر ت(قس(یم (می م(ق(دار( منب(ع
AX و( باقیمانده در ر(جیستر DX.ق(رار می (گیرد DIV BX ; AX = (DX|AX) / BX AX = (DX|AX) % BX DIV WORD PTR [BX] ; AX = (DX|AX) / [BX] AX = (DX|AX) % [BX]
DIVدستور
کلم((ه تقس((یم دس((تور ای:
DIVدستور
DX
DXمنبع AX
:دستور تقسیم بایتی
AX
AH
AXمنبع
AL
:مثال DIV BH ;AL = AX / BH AL = AX % BH DIV CX ;AL = AX / CX AL = AX % CX DIV BYTE PTR [BX] ;AL = AX / [BX] AL = AX % [BX] DIV factor[BX] ;AL = AX / factor[BX] AL = AX / factor[BX]
DIVدستور
مث(ال: برنام(ه بنویس(ید ک(ه ی(ک ب(ایت از حافظ(ه ب(ه ن(امDIVISOR تقس(یم ک(رده، خ(ارج قس(مت و 10را ب(ر ع(دد
num2 و num1باقیمان(ده را در ب(ایت ه(ای حافظ(ه ب(ا ن(ام قرار دهد.
MOV AL, DIVISOR
AND AX, 00FFH
MOV CL, 10
DIV CL
MOV num1, AL
MOV num2, AH
DIVدستور
:دستورات منطقی شامل دستورات زیر استANDORXOR
:این دستورات بر روی پرچم های زیر اثر می گذارندSFZFPFCF و OF.برابر صفر می شود و بر رویAF.تاثیر نمی گذارند
دستورات منطقی
:مشخصات دستورالعمل های منطقی منب(ع می توان(د ی(ک ع(دد، ی(ا مک(ان حافظ(ه و ی(ا محت(وی ی(ک
رجیستر باشد. ی(ک رجیس(تر ی(ا محت(وی و توان(د مک(ان حافظ(ه مقص(د می
باشد..منبع و مقصد نمی توانند همزمان مکانهای حافظه باشند
دستورات منطقی
دستورAND:به شکل زیر می باشد AND AX, 02H AND AX, [02H] AND AX, BX AND [02H], AX
ANDدستور
مث(ال: اگ(ر مق(دار رجیس(ترBX براب(ر B35EH باش(د پس از اجرای دستور زیر مقدار آن چند است؟
AND BX, 00FFH
:005جوابEH
ANDدستور
1 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0
دستورOR:به شکل زیر می باشد OR AX, 02H OR AX, [02H] OR AX, BX OR [02H], AX
ORدستور
مث(ال: اگ(ر مق(دار رجیس(ترBX براب(ر B35EH باش(د پس از اجرای دستور زیر مقدار آن چند است؟
OR BX, 00FFH
:جوابB3FFH
ORدستور
1 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1
دستورXOR:به شکل زیر می باشد XOR AX, 02H XOR AX, [02H] XOR AX, BX XOR [02H], AX
XORدستور
مث(ال: اگ(ر مق(دار رجیس(ترBX براب(ر B35EH باش(د پس از اجرای دستور زیر مقدار آن چند است؟
XOR BX, 00FFH
:جوابB3A1H
XORدستور
1 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1 0 1 1 0 0 1 1 1 0 1 0 0 0 0 1
برنام(ه ای بنویس(ید ک(ه دو کلم(ه تعری(ف ش(ده در حافظ(ه ب(ا مق(دیر139H و F3E0H را ب(ا هم(دیگر AND و نتیج(ه را در کلم(ه ای ب(ه
قرار دهد.ANDHEXنام Dseg SEGMENT
HEX1 DW 0F3E0H
HEX2 DW 139H
ANDResult DW ?
Dseg ENDS
MOV AX, HEX1
AND AX, HEX2
MOV ANDResult, AX
مثال
این دس(تور محتوی(ات ه(ر بیت از مقص(د را ب(ه تع(داد مش(خص ب(هسمت چپ شیفت می دهد.
.با ارزش ترین بیت به پرچم نقلی انتقال می یابد.کم ارزش ترین بیت برابر صفر می شود
:مثال SHL BX, 4 SHL BYTE PTR [BX]
رجیسترBX.چهار بار به سمت چپ شیفت پیدا می کند
SHLدستور
0CF
:دستورات شیفت بر پرچم های زیر تاثیر می گذارندSFZFCFPF در صورتی که مقصد ،AL.باشد معنی خواهد داشت OF اگ(ر عالمت ع(دد ع(وض ش(ود مق(دار ،OF ی(ک می ش(ود. در ش(یفت
های بیش از یک عدد این پرچم تعریف نشده است.AF.تعریف نشده است ،
می ت(وان تع(داد دفع(ات ش(یفت را درCL ق(رار داد و س(پس از استفاده نمود: SHLدستور
MOV CL, 02H SHL BP,CL
SHLدستور
مث(ال: اگ(ر مق(دارBX براب(ر E5D3 باش(د پس از اج(رای دس(تور و پرچم ها را تعیین نمایید:BXزیر مقدار
SHL BX,1
:قبل از اجرای دستور BX= 1110010111010011
پس از اجرای دستور BX= 1100101110100110 = CBA6 H CF=1 OF=0 PF=? SF=1 ZF=0
SHLدستور
همانن(د دس(تورSHL ب(ا این تف(اوت ک(ه بیت ه(ا ب(ه س(مت اس(ت راست منتقل می شوند:
.با ارزش ترین بیت برابر صفر می شود.کم ارزش ترین بیت به پرچم نقلی انتقال می یابد
SHR BX, 4 SHR BYTE PTR [BX]
SHRدستور
0 CF
مث(ال: اگ(ر مق(دارBX براب(ر E5D3 باش(د پس از اج(رای دس(تور و پرچم ها را تعیین نمایید:BXزیر مقدار
SHR BX,1
:قبل از اجرای دستور BX= 1110010111010011
پس از اجرای دستور BX= 0111001011101001 = 72E9 H CF=1 OF=1 PF=? SF=0 ZF=0
SHRدستور
مث(ال: برنام(ه ای بنویس(ید ک(ه در آن ج(ای نیم ب(ایت کم ارزش و نیمب(ایت (پ(ر( ار(زش( ی(ک( ب(ا(یت( (از( س(گمن(ت( د(اده ع(وض ش(ده( و( ن(تیج(ه در(
قرار( گیرد. SWAPBYTEب(ایت حافظه ب(ه نا(م Dseg SEGMENT
DATA1 DB 6EH
SWAPBYTE DB ?
Dseg ENDS
MOV CL,4
MOV AL, DATA1
SHL AL, CL
MOV BL,AL
MOV AL, DATA1
SHR AL,CL
OR AL, BL
MOV SWAPBYTE, AL
مثال
مث(ال: برنام(ه ای بنویس(ید ک(ه مش(خص کن(د ب(ایت تعری(ف ش(ده درس(گ(منت( دا(ده زو(ج ا(س(ت ی(ا ف(ر(د؟ (اگ(ر( زوج ب(اش(د آن(را (در ب(ایتی ب(ه
.قرار دهد (ODDBو (در (غیر( اینصورت (در ب(ای(تی به ن(ام EVENBنا(م Dseg SEGMENT
DIGIT DB 6EH
EVENB DB ?
ODDB DB ?
Dseg ENDS
MOV AL, DIGIT
SHR AL, 1
JC SAVEODD
MOV AL, DIGIT
MOV EVENB, AL
JMP EXIT
SAVEODD: MOV AL, DIGIT
MOV ODDB, AL
EXIT: …
مثال
در بی(ان ع(دد ده(دهی ب(ه ف(رمBCD ه(ر رقم ده(دهی بوس(یله ع(دد ،چهار رقمی باینری بیان می گردد.
35 0011 0101 ; BCD 35 0010 0011 ; باینری
BCDبر دو نوع است: فشرده و غیر فشرده درBCD بیت در نظ(ر گرفت(ه می ش(ود 4 فش(رده ب(رای ه(ر رقم
غ(یر فش(رده ب(رای ه(ر رقم ی(ک ب(ایت در نظ(ر گرفت(ه BCDام(ا در می شود.
35 0011 0101 35 00000011 00000101
BCDعملیات
مع(ادل 1مث(ال ک(ه بنویس(ید ای برنام(ه :BCD در ش(ده تعری(ف ب(ایت ب(ایت (مت(والی ذخ(یره نتیج(ه را در( س(ه آورد(ه(، س(گمنت( دا(ده را( بد(س(ت
نماید.Dseg SEGMENT
BINNUM DB 149
BCD1 DB ?
BCD10 DB ?
BCD100 DB ?
Dseg ENDS
;---------------------------
MOV AH, 0
MOV AL, BINNUM
MOV CL, 10
DIV CL
MOV BCD1, AH
;-------------------------
MOV AH, 0
DIV CL
MOV BCD10, AH
MOV BCD100, AL
مثال
ب(ایت 2مث(ال دو ک(ه بنویس(ید ای برنام(ه :BCD در تعری(ف ش(ده س(گمنت داده را ب(ه مع(ادل ب(اینری آن تب(دیل ک(رده و در ب(ایتی ب(ا
قرار دهد. EQUBINنام Dseg SEGMENT
BCD1 DB ?
BCD2 DB ?
BINNUM DB 149
Dseg ENDS
;---------------------------
MOV AL, BCD1
MOV BL, 10
MUL BL
ADD AL, BCD2
MOV EQUBIN, AL
;-------------------------
مثال
ب(ایت تعری(ف ش(ده در س(گمنت 3مث(ال : برنام(ه ای بنویس(ید ک(ه فش(رده BCD فش(رده ب(ودن تس(ت کن(د. اگ(ر BCDداده را ب(رای
و در غ(یر اینص(ورت PKBCDباش(د، آن(را در ب(ایت حافظ(ه ب(ه ن(ام قرار دهد.UNPKDدر بایت حافظه با نام
Dseg SEGMENT
NUM DB 83H
PKBCD DB ?
UNPKD DB ?
Dseg ENDS
مثال
ادامه...(3مثال( :MOV AL, NUM
AND AL, 0FH
CMP AL, 09H
JA UNPAC
MOV AL, NUM
AND AL, 0F0H
CMP AL, 090H
JA UNPAC
MOV AL,NUM
MOV PKBCD, AL
JMP EXIT
UNPAC:
MOV AL, NUM
MOV UNPKD, AL
EXIT:
مثال
برنام(ه ای بنویس(ید ک(ه ی(ک ب(ایت را ک(ه در حافظ(ه داده ب(ه 4مث(ال : فش(رده تعری(ف ش(ده اس(ت ب(ه ص(ورت دو ب(ایت و ب(ه BCDص(ورت
غیر فشرده ذخیره کند.BCDفرم Dseg SEGMENT
PKNUM DB 26H
BCD1 DB ?
BCD2 DB ?
Dseg ENDS
;------------------------------------
MOV AL, PKNUM
ADD AL, 0FH
MOV BCD1, AL
;------------------------------------
MOV AL, PKNUM
MOV CL, 4
SHR AL, CL
MOV BCD2 , AL
مثال
ب(ایت 5مث(ال بنویس(ید ک(ه دو برنام(ه ای :BCD تعری(ف ش(ده در فشرده در آورد.BCDسگمنت داده را به فرم
Dseg SEGMENT
BCD1 DB 03H
BCD2 DB 08H
PKBCD DB ?
Dseg ENDS
;------------------------------------
MOV AL, BCD2
MOV CL, 4
SHR AL, CL
OR AL, BCD1
MOV PKBCD, AL
مثال