47
Riistvarapõhine programmeerimine Loeng 4 Arvuti käsustik, aritmeetilised käsud

Riistvarapõhine programmeerimine

Embed Size (px)

DESCRIPTION

Riistvarapõhine programmeerimine. Loeng 4 Arvuti käsustik, aritmeetilised käsud. Arvuti käsustik I. Aritmeetilised käsud Loogilised käsud Andmelaadimise käsud Sisend/väljund käsud Siirdekäsud Stringikäsud Muud käsud. Arvuti käsustik II. Kodeerimine – Basic Instruction Encoding. - PowerPoint PPT Presentation

Citation preview

Page 1: Riistvarapõhine programmeerimine

Riistvarapõhine programmeerimine

Loeng 4Arvuti käsustik, aritmeetilised käsud

Page 2: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

2

Arvuti käsustik I Aritmeetilised käsud Loogilised käsud Andmelaadimise käsud Sisend/väljund käsud Siirdekäsud Stringikäsud Muud käsud

Page 3: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

3

Arvuti käsustik II

Kodeerimine – Basic Instruction Encoding

Page 4: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

4

Arvuti käsustik III

Mov ax, bx

iii = 110 mov reg, regrr = 00 axmmm = 001 bx11000001 = 0C1h

Page 5: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

5

Arvuti käsustik IV

Mov ax, [1000]

iii = 110 mov reg, memrr = 00 axmmm = 110 [1000]11000110 00000000 000100000C6h, 00h, 10h

Page 6: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

6

Arvuti käsustik V

Kodeerimine – Single Operand Instruction Encoding

Page 7: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

7

Arvuti käsustik VI

Kodeerimine – Zero Operand Instruction Encoding

Page 8: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

8

Arvuti käsustik VII

Kodeerimine – JUMP Instruction Encoding

Page 9: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

9

Signed / Unsigned I

J byte ? Unsigned byte j

K sbyte ? Signed byte k

I db ? Nosigned byte k

Page 10: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

10

Signed / unsigned II

Mov j, -5; 0xFBUnsigned j (0 - 255), 251

Mov k, 255; 0xFFSigned k (-128 - 127), -128

Page 11: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

11

Flag Register

Page 12: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

12

Aritmeetilised käsud Liitmise käsud Lahutamise käsud Korrutamise käsud Jagamise käsud

Page 13: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

13

Liitmise käsud I Add A, B Adc A, B Inc A

Page 14: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

14

Liitmise käsud II

Add A, B A = A + BLipud: Signed UnsignedOf XCf XSf X XZf X XAf X XPf X X

Page 15: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

15

Liitmise käsud III

Adc A, B A = A + B + CfLipud: Signed UnsignedOf XCf XSf X XZf X XAf X XPf X X

Page 16: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

16

Liitmise käsud IV

J:= K + Mmov ax, Kadd ax, Mmov J, ax

Ainult üks mäluoperand Ühe pikkusega operandid

Page 17: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

17

Liitmise käsud V

J := K + M + N + Pmov ax, Kadd ax, Madd ax, Nadd ax, Pmov J, ax

Page 18: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

18

Liitmise käsud VI

J := K + Jmov ax, J mov bx, Kadd ax, bxmov J, ax

Page 19: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

19

Liitmise käsud VI

J := K + Jmov ax, J add ax, K mov J, ax

Page 20: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

20

Liitmise käsud VII

J := K + Jmov ax, K add J, ax

Page 21: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

21

Liitumise käsud VIII

add al, 2 ;Two bytes longadd bl, 2 ;Three bytes long add ax, 2 ;Three bytes longadd bx, 2 ;Four bytes long

Page 22: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

22

Liitmise käsud IX

Inc A A = A + 1Lipud: Signed UnsignedOf XCf - -Sf X XZf X XAf X XPf X X

Page 23: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

23

Lahutamise käsud I Sub A, B Sbb A, B Dec A Cmp A, B Neg A

Page 24: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

24

Lahutamise käsud II

Sub A, B A = A - BLipud: Signed UnsignedOf XCf XSf X XZf X XAf X XPf X X

Page 25: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

25

Lahutamise käsud III

Sbb A, B A = A – B - CfLipud: Signed UnsignedOf XCf XSf X XZf X XAf X XPf X X

Page 26: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

26

Lahutamise käsud IV

Dec A A = A - 1Lipud: Signed UnsignedOf XCf - -Sf X XZf X XAf X XPf X X

Page 27: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

27

Lahutamise käsud V

J := K – Jmov ax, Ksub J, ax

J = J – K ???

Page 28: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

28

Lahutamise käsud VI

J := K – Jmov ax, Ksub ax, Jmov J, ax

J = K – J !!!

Page 29: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

29

Lahutamise käsud VII

J := J - (K + M) J:=J – K – M

mov ax, Jsub ax, K ; J:=J - Ksub ax, M ; J:=J - Mmov J, ax

Page 30: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

30

Lahutamise käsud VIII

J := J - (K + M)

mov ax, Kadd ax, M ; K + Msub J, ax ; J:= J – (K + M)

Page 31: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

31

Lahutamise käsud IX

Cmp A, B A – B => FR

If ((Sf=0)&(Of=1)) or ((Sf=1)&(Of=0)) then A < B

If ((Sf=0)&(Of=0)) or ((Sf=1)&(Of=1)) then A > B

Page 32: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

32

Lahutamise käsud XA B S O------ ------ - -FFFF (-1) - FFFE (-2) 0

08000 (-32768) - 0001 (1) 0 1FFFE (-2) - FFFF (-1) 1

07FFF (32767) - FFFF (-1) 1

1

Page 33: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

33

Lahutamise käsud XI

Neg A A = 0 - ALipud:Of XCf XSf XZf XAf XPf X

Page 34: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

34

Lahutamise käsud XII

J := -Kmov ax, Kneg axmov J, ax

J := - Jneg J

Page 35: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

35

Korrutamise käsud I

Unsigned Mul reg Mul mem

Signed Imulreg Imulmem

Page 36: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

36

Korrutamise käsud II

mul operand8imul operand8

ax := al * operand8

Page 37: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

37

Korrutamise käsud III

mul operand16imul operand16

dx:ax := ax * operand16

Page 38: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

38

Korrutamise käsud IV

Lipud:Of XCf XAf X ; ei ole tähtisPf X ; ei ole tähtisSf X ; ei ole tähtisZf X ; ei ole tähtis

Page 39: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

39

Jagamise käsud I

Unsigned Div reg Div mem

Signed Idiv reg Idiv mem

Page 40: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

40

Jagamise käsud II

div operand8idiv operand8

al := ax / operand8ah := jääk

Page 41: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

41

Jagamise käsud III

div operand16idiv operand16

ax := dx:ax / operand16dx := jääk

Page 42: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

42

Jagamise käsud IVLipud:Af, Cf, Of, Pf, Sf, Zf - ei oma tähtsust

Hoiatus:Jagatav => 2 * (Jagaja)Jagaja != 0 (Arvuti mõistes)Jagatis => (Jagatav) / 20800h : 2 = 0400h ???

Page 43: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

43

Jagamise käsud V

J := K / M (unsigned)mov ax, K ;Lugejamov dx, 0 ;Pikk lugeja

; < Jagaja != 0 >div M ;Jagaminemov J, ax

Page 44: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

44

Jagamise käsud VI

J := K / M (signed)mov ax, K ;Lugejacwd ;Pikk lugeja

; < Jagaja != 0 >idiv M ;Jagaminemov J, ax

Page 45: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

45

Jagamise käsud VII

J := (K*M)/Pmov ax, K imul M ; 32-bit korrutisidiv P ; 32-bit jagatavmov J, ax

Page 46: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

46

Kokkuvõte I

Aritmeetilised käsud: Liitmine Lahutamine Korrutamine Jagamine

Page 47: Riistvarapõhine programmeerimine

02/07/2004 ID218 Riistvaralähedane programmeerimine

47

Kokkuvõte II

Aritmeetilised käsud: Signed operand Unsigned operand

8-bit operand 16-bit operand