54
1 Basic Instructions SCC : Suthida Chaichomchuen [email protected]

Basic I nstructions

  • Upload
    admon

  • View
    36

  • Download
    0

Embed Size (px)

DESCRIPTION

Basic I nstructions. SCC : Suthida Chaichomchuen [email protected]. Basic Instructions. MOV XCHG LEA ADD/ADC SUB/SBB MUL/IMUL DIV/IDIV CMP INC/DEC NEG. MOV ( move ). - PowerPoint PPT Presentation

Citation preview

Page 1: Basic  I nstructions

1

Basic Instructions

SCC : Suthida [email protected]

Page 2: Basic  I nstructions

2

Basic Instructions

MOV XCHG LEA ADD/ADC SUB/SBB MUL/IMUL DIV/IDIV CMP INC/DEC NEG

Page 3: Basic  I nstructions

3

MOV (move) เป็�นการคัดลอกข้�อมู�ลข้นาดไบต์�หร�อเวิ�ร�ดจากต์�นทาง

ไป็ยังป็ลายัทางโดยัท� ต์�นทางและป็ลายัทางอาจจะเป็�น ร�จ�สเต์อร�กบร�จ�สเต์อร� หร�อร�จ�สเต์อร�กบต์$าแหน%งข้องหน%วิยัคัวิามูจ$า หร�อคั%าคังท� ไป็ยังร�จ�สเต์อร�หร�อหน%วิยัคัวิามูจ$า

Page 4: Basic  I nstructions

4

MOV : Format [label:] MOV destination, source

[label:] MOV register, register [label:] MOV register, memory [label:] MOV register, immediate [label:] MOV memory, register [label:] MOV memory, immediate

Page 5: Basic  I nstructions

5

MOV : Example MOV AX, Table MOV Table , AX MOV ES:[BX], AX MOV DS, AX MOV BL, AL MOV -CL, 30 MOV Dest 25, H

Page 6: Basic  I nstructions

6

MOV : Constraint

ไมู%สามูารถยั�ายัข้�อมู�ลระหวิ%างหน%วิยัคัวิามูจ$าได� ต์�องใช้�ร�จ�สเต์อร�เป็�นต์วิกลางในการยั�ายัข้�อมู�ลระหวิ%าง

หน%วิยัคัวิามูจ$า เช้%น ต์�องการยั�ายัข้�อมู�ลจาก Pounds ไป็ยัง

Weight โดยัผ่%านร�จ�สเต์อร� AX

MOV AX, Pounds

MOV Weight, AX

Page 7: Basic  I nstructions

7

MOV : Constraint

ไมู%สามูารถน$าคั%า immediate เช้%นคั%า offset ใส%ให� segment register ได�โดยัต์รง

ต์�องใช้�ร�จ�สเต์อร� AX เป็�นต์วิกลางผ่%านคั%า offset ไป็ยัง segment register

MOV AX, @DATA

MOV DS, AX

ร�จ�สเต์อร� CS ไมู%สามูารถใช้�เป็�น destination ข้องคั$าส ง MOV ได�

Page 8: Basic  I nstructions

8

XCHG (exchange)

คั$าส ง XCHG จะสลบคั%าเป็�นไบต์�หร�อเวิ�ร�ดระหวิ%าง operand ท� เป็�น source และ destination

สามูารถสลบคั%าระหวิ%างร�จ�สเต์อร� 2 ต์วิ หร�อระหวิ%างร�จ�สเต์อร�กบคั%าในหน%วิยัคัวิามูจ$า

Segment Register ไมู%สามูารถน$ามูาใช้�เป็�น operand ได�

Page 9: Basic  I nstructions

9

XCHG : Format

[label:] XCHG destination, source

[label:] XCHG register, register [label:] XCHG register, memory [label:] XCHG memory, register

Page 10: Basic  I nstructions

10

XCHG : Example XCHG AX, BX XCHG AL, BH XCHG DL, Byte XCHG Word , DX

Page 11: Basic  I nstructions

11

LEA (load effective address)

คั$าส ง LEA จะน$าคั%าออฟเซต์ข้อง Operand ในหน%วิยัคัวิามูจ$าไป็ใส%ไวิ�ในร�จ�สเต์อร� 16 บ�ต์

ร�ป็แบบคั$าส ง

[label:] LEA register16, memory16

Page 12: Basic  I nstructions

12

LEA : Example

น$าคั%าออฟเซต์ข้อง Table ไป็ใส%ใน BX

Table DB 10,20,30,40,50,60,70

LEA BX, Table

Page 13: Basic  I nstructions

13

Addition Instruction บวิก operand 816/ บ�ต์

ADD destination = destination+source

ADC : ADD with Carry destination =

destination+source+carry

Page 14: Basic  I nstructions

14

ADD & ADC : Format

[ Label:] ADD/ADC register, register [Label:] ADD/ADC memory, register [Label:] ADD/ADC register, memory [Label:] ADD/ADC register, immediate [Label:] ADD/ADC memory,

immediate

Page 15: Basic  I nstructions

15

ADD : Example

ADD AX , BX ADD AL, Byte ADD Word , AX ADD BL, 10H ADD Byte 25, H

Page 16: Basic  I nstructions

16

ADC : Example

ADC AX , BX ADC AL, Byte ADC Word , AX ADC BL, 10H ADC Byte 25, H

Page 17: Basic  I nstructions

17

Subtraction Instruction

ลบคั%า operand 816/ บ�ต์ CF ท$าหน�าท� เหมู�อนต์วิยั�มู

SUB destination = destination-source

SBB : Subtract with Borrow - -destination = destination source carry

Page 18: Basic  I nstructions

18

SUB & SBB : Format

[ Label:] SUB/SBB register, register [Label:] SUB/SBB memory, register [Label:] SUB/SBB register, memory [Label:] SUB/SBB register, immediate [Label:] SUB/SBB memory,

immediate

Page 19: Basic  I nstructions

19

SUB : Example

SUB AX, BX SUB AX, Word SUB Word, AX SUB BX, 1000H SUB Word, 256H

Page 20: Basic  I nstructions

20

SBB : Example

SBB AX, BX SBB AX, Word SBB Word, AX SBB BX, 1000H SBB Word, 256H

Page 21: Basic  I nstructions

21

SUB & SBB : 32 bit

ถ�าต์�องการลบคั%า 32 บ�ต์ ใช้�คั$าส งดงน�. ก$าหนดต์วิต์.งใน BX, AX ต์วิลบอยั�%ใน DX, CX SUB AX, CX SBB BX, DX

Page 22: Basic  I nstructions

22

Multiplication Instruction เป็�นคั$าส งท� ใช้�ในการคั�ณเลข้ 8 บ�ต์และ 16 บ�ต์ ผ่ลลพธ์�ท� ได�จากการคั�ณจะมู�ข้นาดเพ� มูข้2.น เป็�น 2 เท%า มู� 2 แบบคั�อ

MUL : Unsigned Multiplication IMUL : Signed Multiplication

Page 23: Basic  I nstructions

23

Multiplication : 8 bit การคั�ณเลข้ 8 บ�ต์

ต์วิต์.งเก3บไวิ�ท� ร �จ�สเต์อร� AL ต์วิคั�ณเก3บไวิ�ท� ร �จ�สเต์อร�หร�อหน%วิยัคัวิามูจ$าข้นาด

8 บ�ต์ ผ่ลลพธ์�จะมู�ข้นาด 16 บ�ต์ เก3บอยั�%ในร�จ�สเต์อร�

AX

Page 24: Basic  I nstructions

24

Multiplication : 16 bit การคั�ณเลข้ 16 บ�ต์

ต์วิต์.งเก3บไวิ�ท� ร �จ�สเต์อร� AX ต์วิคั�ณเก3บไวิ�ท� ร �จ�สเต์อร�หร�อหน%วิยัคัวิามูจ$าข้นาด

16 บ�ต์ ผ่ลลพธ์�จะมู�ข้นาด 32 บ�ต์ เก3บอยั�%ในร�จ�สเต์อร� DX

และ AX DX เก3บผ่ลลพธ์� 16 บ�ต์บน AX เก3บผ่ลลพธ์� 16 บ�ต์ล%าง

Page 25: Basic  I nstructions

25

MUL : Format [label:] MUL

register/memory

เป็�นการคั�ณแบบไมู%คั�ดเคัร� องหมูายั ถ�าคัร2 งบนข้องผ่ลลพธ์�การคั�ณเป็�น 0

CF และ OF จะมู�คั%าเป็�น 0

Page 26: Basic  I nstructions

26

IMUL : Format [label:] IMUL register/memory

เป็�นการคั�ณแบบคั�ดเคัร� องหมูายั ถ�าคัร2 งบนข้องผ่ลลพธ์�การคั�ณเป็�น sign-

extension CF และ OF จะมู�คั%าเป็�น 0

Page 27: Basic  I nstructions

27

MUL & IMUL : Example MUL BX MUL Byte IMULDL IMULWord

Page 28: Basic  I nstructions

28

MUL : Example คั�ณเลข้ท� ไมู%มู�เคัร� องหมูายั ระหวิ%างเลข้ 8 บ�ต์ กบ

16 บ�ต์

MOV AX, Multiplicand ; AX = ต์วิต์.ง

MOV CL, Multiplier ; CL = ต์วิคั�ณMOV CH, 0MUL CX ; AX = AX * CX

Page 29: Basic  I nstructions

29

IMUL : Example คั�ณเลข้ท� มู�เคัร� องหมูายั ระหวิ%างเลข้ 8 บ�ต์ กบ 1

6 บ�ต์

MOV AL, Multiplicand ; AL = เลข้ 8บ�ต์

CBW ; ข้ยัายัเป็�น 16 บ�ต์MOV CX, Multiplier ; CX = เลข้ 16

บ�ต์IMUL CX ; AX = AX * CX

Page 30: Basic  I nstructions

30

Division Instruction

เป็�นคั$าส งท� ใช้�ในการหารคั%าต์วิเลข้ด�วิยัเลข้ 8 บ�ต์และ 16 บ�ต์

มู� 2 แบบคั�อ DIV : Unsigned Division IDIV : Signed Division

ร�ป็แบบ [label:] DIV/IDIV register/memory

Page 31: Basic  I nstructions

31

Division : by 8 bit การหารเลข้ 16 บ�ต์ ด�วิยัเลข้ 8 บ�ต์

ต์วิต์.งข้นาด 16 บ�ต์เก3บไวิ�ท� ร �จ�สเต์อร� AX ต์วิหารข้นาด 8 บ�ต์เก3บไวิ�ท� ร �จ�สเต์อร�/หน%วิยัคัวิามูจ$า ผ่ลลพธ์�

จ$านวินเต์3มูเก3บไวิ�ท� AL เศษเก3บไวิ�ท� AH

Page 32: Basic  I nstructions

32

Division : by 16 bit การหารเลข้ 32 บ�ต์ด�วิยั 16 บ�ต์

ต์วิต์.งข้นาด 32 บ�ต์เก3บในร�จ�สเต์อร� DX และ AX DX เก3บไบต์�ส�ง AX เก3บไบต์�ต์$ า

ต์วิหารข้นาด 16 บ�ต์เก3บในร�จ�สเต์อร�/หน%วิยัคัวิามูจ$า ผ่ลลพธ์�

จ$านวินเต์3มูเก3บไวิ�ท� AX เศษเก3บไวิ�ท� DX

Page 33: Basic  I nstructions

33

Division : Overflow

ถ�าผ่ลลพธ์�จากการหารได�คั%าจ$านวินเต์3มูท� ใหญ่%กวิ%าท� AL หร�อ AX จะเก3บได� จะเก�ดการ Interrupt ช้น�ด 0

โดยั DOS จะแสดงข้�อคัวิามูวิ%า “Divide

Overflow”

Page 34: Basic  I nstructions

34

DIV & IDIV : Example DIV CL DIV BX DIV byte DIV word IDIV DL IDIV CX IDIV byte IDIV word

Page 35: Basic  I nstructions

35

DIV : Example การหารเลข้ท� ไมู%มู�เคัร� องหมูายัข้นาด 16 บ�ต์ด�วิยั

เลข้ 8 บ�ต์

MOV AX, 037D7H ; 14295 MOV BL, 097H ; 151 DIV BL ; 14295/151

Page 36: Basic  I nstructions

36

IDIV : Example การหารเลข้ท� มู�เคัร� องหมูายัข้นาด 16 บ�ต์ด�วิยัเลข้

8 บ�ต์

MOV AX, 03ABH ; 939 MOV BL, 0D3H ; -45 IDIV BL ; 939/-45

Page 37: Basic  I nstructions

37

CMP (compare)

เป็�นคั$าส งท� ใช้�เป็ร�ยับเท�ยับคั%า 2 คั%า ใช้�หลกการลบคั%า source ออกจาก destination

แต์%ไมู%ได�เก3บคั%าผ่ลลพธ์�ไวิ� มู�ผ่ลต์%อแฟลก AF, CF, OF, PF, SF และ ZF ใช้�ในการต์รวิจสอบคั%าแฟลก เพ� อต์ดส�นใจในการยั�ายั

คั$าส งการท$างานไป็ยังจ7ดต์%าง ๆ

Page 38: Basic  I nstructions

38

CMP : Format [label:] CMP destination, source

[label:] CMP register, register [label:] CMP register, memory [label:] CMP register, immediate [label:] CMP memory, register [label:] CMP memory, immediate

Page 39: Basic  I nstructions

39

CMP : Example CMP AX , BX CMP CL, count CMP CX, 0 CMP number, AL CMP empty, 0

Page 40: Basic  I nstructions

40

CMP : Unsigned

Unsigned Operands Condition OF SF ZF CFSource < Destinationx x 0 0Source = Destinationx x 1 0Source > Destinationx x 0 1

Page 41: Basic  I nstructions

41

CMP : Signed

Signed Operands Condition OF SF ZF CFSource < Destination0/1 0 0 xSource = Destination0 0 1 xSource > Destination0/1 1 0 x

Page 42: Basic  I nstructions

42

INC (increment) เพ� มูคั%าให�กบร�จ�สเต์อร�/หน%วิยัคัวิามูจ$า 1 คั%า ร�ป็แบบ

[label:] INC register/memory Example

INC CX INC AL INC byte INC word

Page 43: Basic  I nstructions

43

DEC (decrement) ลดคั%าในร�จ�สเต์อร�/หน%วิยัคัวิามูจ$า 1 คั%า ร�ป็แบบ

[label:] DEC register/memory Example

DEC CX DEC AL DEC byte DEC word

Page 44: Basic  I nstructions

44

NEG (negate) เป็�นคั$าส งในการหาคั%า 2 ’s Complement ร�ป็แบบ

[label:] NEG register/memory Example

NEG CC NEG BX NEG byte NEG word

Page 45: Basic  I nstructions

45

การแป็ลง operator =

B = A MOV AX, A MOV B, AX

var1 = var2 MOV AX, var2 MOV var1, AX

Page 46: Basic  I nstructions

46

การแป็ลง operator +

X = Y + Z MOV AX, Y ADD AX, Z MOV X, AX

Page 47: Basic  I nstructions

47

การแป็ลง operator -

X = Y - Z MOV AX, Y SUB AX, Z MOV X, AX

Page 48: Basic  I nstructions

48

การแป็ลง operator *

X = Y * Z MOV AL, Y MUL Z MOV X, AX

Page 49: Basic  I nstructions

49

การแป็ลง operator div (unsigned)

X = Y div Z MOV AX, Y MOV DX, 0 DIV Z MOV X, AX

Page 50: Basic  I nstructions

50

การแป็ลง operator div (signed)

X = Y div Z MOV AX, Y CWD IDIV Z MOV X, AX

Page 51: Basic  I nstructions

51

การแป็ลง operator mod (unsigned)

X = Y mod Z MOV AX, Y MOV DX, 0 DIV Z MOV X, DX

Page 52: Basic  I nstructions

52

Example Temp1 = A + B Temp2 = Y + Z W = Temp1 * Temp2

Page 53: Basic  I nstructions

53

Assembly Code 1 MOV AX, A ADD AX, B MOV Temp1, AX ; Temp1 = A + B MOV AX, Y ADD AX, Z MOV Temp2, AX ; Temp2 = Y + Z MOV AX, Temp1 IMUL Temp2 MOV W, AX ; W = Temp1 * Temp2

Page 54: Basic  I nstructions

54

Assembly Code 2 MOV AX, A ADD AX, B ; AX = A + B MOV BX, Y ADD BX, Z ; BX = Y + Z IMULBX ; AX = AX * BX MOV W, AX ; W = AX