Transcript Assembly_4
مهدی ایل بیگی
دانشگاه آزاد اسالمی دماوند
تیمهها25 و10 و5 و1 رب بههی ه ی ههان2557 ههی مبل ه
Stackseg
Stackseg
Datasg
Datasg
برنامههی بن بسید ه.1
. خرد س
segment stack ‘stack’
Dw 100h dup(0)
ends
segment
X
dw
c25 db
c10 db
c5 db
c1 db
ends
‘data’
2557
?
?
?
?
2
Codesg
segment ‘code’
Assume ss:stacksg,ds:datasg , cs:codesg
Main
proc far
Mov ax,datasg
Mov ds,ax
;-----------------------------------------
mov cl, 25
Mov ax, x
Div cl
Mov c25, al
mov cl, 10
Mov al, ah
Cbw
Div cl
Mov c10, al
3
Mov cl, 5
Mov al, ah
Cbw
Div cl
Mov c5, al
Mov c1, ah
;-----------------------------------------Mov ax, 4c00h
Int 21h
Main
endp
Codesg
ends
End main
4
.1برنامههی بن بسید ه
محا بی ن ای .
ههی ن هرب 5درس رب بز حافظههی خیبن ه د و م ه
.2برنامی بن بسید
ن ای .
ی یک درجی حربر رب بز ل یس بهی فارهاایه تبه ی
رب
ی روز ماد و ا تیل و تاریخ روز رب بز حافظی خیبنه د
.3برنامی بن بسید
و ت بد روز ان زن گ رب محا بی ن ای .
.4برنامههی بن بسید ه ههی تههاریخ روز رب خیبن ه د و ت ه س ه ههی بمههروز چس ه
شنبی ب ( .روز بو ا رب شنبی و ی ماد ا رب 30روزد در نظر بگ ری )
5
• در ه اربرن BCDههر ر ههد د ه
بی ن ایش دبدد م شید.
بهها 4
0
1
2
3
4
5
6
7
8
9
• مثا :
1389
0001 0011 1000 1001
• 6تر ب 1010تا 1111حهاون گوینهی
دبدد بن نی تس .
6
بال استفاده
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
• BCDفشهردد :در یههک بایه
تس .
4بیه بههاپ و نههای
• BCDغ ههر فش ههردد :در ی ههک بای ه
4بی باپ صفر م باش .
ههر ه بد شهها د سه د یههک ر ههد د ه
1رقم دسیمال
1رقم دسیمال
4بی ه ن ههای
ب ه و
ش هها د س ه د ی ههک ر ههد د ه
1رقم دسیمال
0
7
0
0
0
• بار مج یع دو ر د تر بز دد باش مش ل بیجاد نخیب
• باههر مج ههیع دو ر ههد بیشههتر بز نههی شههید ه ان حاصه
بازد 10تا .)15
در صورتی که حاصلجمع دو
رقم بیش از 9باشد باید
جواب تصحیح شود
یعنی عدد 6به آن رقم
افزوده شود
8
ش .
ه ان ه م ه خیب سه بههید ( در
1
0 0 0 1,1 0 0 1,0 1 0 1
0 0 0 1,1 0 0 0,0 0 1 0
195
182
0 0 1 1,0 0 0 1,0 1 1 1
377
7
1
6
3
+
7
7
3
+
• بربن ج ع بع بد BCDدر زبا ب بل :
– د تیرب م یل ج ع بی کار بردد م شین .
– پس بز ج ع جیبب بای تصح ح شید.
د تیر زیر بین تصح ح رب بنجاد م د :
Decimal Adjust After Addition
ن تی :دبدد ان BCDبی صیر فشردد فرض م شین .
9
DAA
AF
CF
بیت باال4
+
بیت باال4
بیت4
AH
BH
CH
IF ( CF=1 ) OR (CH>9) THEN
Ch = Ch + 6
بیت پایین4 AL
بیت پایین4
BL
بیت4 CL
IF ( AF=1 ) OR (CL>9) THEN
CL = CL + 6
10
• ببت ب د تیرب م یل تفریق بکار بردد م شید.
•
پس نت جی بصالح م شید.
DAS
Decimal Adjust after Substraction
• نکا ع ل ا :BCD
• د تیرب DAAو DASفقط بر رون ALع
• بین د تیرب بای بالفاصلی ب
11
م
سس .
بز د تیر ج ع و تفریق بجرب شین .
•
دبربن یک
ر ر د بز بع بد د
55
+53
108
-96
چی ر ع د 48وبح
بضاف دبرد پس بربن تصح ح
ج ع دو ع د 96 = 2 * 48رب
بای بز حاصلج ع د س د.
در ی تد ASCIIم باش .
30H
48
0
’‘7
’+’5
31H
49
1
32H
50
2
12
33H
51
3
34H
52
4
35H
53
5
36H
54
6
37H
55
7
38H
56
8
39H
57
9
1بایت
12
• ببت ب ج ع و تفریق م یل رب بنجاد م د د.
پس نت جی با ب تفادد بز د تیرب زیر تصح ح م شید.
•
ASCII Adjust after Addition
AAA
ASCII Adjust after Substraction
AAS
• ن تی :در ر دو د تیر ع لین در ALربر دبرد.
13
ر دو ع د بی صیر BCDغ ر فشردد
•
• نت جی بی صیر BCDفشردد ب
تس .
.
• در ع ل هها ضههرب بع ه بد ASCIIپههس بز بنجههاد ضههرب بهها د ههتیر زیههر نت جههی رب ههی در
AXربر دبرد تصح ح م ن ای د.
ASCII Adjust after Multiplication
ن تی :بربن تب ی بع بد ب ک بی BCDکاف ب
14
AAM
ا رب با AND 0Fhس د.
. وری
رب ب7 و9 ضرب دو ع د ب ک: • مثا
MOV AL, ‘9’
AND AL,0F
AL=39H
AL=09H
MOV BL,’7’
AND BL,0F
BL=37H
BL=07H
MUL BL
ا
مقادیر ثبا
ب بز بجربن
د تیرب
AX=003FH
AAM
AX=0603
OR AX, 3030H
AX=3633H=‘6’’3’
15
• در تق
– مق
– مق
– مق
د بع بد :ASCII
ید BCDغ رفشردد ب .
ید در AXم باش .
ید عل ی BCDغ رفشردد ب
.
• ب بز بنجاد تق د:
در AL
– خارج
– با ان د در AH
• ن تی :ب بز بنجاد تق د با ب تفادد بز د تیر زیر مق ید رب تصح ح م ن ای د:
16
ASCII Adjust before Division
AAD
AX=3532H
AX=0502
MOV AX,3532h
AND AX,0F0FH
AAD
MOV DL,’7’
AND DL,0FH
DIV DL
OR AX,3030H
AX=0034H
ا
مقادیر ثبا
ب بز بجربن
د تیرب
DL=37H
DL=07H
AL=07H
AH=03H
AX=3337H
17
• تب ی
ASCIIبی BCDغ ر فشردد:
– فقههط کههاف ب ه چاههار بی ه بههاپد صههفر شههین .در نت جههی ع ه د رب بهها AND 0Fh
م س د.
• مثا :ع د 6در ن ایش ب ک رب بی BCDتب ی ن ای .
’‘6
ASCII
AND 0FH
06H
0110
18
0000
36H
ASCIIبی BCDفشردد:
• تب ی
– ببت ب ر بای رب با AND 0Fhم س د.
– ههپس 4بیه نههای بایه بو بههی عسههیب 4بیه نههای جههیبب بنتخههاب خیب ه شه و
4بی باپد جیبب برببر با 4بی نای بای دود م شید.
3X
3X
AND 0Fh
جواب نهایی
19
0X
0X
0000xxxx
0000XXXX
XXXXxxxx
• ب ش اب غ رشرط
– مشابی د تیر GOTO
• ب ش اب شرط
– مشابی با IF
20
• د ههتیر JMPش ه ی د ههتیر go-toدر نا ههکا م ه باش ه .بی ههن د ههتیر دبربن ف ههرد زی ههر
ب :
JMP LABEL
– ب بز بجربن بین د تیر د هتیر ب ه ن بهربن بجهرب د هتیرن بها برچ هب هر شه د
در مقاب JMPخیب بید.
• مثا :با ب تفادد بز د تیر JMPیک حلقی ب ناای ب ازی .
MOV AX , 0A00h
L1 : INC AX
ADD AX,BX
JMP L1
21
• بین د تیرب بز فلگ ا بثر م نذیرن .
• ب بز بین د تیرب نردبزش پزد جا تغ ر فلگ ا بنجاد م شید.
– ی ببت ب یک محا بی یا مقای ی بنجاد م شهید و هپس بهر ب هاس شهربیط نت جهی
یک نرش صیر م ا رد.
• د تیرب نرش شرط
ی د تی
تس :
.1د تیرب نرش مبت بر فلگ ا
.2د تیرب نرش بر ب اس نت جی مقای ی بع بد عالمت بر
.3د تیرب نرش بر ب اس نت جی مقای ی بع بد
22
عالم
بله مقه بر ارفتههی بنه
• بیههن نههیع نههرش هها بههر ب ههاس محتییهها فلههگ هها ههی بهها محا ههبا
. بنجاد م نذیرن
توضیح
شرط پرش
نام دستور
JUMP SIGN (NEGATIVE)
SF=1
JS
JUMP NOT SIGN (POSITIVE)
SF=0
JNS
JUMP CARRY
CF=1
JC
JUMP NOT CARRY
CF=0
JNC
JUMP OVERFLOW
OF=1
JO
JUMP NOT OVERFLOW
OF=0
JNO
JUMP PARITY
PF=1
JP
JUMP NOT PARITY
PF=0
JNP
23
• د تیر CMPدو ع د رب با د مقای ی م ن ای .
• بربن بین مسظیر ع لین بو رب بز ع لین دود د م س :
– در صیرت ی جیبب صفر شید دو ع د م اویس .
– بار جیبب مسف ش ع لین دود برراتر ب )CF = 1, ZF = 0( .
– بار جیبب مث ش ع لین بو برراترب )CF = 0, ZF = 0( .
ZF
CF
1
0
OP1 = OP2
0
0
OP1 > OP2
0
1
OP1 < OP2
OF
CMP OP1,OP2
SF
ZF
OP1 - OP2
AF
DF
CF
24
OP1و OP2تغییر
نمی کنند
ه CFزمهها ر برببههر شههک مرشههید ههی در تفر ههق شههک ر ههد عار ههی وجههید
• فلههگ ر ههد نقل ه
دبشههتی باش ه (نت جههی ع ل هها تفریههق مسف ه شههید) چسانگههی عار ههی وجههید ن بشههتی باش ه
بشن فلگ برببر صفر خیب بید.
• فلههگ ههرر ر شهها OFدر صههیرتر شههک خیب ه بههید ههی ههرر ر وجههید دبشههتی باشه و در
غ ر بشسصیر برببر صفر خیب بید.
• فلههگ عالم ه شهها SFزمهها ر شههک خیب ه بههید ههی حاص ه تفر ههق شهها د س ه د شههک ع ه د
مسف ههر م ه دو باش ه و زم هها ر بربب ههر ص ههفر خیب ه ب ههید ههی حاص ه تفر ههق بربب ههر ص هفر ش هها
مث باش .
• فله ههگ صه ههفر شه هها ZFزمه هها ر شه ههک خیب ه ه به ههید ه ههی حاص ه ه تفر ه ههق صه ههفر باش ه ه و در غ ه ههر
بشسصیر برببر صفر خیب بید.
25
CMP
AX,BX
CMP
AX, Z
CORRECT USE
CMP
Z, AX
CMP AX,120
CMP
CMP
120,Y
200, CX
ERROR
عملوند اول نمی تواند عدد ثابت باشد
26
• در بیههن نههیع نههرش هها ببته ب یههک مقای ههی به دو عه د ه عالمه صههیر مه ا ههرد و ههپس
برب اس حاپ مختلف ی م تیبن رخ د نرش صیر م ا رد.
27
شرط پرش
نام دستور
توضیح
OP1 = OP2
JE
JUMP EQUAL
OP1 # OP2
JNE
JUMP NOT EQUAL
OP1 > OP2
JA
JUMP ABOVE
OP1 >= OP2
JAE
JUM ABOVE OR EQUAL
OP1 < OP2
JB
JUMP BELOW
OP1 <= OP2
JBE
JUMP BELOW OR EQUAL
• در بیههن نههیع نههرش هها ببت ه ب یههک مقای ههی ب ه دو ع ه د عالمت ه بر صههیر م ه ا ههرد و ههپس
برب اس حاپ مختلف ی م تیبن رخ د نرش صیر م ا رد.
28
شرط پرش
نام دستور
توضیح
OP1 = OP2
JE
JUMP EQUAL
OP1 # OP2
JNE
JUMP NOT EQUAL
OP1 > OP2
JG
JUMP GREATER
OP1 >= OP2
JGE
JUMP GREATER OR EQUAL
OP1 < OP2
JL
JUMP LESS
OP1 <= OP2
JLE
JUMP LESS OR EQUAL
• در حلقی ت ربر FORبغلب ت بد دف ات هی ب نهی حلقهی بایه بجهرب شهید بز به م ه
م باش .در زبها ب ه بل بیهن ت ه بد رب بای ه در ثبها CXهربر دبد و بز د هتیربل
LOOPب تفادد ن ید .در بین د تیر:
•
ر بار یک وبح بز CXد م
س .
• نرش زما بنجاد م شید ی CXصفر نباش .
)For(i=0;i<20;i++
;X++
MOV X, 0
MOV CX, 20
FOR:
INC x
LOOP FOR
29
• د ههتیربل JCXZیههک نههیع نههرش مه باش ه .مستهه نههرش بههر ب ههاس فلو ه بنجههاد ن ه
شههید بل ههی چسانگههی محتههیبن ثبهها CXبرببههر بهها صههفر باشه نههرش بنجههاد مه شههید .شههک
ل بصیر زیر م باش :
LABEL
JCXZ
JUMP if CX is ZERO
• مثا :بیجاد حلقی بن با 50بار ت ربر:
CX , 50
.
.
.
CX
LABEND
LABI
30
MOV
LABI:
DEC
JCXZ
JMP
LABEND:
• چسانگی محتیبن ثبا CXصفر ش د باش و گس فلگ صهفر ) (ZFیهک باشه
د تیربل LOOPZبی برچ ب میرد نظر نرش م س .
)WHILE (CX != 0) AND (ZF == 1
{
}
• مثا :حلقی بن ی 10بار و بشرط بیس ی AX = 1200باش ت ربر م شید.
MOV CX,10
LABEL: MOV AX,X
ADD AX,Y
MOV X,AX
CMP AX,1200
LOOPZ LABEL
31
;i = 10
)WHILE ( i != 0) AND (X == 1200
{
;X = X + Y
;i--
}
• د قا مث LOOPZب
.
• بها عه د ت هاون دو بنرنه ما سها ZF = 0مه شهید در نت جهی ت هربر حلقهی بهی نایها مه
ر .
• دل ب تفادد بز بین د تیر؟
– خیبناد برنامی !!!
32
• چسانگ ههی محت ههیبن ثب هها CXص ههفر شه ه د باشه ه و گسه ه فل ههگ ص ههفر ) (ZFص ههفر
باشه ه ه (ی ه ه ه نت جه ه ههی مقای ه ه ههی دو عه ه ه د عه ه ه د ت ه ه ههاون رب شه ه هها د ه ه ه ) د ه ه ههتیربل
LOOPNZبی برچ ب میرد نظر نرش م س .پس:
• ت ربر حلقی تا زما ی:
– CXصفر ش د باش
– و نت جی محا با غ ر صفر باش
)WHILE(CX != 0) AND (ZF == 0
{
• خروج بز حلقی زما ب
– CXصفر شید
– یا نت جی محا بی صفر شید (ت اون)
ی:
دستور LOOPNEهم به همین معنی بکار برده می شود
33
}
34
ههر ش ه د ن ههرش کیت ههاد ()SHORT
.1ت ههام د ههتیرب نرش ه
ح ب ثر 127خط نای تر یا 128خط باپتر نرش م سس .
ههتس ی ه
.2د تیرن بهربن نهرش ب ونهی شهرط بلسه وجهید دبرد .بیهن د هتیر LJMPمه
باش .
.3بربن نرش ان شرط بلس بای بیهن کهار رب برنامهی نهیدس بنجهاد د ه ( .مثها :
نرش شرط بی د تیرن ی یک نرش ب ونی شهرط بهی برچ هب هاهاد بنجهاد
م د )
.4د تیرب نرش بر رون فلگ ا تاث ر ن برن .
35
.MODEL SMALL
.STACK 64
;Define stack
.DATA
;Define data segment
FIRST
DB 10
SECOND
DB 14
;---------------------------------------------.CODE
;Define code segment
MAIN PROC FAR
MOV AX, @data ;1- Set data segment
MOV DS,AX
;2- address
MOV BL,FIRST ;3-BL=10
MOV CL,SECOND
;4-CL=15
MOV AL,0
;5-AL=0
AGAIN: ADD AL,BL
;6-AL=AL+BL
INC BL
;7-BL=BL+1
CMP BL,CL
;8-Cmopare BL & CL
JLE AGAIN
;9- if BL <= CL go to AGAIN
MOV AX,4C00H ;10-End of
INT 21H
;11- processing
MAIN ENDP
; End of procedure
END MAIN
; End of program
36
STACKSG SEGMENT STACK 'STACK'
DW 32H DUP(0)
; 32H word for stack
STACKSG ENDS
; End of segment
DATASG SEGMENT
'DATA'
DATAX
DB 23H,10H,3BH,44H,12H
SUM
DB ?
DATASG ENDS
;End of segment
CODESG SEGMENT 'CODE'
ASSUME SS:STACKSG,DS:DATASG,CS:CODESG
MAIN
PROC FAR
MOV AX,DATASG ;1-Initialize DS
MOV DS,AX
;2- register Addressing
MOV CL,5
;3- Move 5 to counter CL
MOV DI,OFFSET DATAX
;4- DI=Offset DATAX
MOV AL,0
;5- Move 0 to AL
BACK1: ADD AL,[DI]
;6- Add [DI] to AL
INC DI
;7- Increment pointer DI
DEC CL
;8- Decrement counter CL
JNZ BACK1
;9- If CL#0 go to BACK1
MOV SUM,AL
;10- Else SUM=AL
MOV AX,4C00H
;11- End of
INT 21H
;12- processing
MAIN ENDP
; End of procedure
CODESG ENDS
; End of segment
END MAIN
; End of program
37
.MODEL SMALL
.STACK 100
.DATA
ORG 10H
DATA_IN DB 25,30,50,40,60
ORG 30H
COPY1 DB 5 DUP(?)
.CODE
MAIN PROC FAR
MOV AX,@DATA
MOV DS,AX
LEA SI, DATA_IN
LEA DI, COPY1
MOV CL, 5
BACK: MOV AL, [SI]
MOV [DI], AL
INC DI
INC SI
DEC CL
JNZ BACK
MOV AX,4C00H
INT 21H
MAIN ENDP
END MAIN
38
.1بین د تیرب بع ا نایی مساق مث AND, ORو ...
.2در بین د تیرب ع ل ا بر رون تک تک بی
.3بین د تیرب ع یما ب بز د تیرب
ا بنجاد م شید.
سترل ب تفادد م شین .
.4بین د تیرب بر رون فلگ ا تاث راذبر خیب س بید.
39
تس .
SF
AND
OP1,OP2
ZF
:• فرد د تیر
PF
OP1←OP1.OP2
CF = 0
OF = 0
X1
X2
X1.X2
0
0
0
0
1
0
1
0
0
1
1
1
: • مثا
OP1 1 0 0 1 1 0 1 0
OP2 0 0 1 1 0 1 0 1
AND
0 0 0 1 0 0 0 0
40
ل د تیر :OR
•
فرم
•
بز د هتیر ORبهربن یهک هرد ت ه بدن بیه
م تیب ب تفادد ن ید.
•
بز د ه ه ه ههتیر ANDم ه ه ه ه ته ه ه ههیب ب ه ه ه هربن صه ه ه ههفر
( )Maskه ه ه ههرد ت ه ه ه ه بدن بی ه ه ه ه م ه ه ه ه ته ه ه ههیب
ب تفادد ن ید.
SF
OR OP1,OP2
ZF
PF
CF = 0
OF = 0
41
OP1←OP1+OP2
OR
X2
X1
0
0
0
1
1
0
1
0
1
1
1
1
SF
XOR OP1,OP2
:• فرد د تیر
ZF
PF
OP1←(OP1) XOR (OP2)
CF=0
OF=0
X1
X2
XOR
0
0
0
OP1 1 0 0 1 1 0 1 0
0
1
1
OP2 0 0 1 1 0 1 0 1
1
0
1
XOR
1
1
0
: • مثا
1 0 1 0 1 1 1 1
42
• نت جی مج یعی د تیرب زیر چی
؟
XOR AX,BX
XOR BX,AX
XOR AX,BX
• جیبب:
– محتییا AXو BXرب با د ت ییض م ن ای .
43
ههان ع لین ه رب م کههیس م ه ن ای ه و رون فلههگ هها تههاث ر اههذبر نخیب ه
•
د ههتیر NOTتههک تههک بی ه
بید.
•
د ههتیر TESTهها د ههتیر ANDم ه باش ه بهها بیههن تفههاو
فقط فلگ ا تغ ر خیب دبد.
NOT OPERAND
SF
ههی ع لین ه
هها رب تغ ههر ن ه د ه و
TEST OP1,OP2
ZF
PF
CF = 0
OF = 0
44
AND OP1,OP2
• در ریرع ش ف بول فل پ فالپ مق بر خید رب بز ورودن ریا م ا رد و بق هی
ا مق بر خید رب بز فل پ فالپ بل خید م ا رن .
رب
• در ش ف بی چپ بول فل پ فالپ
رب خید م ا رد.
خید رب بز فل پ فالپ
• در ش ف بی رب
رب بز فل پ فالپ
45
ترین ب
و ر فل پ فالپ مقه بر
بوله فل هپ فهالپ چهپ تهرین ب ه و هر فل هپ فهالپ مقه بر خهید
چپ خید م ا رد.
• مق بر ورودن ریا با تیجی بی نیع ش ف مشخص م شید.
– در ش ف مساق صفر ب
.
– در ش ف حلقین مق بر بی
دیگر ثبا م باش .
– در ش ه ف ح هها بههی چههپ صههفر و در ش ه ف ح هها بههی رب ه بی ه
عالم م باش .
• زما
46
ی بی عالم تغ ر س
رریر رخ دبدد ب
.
• در شيف مساقر بي ورود صفر ب
• شيف مساقر بی رب
• شيف مساقر بی چپ:
47
:
.
• در شههيف چرخ ه بي ه ورود
ب .
• شيف چرخ
بی رب
• شيف چرخ
بی چپ:
48
:
ههر ا بي ه خروث ه بز ه
دشگههر ثب ها
• شيف ح ا ر برب بع بد عالم دبر م
دبر ب
.
• شيف ح ا ر بی چپ ع د درو ثبا رب در 2ضرب مر س .
ع د درو ثبا رب بر 2تق يد مر س .
• شيف ح ا ر بی رب
• ما ترشن و ژگر شيف ح ا ر
ثبا رب حفظ مر س .
• شيف ح ا ر بی رب
ب
هی بهی سوهاد شهيف (ضهرب و تق هيد) عالمه
:
sign
bit
• شيف ح ا ر بی چپ:
sign
bit
49
• در شيف ح ا بی چپ باش م الی رر ر ( )Overflowچک شید.
زیرب عالم
رر ر رخ دبدد ب
• بار ب بز شيف مق بر دو بي خر متفاو باش
ع د تغ ر خیب رد.
0
sign
bit
V
50
• شیفت منطقی
– مق بر بول ی:
– مق بر بول ی پس بز ش ف بی رب
11010011
:
– مق بر بول ی پس بز ش ف بی چپ:
01101001
10100110
• شیفت حلقوی
– مق بر بول ی:
– مق بر بول ی پس بز ش ف بی رب
– مق بر بول ی پس بز ش ف بی چپ:
51
11010011
:
11101001
10100111
• مثال اول
– مق بر بول ی:
– مق بر پس بز ش ف بی رب
11010011
11101001 :
– مق بر بول ی پس بز ش ف بی چپ:
10100110
• مثال دوم
– مق بر بول ی:
– مق بر پس بز ش ف بی رب
– مق بر پس بز ش ف بی چپ:
52
10011010
11001101 :
( 00110100رریر)
SHL
SHL
SHIFT LEFT
SHIFT ARITHMETIC LEFT
OP1,1
OP1,CL
SAL OP,1
SAL OP,CL
SF
ZF
PF
CF
OF
CF
7
2 1 0
0
53
SHR
SHR
SHIFT RIGHT
SHIFT ARITHMETIC RIGHT
SAR OP,1
SAR OP,CL
7
SF
ZF
PF
مساق
0
OP1,1
OP1,CL
2 1 0
CF
CF
OF
S
2 1 0
CF
ریاض
54
ROR
ROR
ROTATE RIGHT
OP1,1
OP1,CL
SF
ZF
PF
CF
OF
7
2 1 0
CF
55
ROTATE RIGHT THROUGH CARRY FLAG
RCR
RCR
OP1,1
OP1,CL
SF
ZF
PF
7
2 1 0
CF
CF
OF
56
ROL
ROL
ROTATE LEFT
OP1,1
OP1,CL
SF
ZF
PF
CF
OF
CF
7
2 1 0
57
ROTATE LEFT THROUGH CARRY FLAG
RCL
RCL
OP1,1
OP1,CL
SF
ZF
PF
CF
CF
7
2 1 0
OF
58
SHIFT LEFT
SHL
SHIFT ARITHMETC LEFT
SAL
SHIFT RIGHT
SHR
SHIFT ARITHMETIC RIGHT
SAR
ROTATE RIGHT
ROR
ROTATE RIGHT THROUGH CARRY
RCR
ROTATE LEFT
ROL
ROTATE LEFT THROUGH CARRY
RCL
59
Stackseg
segment ‘stack’
Dw 32h dup(0)
ends
Datasg
segment ‘data’
Datasg
ends
Stacksg
Codesg
Main :
segment ‘code’
Assume ss:stacksg,ds:datasg , cs:codesg
proc far
Mov ax,datasg
Mov ds,ax
;----------------------------------------MOV AX, WORD PTR X
AND AX,0F0FH
XCHG AL,AH
MOV CL,4
SHL AH,CL
OR AL,AH
MOV Y,AL
;------------------------------------------
Ax=3735
Ax=0705
Ax=0507
AH=50
AL= 50 or 07 => AL=57
Mov ax,4c00h
Int 21h
Main
Codesg
endp
ends
End main
60
61