48
Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

Embed Size (px)

Citation preview

Page 1: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

Riistvarapõhine programmeerimine

Loeng 3

Arvuti programmeerija

pilguga

Mälu korradus

Page 2: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

2

Arvuti programmeerija pilguga

Registrid

Mälu korraldus

Käsustik

Page 3: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

3

Registrid

Üldregistrid

Segmendiregistrid

Eriregistrid

Page 4: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

4

Üldregistrid I

Page 5: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

5

Üldregistrid II

Ax accumulator

Bx base register

Cx count register

Dx data register

Page 6: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

6

Üldregistrid III

Si source index

Di destination index

Bp base pointer

Sp stack pointer

Page 7: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

7

Segmendiregistrid

Cs code segment

Ds data segment

Ss stack segment

Es extra segment

Page 8: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

8

Eriregistrid

IP instruction pointer

Flags register

Page 9: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

9

Mälu korraldus

Segmendid

Adresseerimisviisid

Intel 8086 adresseerimine

Page 10: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

10

Füüsiline segment

Page 11: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

11

Loogiline segment

Andmete segment (Data segment)

Koodi segment (Code segment)

Pinu segment (Stack segment)

Lisasegment (Extra segment)

Page 12: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

12

Mälu adresseerimisviisid

Otseadresseerimine

Vahetu adresseerimine

Kaudne adresseerimine

Page 13: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

13

Otseadresseerimine I

Op. Code Effective address

Direct Mode

Page 14: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

14

Otseadresseerimine II

Effektiivaadress on registris Kasutatakse kui aadress on muutuja

Op. Code Register

Register direct Mode

Effective aaddressRegister

Page 15: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

15

Otseadresseerimine III

Op. Code

Base displacement Mode

aaddressRegister

Register Constant

Effective aaddress

+

Page 16: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

16

Otseadresseerimine IV

Op. Code

Base displacement Mode

aaddressRegister

Register Register

Effective aaddress

+

aaddressRegister

Page 17: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

17

Vahetu adresseerimine I

Op. Code Constant

Immidiate Mode

Page 18: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

18

Vahetu adresseerimine II

Op. Code Register

Register addressing Mode

OperandRegister

Page 19: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

19

Kaudne adresseerimine I

Op. Code AddressMain memory

Effective addressIndirect addressing

mode

Page 20: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

20

Kaud adresseerimine II

Op. Code AddressMain memory

Effective addressRegister indirect

addressing mode

aaddressRegister

Page 21: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

21

Käsuloenduriga adresseerimine

aaddressPCOp. Code Offset

PC relative addressing Mode

Effective aaddress

+

Page 22: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

22

Intel 8086 mälu adresseerimisviisid

Register

Immediate

Direct memory

Indirect memory

Page 23: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

23

Register Operands I

8- või 16-bit protsessori register

Andmed asuvad registris

Ei nõua mälupöördumist

Page 24: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

24

Register Operands IIMov bx, 10 ; Load constant to BXAdd ax, bx ; Add BX to AXJmp di ; Jump to the address in DI

Mov [bx], dl ; Store DL in indirect memory operand

inc     bx ; Increment register operandMov [bx], dl ; Store DL in new indirect memory

operand

Page 25: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

25

Immediate Operands I

Operandi väärtus on käsukoodis

Operand on const

Määratakse kompileerimise ajal

Lubatud avaldis

Ei nõua mälupöördumist

Page 26: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

26

Immediate Operands II

Mov cx, 20 ; Load constant to register       

Add var, 1Fh ; Add hex constant to variable       

Sub bx, 25 * 80 ; Subtract constant expression

Page 27: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

27

Immediate Operands III

OFFSET Operator

Mov bx, OFFSET var ; Load offset address

       

SEG Operator

Mov ax, SEG farvar ; Load segment address       

Mov es, ax

Page 28: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

28

Direct Memory Operands I

Fikseeritud asukoht mälus Aadress on käsukoodis Tuleb defineerida operandi suurus Lubatud avaldis Nõuab mälupöördumist

Page 29: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

29

Direct Memory Operands II

.DATA ; Segment for uninitialized datavar BYTE ? ; Reserve one byte, labeled

"var“

.CODE        .        .        .

Mov var, al ; Copy AL to byte at var

Page 30: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

30

Direct Memory Operands III

[ ] = “+”

Mov ax, array[2] ; [ ] = “+”Mov ax, array+2 Mov ax, array[-2] ; lubatud “-”Mov ax, array-2 Mov ax, var ; [ ] või ilmaMov ax, [var]

Page 31: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

31

Direct Memory Operands IV

Page 32: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

32

Indirect Memory Operands I

Arvutakse programmi täitmise käigus

Arvutamiseks kasutatakse registreid Tuleb defineerida operandi suurus Võimaldab dünaamilist ligipääsu Lubatud avaldis

Page 33: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

33

Indirect Memory Operands II

Mov ax, WORD [bx]

Mov ax, [bx+si]

Mov ax, table[si]

Page 34: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

34

Indirect Memory Operands III

table WORD 100 DUP (0) ; õige

       .

        .

        .

Mov ax, table[bx][di]+6

Mov ax, mem1[si] + mem2 ; vale

Page 35: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

35

Indirect Memory Operands IV

Mov ax, table[bx][di]

Mov ax, table[di][bx]

Mov ax, table[bx+di]

Mov ax, [table+bx+di]

Mov ax, [bx][di]+table

Page 36: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

36

Indirect Memory Operands V

Base addressing mode – bx, bp Indexed addressing mode – si, di

Base – reg:address, const:offset Index – reg:offset, const:address

BP - > SS

Page 37: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

37

Indirect Memory Operands VI

Page 38: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

38

Indirect Memory Operands VII

Page 39: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

39

Indirect Memory Operands VIII

Page 40: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

40

Indirect Memory Operands IX

Page 41: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

41

Indirect Memory Operands X

Page 42: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

42

Indirect Memory Operands XI

Page 43: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

43

Indirect Memory Operands XII

Page 44: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

44

Indirect Memory Operands XIII

Page 45: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

45

Indirect Memory Operands XIV

[Bx] [Si]

disp [Bp] [Di]

Page 46: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

46

Kokkuvõtte I

Programmeerijale tähtis:

Registrid

Mälukorraldus

Käsustik

Page 47: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

47

Kokkuvõtte II

Registrid:

Üldregistrid

Segmendiregistrid

Eriregistrid

Page 48: Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

12/07/2005 ID218 Riistvaralähedane programmeerimine

48

Kokkuvõtte III

Mälukorraldus:

Vahetu adresseerimine

Otsene adresseerimine

Kaudne adresseerimine