Riistvarapõhine programmeerimine

Preview:

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

Riistvarapõhine programmeerimine

Loeng 4Arvuti käsustik, aritmeetilised käsud

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

3

Arvuti käsustik II

Kodeerimine – Basic Instruction Encoding

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

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

6

Arvuti käsustik V

Kodeerimine – Single Operand Instruction Encoding

02/07/2004 ID218 Riistvaralähedane programmeerimine

7

Arvuti käsustik VI

Kodeerimine – Zero Operand Instruction Encoding

02/07/2004 ID218 Riistvaralähedane programmeerimine

8

Arvuti käsustik VII

Kodeerimine – JUMP Instruction Encoding

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

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

11

Flag Register

02/07/2004 ID218 Riistvaralähedane programmeerimine

12

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

13

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

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

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

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

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

18

Liitmise käsud VI

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

19

Liitmise käsud VI

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

20

Liitmise käsud VII

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

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

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

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

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

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

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

27

Lahutamise käsud V

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

J = J – K ???

02/07/2004 ID218 Riistvaralähedane programmeerimine

28

Lahutamise käsud VI

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

J = K – J !!!

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

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)

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

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

33

Lahutamise käsud XI

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

34

Lahutamise käsud XII

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

J := - Jneg J

02/07/2004 ID218 Riistvaralähedane programmeerimine

35

Korrutamise käsud I

Unsigned Mul reg Mul mem

Signed Imulreg Imulmem

02/07/2004 ID218 Riistvaralähedane programmeerimine

36

Korrutamise käsud II

mul operand8imul operand8

ax := al * operand8

02/07/2004 ID218 Riistvaralähedane programmeerimine

37

Korrutamise käsud III

mul operand16imul operand16

dx:ax := ax * operand16

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

39

Jagamise käsud I

Unsigned Div reg Div mem

Signed Idiv reg Idiv mem

02/07/2004 ID218 Riistvaralähedane programmeerimine

40

Jagamise käsud II

div operand8idiv operand8

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

41

Jagamise käsud III

div operand16idiv operand16

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

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 ???

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

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

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

02/07/2004 ID218 Riistvaralähedane programmeerimine

46

Kokkuvõte I

Aritmeetilised käsud: Liitmine Lahutamine Korrutamine Jagamine

02/07/2004 ID218 Riistvaralähedane programmeerimine

47

Kokkuvõte II

Aritmeetilised käsud: Signed operand Unsigned operand

8-bit operand 16-bit operand

Recommended