221 04-flag

26
แแแแแแแแแแแแแแแ แแแแแแแแแแ ธธธธธธธธ ธธธธธธธธธธธธ [email protected]

Upload: siriporn1991-1

Post on 20-Jun-2015

286 views

Category:

Documents


4 download

DESCRIPTION

love

TRANSCRIPT

Page 1: 221 04-flag

แฟล็�กแล็ะคำ�สั่��งคำณิ�ตศสั่ตร์�

ธนาวิ�นท์� รักธรัรัมานนท์�[email protected]

Page 2: 221 04-flag

2

หัวิข้�อการัเรั�ยนแฟล็�กคำ�าสั่�งคำณิ�ตศาสั่ตรั�

• คำ�าสั่�งเก��ยวิกบการับวิกแล็ะล็บ• คำ�าสั่�งเก��ยวิกบการัคำ"ณิแล็ะหัารั

ผล็ข้องคำ�าสั่�งคำณิ�ตศาสั่ตรั�ต$อการัเปล็��ยนแปล็งข้องแฟล็�ก

การัคำ�านวิณิสั่มการัคำณิ�ตศาสั่ตรั�อย$างง$าย

Page 3: 221 04-flag

3

แฟล็�กรั�จิ�สั่เตอรั� แฟล็�ก คำ'อรั�จิ�สั่เตอรั�ท์��ใช้�เก�บสั่ถานะข้องรัะบบ แฟล็�กข้อง 8086 ม�ข้นาด 16 บ�ต โดยแต$ล็ะบ�ตจิะแท์น

สั่ถานะต$างๆ ข้องรัะบบ แฟล็�กจิะเปล็��ยนแปล็งตามผล็ล็พธ�ข้องคำ�าสั่�งท์าง

คำณิ�ตศาสั่ตรั� การัคำดล็อกข้�อม"ล็จิะไม$ท์�าใหั�แฟล็�กเปล็��ยนแปล็งคำ$า- - - - O D I T S Z - - A P - C

0123456789101112131415

CarryParityAuxiliaryZeroSignTrapInterruptDirectionOverflow

Page 4: 221 04-flag

4

แฟล็�กรั�จิ�สั่เตอรั� แฟล็�กท์ด (Carry flag) จิะม�คำ$า 1 หัากม�การัท์ดบ�ตหัรั'อข้อย'มคำ$า แฟล็�กพารั�ต�0 (Parity flag) จิะม�คำ$า 1 ถ�าผล็ล็พธ�ท์��ได�จิากคำ�าสั่�งคำ�านวิณิม�จิ�านวินบ�ตท์��

เท์$ากบ 1 เป1นเล็ข้คำ"$ แฟล็�กช้$วิย (Auxiliary flag) จิะม�คำ$า 1 หัาก 4 บ�ตข้วิาม'อข้องผล็ล็พธ�ม�การัท์ดหัรั'อ

ข้อย'มคำ$า แฟล็�กศ"นย� (Zero flag) จิะม�คำ$า 1 หัากผล็ล็พธ�การัคำ�านวิณิม�คำ$าเท์$ากบศ"นย� แฟล็�กเคำรั'�องหัมาย (Sign flag) จิะม�คำ$า 1 หัากผล็ล็พธ�การัคำ�านวิณิเป1นเล็ข้ล็บ แฟล็�กกบดก (Trap flag) หัากม�คำ$าเป1น 1 จิะบงคำบใหั�ไมโคำรัโปรัเซสั่เซอรั�ปฏิ�บต�งานใน

ภาวิะคำ�าสั่�งข้0นเด�ยวิ (single step) ซ5�งใช้�ในการัด�บกโปรัแกรัม

แฟล็�กอ�นเตอรั�รัพต� (Interrupt Enable flag) หัากม�คำ$าเป1น 1 จิะท์�าใหั�ซ�พ�ย"รับการัอ�นเตอรั�รัพต�แบบมาสั่�ก

แฟล็�กท์�ศท์าง (Direction flag) หัากม�คำ$าเป1น 1 จิะบงคำบใหั�คำ�าสั่�งถ$ายโอนข้�อม"ล็เป1นกล็6$มท์�างานจิากแอดเดรัสั่คำ$าน�อยไปหัาคำ$ามาก หัากม�คำ$าเป1น 0 จิะบงคำบม�การัถ$ายโอนจิากแอดเดรัสั่คำ$ามากไปหัาคำ$าน�อย

แฟล็�กคำ$าล็�นหัล็ก (Overflow flag) ใช้�สั่�าหัรับเล็ข้แบบคำ�ดเคำรั'�องหัมาย หัากม�คำ$าเป1น 1หัมายถ5งผล็ล็พธ�ข้องการัคำ�านวิณิเป1นเล็ข้ท์��ม�คำ$ามากหัรั'อน�อยกวิ$าข้อบเข้ตท์��ก�าหันด

Page 5: 221 04-flag

5

แฟล็�กศ�นย์� (Z -ero flag) จิะม�คำ$าเป1น 1 เม'�อผล็ล็พธ�ม�คำ$าเท์$ากบศ"นย� นอกจิากกรัณิ�น�0จิะม�คำ$าเป1น 0

MOV AL,10hADD AL,E0hADD AL,20hSUB AL,10hSUB AL,10h

Z=?Z=1Z=0Z=0Z=1

AL=0AL=20hAL=10hAL=0

Page 6: 221 04-flag

6

พร์�ต��แฟล็�ก (P -arity flag)

จิะม�คำ$าเป1น 1 เม'�อผล็ล็พธ�ม�จิ�านวินบ�ตท์��ม�คำ$าเป1นหัน5�งเป1นเล็ข้คำ"$

MOV AL,14hADD AL,20hADD AL,10hSUB AL,8hSUB AL,10h

P=?P=0P=1P=1P=0

AL=34hAL=44hAL=3ChAL=2Ch

Page 7: 221 04-flag

7

แฟล็�กทด (C -arry flag) จิะม�คำ$าเป1น 1 เม'�อม�กร์ทดหร์�อกร์ย์�มในการัคำ�านวิณิ พ�จิารัณิาตวิเล็ข้แบบไม#คำ�ดเคำร์��องหมย์

MOV AL,77hADD AL,50hADD AL,50hSUB AL,A0hADD AL,27h

C=?C=0C=1C=1C=0

AL=C7hAL=17hAL=77hAL=9Eh

Page 8: 221 04-flag

8

แฟล็�กเคำร์��องหมย์ (S -ignflag) จิะม�คำ$าเป1น 1 เม'�อผล็ล็�พธ์�ม�คำ#ล็บ พ�จิารัณิาตวิเล็ข้แบบคำ�ดเคำรั'�องหัมาย

MOV AL,77hADD AL,50hADD AL,50hSUB AL,A0hADD AL,27h

S=?S=1S=0S=0S=1

AL=C7hAL=17hAL=77hAL=9Eh

Page 9: 221 04-flag

9

โอเวอร์�โฟล็�แฟล็�ก (O -verflow flag) จิะม�คำ$าเป1น 1 เม'�อผล็ล็พธ�ม�คำวิามผ�ดพล็าดเน'�องจิาก

เล็ขล็+นหล็�ก พ�จิารัณิาตวิเล็ข้แบบคำ�ดเคำรั'�องหัมาย การัล็�นหัล็กจิะเก�ดข้50นเฉพาะจิ�านวินบวิกรัวิมกนหัรั'อ

จิ�านวินล็บรัวิมกนเท์$าน0น จิะไม$เก�ดการัล็�นหัล็กสั่�าหัรับจิ�านวินบวิกรัวิมกบจิ�านวินล็บ

MOV AL,77hADD AL,50hADD AL,50hSUB AL,A0hADD AL,27h

O=?O=1O=0O=0O=1

AL=C7hAL=17hAL=77hAL=9Eh

Page 10: 221 04-flag

10

แฟล็�กอ'�น ๆ แฟล็�กเสั่ร์�ม -(Auxiliary flag)

•จิะม�คำ$าเป1น 1 เม'�อผล็ล็พธ�ต�องม�การัปรับคำ$าข้องการัเก�บตวิเล็ข้แบบ BCD

แฟล็�กท�ศทง -(Direction flag)• ใช้�สั่�าหัรับก�าหันดท์�ศท์างข้องการัปรับคำ$าในคำ�าสั่ �งเก��ยวิกบสั่ายข้�อม"ล็.

แทร์ปแฟล็�ก -(Trap flag)• ใช้�สั่�าหัรับการัตรัวิจิสั่อบการัท์�างานข้องโปรัแกรัม โดยจิะท์�าใหั�เก�ด

การัข้ดจิงหัวิะท์6กคำรั0งหัล็งการัท์�างานข้องคำ�าสั่ �งต$างๆ อ�นเตอร์�ร์�พท�แฟล็�ก -(Interrupt flag)

• ใช้�สั่�าหัรับก�าหันดวิ$าหัน$วิยปรัะมวิล็ผล็จิะตอบสั่นองการัข้ดจิงหัวิะจิากฮารั�ดแวิรั�บางปรัะเภท์หัรั'อไม$

Page 11: 221 04-flag

11

คำ�าสั่�งสั่�าหัรับก�าหันดคำ$าข้องแฟล็�ก แฟล็�กบางแฟล็�กสั่ามารัถก�าหันดคำ$าได� เน'�องจิากม�หัน�าท์��

ในการัรัะบ6สั่ถานะบางปรัะการั เรัาจิะเรั�ยกแฟล็�กท์��ม�คำ$าเป1น 1 วิ$าแฟล็�กน0นเซ็�ต ( flag

set ) แล็ะเรั�ยกแฟล็�กท์��ม�คำ$าเป1น 0 วิ$า แฟล็�กน0นเคำล็�ย์ร์� ( flag cleared)

แฟล็�กท์��สั่ามารัถก�าหันดคำ$าได� แล็ะคำ�าสั่�งในการัก�าหันดคำ$า

Carry-flagDirection-flagInterrupt-flag

CLCCLDCLI

STCSTDSTI

Clear SetFlag

Page 12: 221 04-flag

12

คำ�าสั่�งคำณิ�ตศาสั่ตรั� คำ�าสั่�งเพ��มแล็ะล็ดคำ$า : INC แล็ะ DEC คำ�าสั่�งบวิก : ADD แล็ะ ADC คำ�าสั่�งล็บ : SUB แล็ะ SBB คำ�าสั่�งเปรั�ยบเท์�ยบ : CMP คำ�าสั่�งกล็บเคำรั'�องหัมาย : NEG คำ�าสั่�งคำ"ณิ : MUL แล็ะ IMUL คำ�าสั่�งหัารั : DIV แล็ะ IDIV คำ�าสั่�งปรับข้นาดข้�อม"ล็ : CBW แล็ะ CWD

Page 13: 221 04-flag

13

คำ�าสั่�งเพ��มคำ$า INC แล็ะคำ�าสั่�งล็ดคำ$า DEC

การัเพ��มแล็ะล็ดคำ$าในหัน$วิยคำวิามจิ�าจิะต�องรัะบ6ข้นาดข้องข้�อม"ล็ด�วิย ม�ผล็กรัะท์บกบแฟล็�กท์างคำณิ�ตศาสั่ตรั�ท์0งหัมด ย์กเว+น แฟล็�กทด

INC registerINC memory

DEC registerDEC memory

MOV AL,1DEC ALDEC ALMOV BX,200hMOV [BX],ALINC BYTE PTR [BX]

AL=0hAL=FFh

[200h]=FFh[200h]=00h

ไม$เปล็��ยน C-flag

Page 14: 221 04-flag

14

คำ�าสั่�งการับวิก ADD แล็ะ ADC (add with carry)

ผล็ล็พธ�ข้องการับวิกจิะเก�บไวิ�ในโอเปอรั�แล็นด�ตวิหัน�าเสั่มอ คำ�าสั่�ง ADD แล็ะ ADC ม�ผล็กรัะท์บถ5งแฟล็�กท์างคำณิ�ตศาสั่ตรั�ท์6ก

ตวิ เรัาน�ยมใช้�คำ�าสั่�ง ADC ในการับวิกเล็ข้ท์��ต�องการัรัวิมตวิท์ดจิาก

การัคำ�านวิณิท์��ผ$านมา ยกตวิอย$างเช้$น การับวิกเล็ข้ท์��อย"$ในรั�จิ�สั่เตอรั�หัล็ายตวิต$อเน'�องกน

ADD regs,regsADD regs,memADD mem,regsADD regs,immADD mem,imm

ADC regs,regsADC regs,memADC mem,regsADC regs,immADC mem,imm

Page 15: 221 04-flag

15

คำ�าสั่�งการัล็บ SUB แล็ะ SBB (sub with borrow)

คำ�าสั่�ง SUB จิะล็บคำ$าในโอเปอรั�แรันด�ตวิหัล็งออกจิากตวิหัน�า แล็ะน�าไปเก�บในโอเปอรั�แรันด�ตวิหัน�า

คำ�าสั่�ง SBB ก�จิะท์�าเช้$นเด�ยวิกน แต$จิะม�การัรัวิมตวิย'มซ5�งเก�บอย"$ใน - Carry flag ด�วิย (คำล็�าย ADC)

คำ�าสั่�ง SUB แล็ะ SBB ม�ผล็กรัะท์บถ5งแฟล็�กท์างคำณิ�ตศาสั่ตรั�ท์6กตวิ

SUB regs,regsSUB regs,memSUB mem,regsSUB regs,immSUB mem,imm

SBB regs,regsSBB regs,memSBB mem,regsSBB regs,immSBB mem,imm

Page 16: 221 04-flag

16

ตวิอย$างการัใช้�คำ�าสั่�งบวิกแล็ะล็บ

MOV AX,1115hMOV DX,34DAhADD AX,BXADC DX,CX

การับวิกเล็ข้ 32 บ�ต 341115 เข้�ากบตวิเล็ข้ 32 บ�ตท์��เก�บในคำ"$รั �จิ�สั่เตอรั� CX,BX

น�า 34 115DA h เก�บใน DX,AX

บวิก 16 บ�ตล็$างบวิก 16 บ�ตบนพรั�อมตวิท์ด

SUB AL,BLSBB AH,0

การัล็บเล็ข้ 16บ�ต ในรั�จิ�สั่เตอรั� AX ด�วิยเล็ข้ 8 บ�ตในรั�จิ�สั่เตอรั� BL

ล็บ 8 บ�ตล็$าง ล็บ 8 บ�ตบนพรั�อมตวิย'ม

Page 17: 221 04-flag

17

คำ�าสั่�งเปรั�ยบเท์�ยบ CMP คำ�าสั่�ง CMP จิะท์�างานเหัม'อนคำ�าสั่�ง SUB แต$จิะไม$ม�การั

เปล็��ยนแปล็งคำ$าในโอเปอรั�แรันด�ท์0งสั่อง แต$จิะม�การัเปล็��ยนแปล็งคำ$าใน Flag

การัเปล็��ยนแปล็ง flag ข้องคำ�าสั่�ง CMP จิะเหัม'อนกบคำ�าสั่�ง SUB โดยปกต�เรัาจิะใช้�คำ�าสั่�ง CMP ในการัเปรั�ยบเท์�ยบ แล็ะตดสั่�นใจิ

MOV AX,10hCMP AX,100h

MOV BL,10hCMP AL,BL Z-flag = 1, C-flag = 0,

O-flag = 0, S-flag = 0.

Z-flag = 1, C-flag = 0, O-flag = 0, S-flag = 0.

Z-flag = 0, C-flag = 1, O-flag = 0, S-flag = 1.

Z-flag = 0, C-flag = 1, O-flag = 0, S-flag = 1.

Page 18: 221 04-flag

18

คำ�าสั่�งกล็บเคำรั'�องหัมาย NEG

คำ�าสั่�ง NEG จิะกล็บคำ$าข้องโอเปอรั�แรันด�ใหั�เป1นคำ$าล็บ

การัแปล็งเป1นคำ$าล็บใช้�วิ�ธ�แบบ 2’scompl ement

คำ�าสั่�ง NEG จิะม�ผล็กรัะท์บกบแฟล็�กท์างคำณิ�ตศาสั่ตรั�ท์0งหัมด แต$สั่�าหัรับ แฟล็�กทดจะม�คำ#เป/นหน0�งเสั่มอหัล็งการัท์�างานข้องคำ�าสั่�งน�0

NEG regs NEG mem

Page 19: 221 04-flag

19

ตวิอย$างการัเปล็��ยนคำ$าแฟล็�ก

Instruction Result Z-Flag C-Flag P-Flag S-Flag O-Flag

MOV AL,70h ADD AL,20h ADD AL,70h DEC AL ADD AL,5 ADD AL,30h SUB AL,40h SUB AL,7F NEG AL ADC AL,20h 0 0100 AL=ABh

1 011**0 AL=8Bh0 1000 AL=75h0 0110 AL=F4h0 0000 AL=34h0 0010 AL=04h1 011*0 AL=FFh1 0011 AL=00h1 1100 AL=90h? ???? AL=70h

Page 20: 221 04-flag

20

คำ�าสั่�งคำ"ณิ MUL แล็ะ IMUL

ในการัใช้�คำ�าสั่�งคำ"ณิ เรัาจิะรัะบ6เฉพาะตวิคำ"ณิเท์$าน0น สั่�าหัรับตวิต0งแล็ะผล็ล็พธ�จิะอย"$ในรั�จิ�สั่เตอรั�ท์��ก�าหันดไวิ�แล็�วิ โดยจิะข้50นกบข้นาดข้องการัคำ"ณิ

การัคำ"ณิ 8 บ�ต ต�วต��ง : AL ผล็ล็�พธ์� : AX การัคำ"ณิ 16 บ�ต ต�วต��ง : AX ผล็ล็�พธ์� : DX,AX คำ�าสั่�ง MUL จิะคำ"ณิแบบไม$คำ�ดเคำรั'�องหัมาย คำ�าสั่�ง IMUL จิะคำ"ณิแบบคำ�ดเคำร์��องหมย์ คำ�าสั่�งท์0งสั่องจิะม�ผล็กรัะท์บกบ แฟล็�กท์ดแล็ะโอเวิอรั�โฟล็�แฟล็�ก

เท์$าน0น

MUL regs

MUL mem

IMUL regsIMUL mem

Page 21: 221 04-flag

21

ตวิอย$างการัใช้�คำ�าสั่�งคำ"ณิ การัคำ"ณิคำ$า 12h ด�วิย คำ$าใน BL

MOV AL,12hMUL BL

ต0งคำ$าใหั�กบตวิต0งคำ"ณิด�วิย BL ผล็ล็พธ�อย"$ใน AX

การัคำ"ณิคำ$าในหัน$วิยคำวิามจิ�าข้นาด 16บ�ตท์�� 200offset hด�วิย คำ$าใน AX จิากน0นน�าผล็ล็พธ�ท์��ได�มาบวิกด�วิยคำ$าใน BXMUL WORD PTR[200h]ADD AX,BXADC DX,0

คำ"ณิ AX กบคำ$าใน [2 0 0 ]จิากน0นน�า BX มารัวิมกบผล็ล็พธ�

Page 22: 221 04-flag

22

คำ�าสั่�งคำ"ณิ DIV แล็ะ IDIV

เช้$นเด�ยวิกบการัใช้�คำ�าสั่ �งคำ"ณิ เรัาจิะรัะบ6เฉพาะตวิหัารัเท์$าน0น ตวิต0งแล็ะผล็ล็พธ�จิะอย"$ในรั�จิ�สั่เตอรั�ท์��ก�าหันดไวิ�แล็�วิ โดยจิะข้50นกบข้นาดข้องการัหัารั

การัหัารั 8 บ�ต ต�วต��ง : AX ผล็ล็�พธ์� : AL เศษ : AH การัหัารั 16 บ�ต ต�วต��ง : DX, AX ผล็ล็�พธ์� : AX เศษ

: DX คำ�าสั่�ง DIV จิะหัารัแบบไม$คำ�ดเคำรั'�องหัมาย คำ�าสั่�ง IDIV จิะหัารัแบบคำ�ดเคำร์��องหมย์ คำ�าสั่�งท์0งสั่องจิะไม#ม�ผล็กร์ะทบก�บแฟล็�กทงคำณิ�ตศสั่ตร์�.

DIV regs

DIV mem

IDIV regsIDIV mem

Page 23: 221 04-flag

23

คำ�าสั่�งปรับข้นาดข้�อม"ล็ ข้�อม"ล็แบบไม$คำ�ดเคำรั'�องหัมาย เรัาสั่ามารัถท์��จิะก�าหันดคำ$า 0 ใหั�

กบข้�อม"ล็นยสั่�าคำญสั่"งท์��ข้ยายเพ��มข้50นมาได� เพ'�อใหั�ข้นาดใหัญ$ข้50นแล็ะม�คำ$าคำงเด�ม

แต$ถ�าข้�อม"ล็เป1นตวิเล็ข้คำ�ดเคำรั'�องหัมายเรัาจิะต�องใช้�การัปรับคำ$าแบบอ'�น ม�เช้$นน0นคำ$าอาจิผ�ดเพ�0ยนไปได�

คำ�าสั่�ง CBW จิะข้ยายข้นาดข้�อม"ล็แบบคำ�ดเคำรั'�องหัมายใน AL ใหั�ม�ข้นาด 16 บ�ตใน AX

คำ�าสั่�ง CWD จิะข้ยายข้นาดข้�อม"ล็แบบคำ�ดเคำรั'�องหัมายใน AX ใหั�ม�ข้นาด 32 บ�ตใน DX,AX

ต�วอย์#ง การัหัารัคำ$าใน AL

ด�วิย BL

CBWIDIV BL

ข้ยาย - AL > AX.หัารัด�วิย BL ผล็ล็พธ�อย"$ใน AL

Page 24: 221 04-flag

24

ตวิอย$างการัแก�สั่มการัท์างคำณิ�ตศาสั่ตรั�

1 คำ�านวิณิคำ$า AL2 + BL2 คำ�ดตวิเล็ข้แบบไม$คำ�ดเคำรั'�องหัมายโดยใหั�ผล็ล็พธ�เป1นเล็ข้ 1

6 บ�ต เก�บท์�� รั�จิ�สั่เตอรั� AXMUL ALMOV CX, AXMOV AL, BLMUL BLADD AX, CX

หัาคำ$า AL*ALน�าไปเก�บไวิ�ท์�� CX เน'�องจิาก AL ต�องใช้�ในการัคำ�านวิณิ

คำ"ณิ BL กบ BL แล็�วิเก�บผล็ล็พธ�ไวิ�ท์�� AXได�ผล็ล็พธ�แล็�วิน�าคำ$า AL*AL ท์��เก�บใน CXมาบวิก 2. คำ�านวิณิคำ$า *(CL BL+DX)/SI โดยคำ�ดเป1น

เล็ข้คำ�ดเคำรั'�องหัมาย

Page 25: 221 04-flag

25

ตวิอย$างการัแก�สั่มการัท์างคำณิ�ตศาสั่ตรั�

2. คำ�านวิณิคำ$า *(CL BL+DX)/SI โดยคำ�ดเป1นเล็ข้คำ�ดเคำรั'�องหัมาย

MOV AL,CLMUL BLADD AX,DXCWDIDIV SI

หัาคำ$า CL*BL

บวิกกบ DX.ข้ยายข้นาดเป1น 32 บ�ตหัารัด�วิย SI ผล็อย"$ท์�� AX เศษท์�� DX

Page 26: 221 04-flag

26

Question ?