Upload
julie-hart
View
260
Download
1
Embed Size (px)
Citation preview
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
12/07/2005 ID218 Riistvaralähedane programmeerimine
3
Registrid
Üldregistrid
Segmendiregistrid
Eriregistrid
12/07/2005 ID218 Riistvaralähedane programmeerimine
4
Üldregistrid I
12/07/2005 ID218 Riistvaralähedane programmeerimine
5
Üldregistrid II
Ax accumulator
Bx base register
Cx count register
Dx data register
12/07/2005 ID218 Riistvaralähedane programmeerimine
6
Üldregistrid III
Si source index
Di destination index
Bp base pointer
Sp stack pointer
12/07/2005 ID218 Riistvaralähedane programmeerimine
7
Segmendiregistrid
Cs code segment
Ds data segment
Ss stack segment
Es extra segment
12/07/2005 ID218 Riistvaralähedane programmeerimine
8
Eriregistrid
IP instruction pointer
Flags register
12/07/2005 ID218 Riistvaralähedane programmeerimine
9
Mälu korraldus
Segmendid
Adresseerimisviisid
Intel 8086 adresseerimine
12/07/2005 ID218 Riistvaralähedane programmeerimine
10
Füüsiline segment
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)
12/07/2005 ID218 Riistvaralähedane programmeerimine
12
Mälu adresseerimisviisid
Otseadresseerimine
Vahetu adresseerimine
Kaudne adresseerimine
12/07/2005 ID218 Riistvaralähedane programmeerimine
13
Otseadresseerimine I
Op. Code Effective address
Direct Mode
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
12/07/2005 ID218 Riistvaralähedane programmeerimine
15
Otseadresseerimine III
Op. Code
Base displacement Mode
aaddressRegister
Register Constant
Effective aaddress
+
12/07/2005 ID218 Riistvaralähedane programmeerimine
16
Otseadresseerimine IV
Op. Code
Base displacement Mode
aaddressRegister
Register Register
Effective aaddress
+
aaddressRegister
12/07/2005 ID218 Riistvaralähedane programmeerimine
17
Vahetu adresseerimine I
Op. Code Constant
Immidiate Mode
12/07/2005 ID218 Riistvaralähedane programmeerimine
18
Vahetu adresseerimine II
Op. Code Register
Register addressing Mode
OperandRegister
12/07/2005 ID218 Riistvaralähedane programmeerimine
19
Kaudne adresseerimine I
Op. Code AddressMain memory
Effective addressIndirect addressing
mode
12/07/2005 ID218 Riistvaralähedane programmeerimine
20
Kaud adresseerimine II
Op. Code AddressMain memory
Effective addressRegister indirect
addressing mode
aaddressRegister
12/07/2005 ID218 Riistvaralähedane programmeerimine
21
Käsuloenduriga adresseerimine
aaddressPCOp. Code Offset
PC relative addressing Mode
Effective aaddress
+
12/07/2005 ID218 Riistvaralähedane programmeerimine
22
Intel 8086 mälu adresseerimisviisid
Register
Immediate
Direct memory
Indirect memory
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
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
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
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
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
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
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
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]
12/07/2005 ID218 Riistvaralähedane programmeerimine
31
Direct Memory Operands IV
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
12/07/2005 ID218 Riistvaralähedane programmeerimine
33
Indirect Memory Operands II
Mov ax, WORD [bx]
Mov ax, [bx+si]
Mov ax, table[si]
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
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
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
12/07/2005 ID218 Riistvaralähedane programmeerimine
37
Indirect Memory Operands VI
12/07/2005 ID218 Riistvaralähedane programmeerimine
38
Indirect Memory Operands VII
12/07/2005 ID218 Riistvaralähedane programmeerimine
39
Indirect Memory Operands VIII
12/07/2005 ID218 Riistvaralähedane programmeerimine
40
Indirect Memory Operands IX
12/07/2005 ID218 Riistvaralähedane programmeerimine
41
Indirect Memory Operands X
12/07/2005 ID218 Riistvaralähedane programmeerimine
42
Indirect Memory Operands XI
12/07/2005 ID218 Riistvaralähedane programmeerimine
43
Indirect Memory Operands XII
12/07/2005 ID218 Riistvaralähedane programmeerimine
44
Indirect Memory Operands XIII
12/07/2005 ID218 Riistvaralähedane programmeerimine
45
Indirect Memory Operands XIV
[Bx] [Si]
disp [Bp] [Di]
12/07/2005 ID218 Riistvaralähedane programmeerimine
46
Kokkuvõtte I
Programmeerijale tähtis:
Registrid
Mälukorraldus
Käsustik
12/07/2005 ID218 Riistvaralähedane programmeerimine
47
Kokkuvõtte II
Registrid:
Üldregistrid
Segmendiregistrid
Eriregistrid
12/07/2005 ID218 Riistvaralähedane programmeerimine
48
Kokkuvõtte III
Mälukorraldus:
Vahetu adresseerimine
Otsene adresseerimine
Kaudne adresseerimine