Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus Arvuti programmeerija pilguga Registrid Mälu korraldus Käsustik 12/07/2005 ID218 Riistvaralähedane programmeerimine Registrid Üldregistrid Segmendiregistrid Eriregistrid 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid I 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid II Ax accumulator Bx base register Cx count register Dx data register 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid III Si source index Di destination index Bp base pointer Sp stack.
Download
Report
Transcript Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus Arvuti programmeerija pilguga Registrid Mälu korraldus Käsustik 12/07/2005 ID218 Riistvaralähedane programmeerimine Registrid Üldregistrid Segmendiregistrid Eriregistrid 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid I 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid II Ax accumulator Bx base register Cx count register Dx data register 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid III Si source index Di destination index Bp base pointer Sp stack.
Riistvarapõhine
programmeerimine
Loeng 3
Arvuti programmeerija
pilguga
Mälu korradus
Arvuti programmeerija pilguga
Registrid
Mälu korraldus
Käsustik
12/07/2005
ID218 Riistvaralähedane
programmeerimine
2
Registrid
Üldregistrid
Segmendiregistrid
Eriregistrid
12/07/2005
ID218 Riistvaralähedane
programmeerimine
3
Üldregistrid I
12/07/2005
ID218 Riistvaralähedane
programmeerimine
4
Üldregistrid II
Ax
accumulator
Bx
base register
Cx
count register
Dx
data register
12/07/2005
ID218 Riistvaralähedane
programmeerimine
5
Üldregistrid III
Si
source index
Di
destination index
Bp
base pointer
Sp
stack pointer
12/07/2005
ID218 Riistvaralähedane
programmeerimine
6
Segmendiregistrid
Cs
code segment
Ds
data segment
Ss
stack segment
Es
extra segment
12/07/2005
ID218 Riistvaralähedane
programmeerimine
7
Eriregistrid
IP
Flags register
12/07/2005
instruction pointer
ID218 Riistvaralähedane
programmeerimine
8
Mälu korraldus
Segmendid
Adresseerimisviisid
Intel 8086 adresseerimine
12/07/2005
ID218 Riistvaralähedane
programmeerimine
9
Füüsiline segment
12/07/2005
ID218 Riistvaralähedane
programmeerimine
10
Loogiline segment
Andmete segment (Data segment)
Koodi segment (Code segment)
Pinu segment (Stack segment)
Lisasegment (Extra segment)
12/07/2005
ID218 Riistvaralähedane
programmeerimine
11
Mälu adresseerimisviisid
Otseadresseerimine
Vahetu adresseerimine
Kaudne adresseerimine
12/07/2005
ID218 Riistvaralähedane
programmeerimine
12
Otseadresseerimine I
Op. Code
Effective address
Direct Mode
12/07/2005
ID218 Riistvaralähedane
programmeerimine
13
Otseadresseerimine II
Op. Code
Register
Register
Effective aaddress
Register direct Mode
Effektiivaadress on registris
Kasutatakse kui aadress on muutuja
12/07/2005
ID218 Riistvaralähedane
programmeerimine
14
Otseadresseerimine III
Op. Code
Register
Register
aaddress
Constant
+
Effective aaddress
Base displacement Mode
12/07/2005
ID218 Riistvaralähedane
programmeerimine
15
Otseadresseerimine IV
Op. Code
Register
Register
aaddress
Register
Register
aaddress
+
Effective aaddress
Base displacement Mode
12/07/2005
ID218 Riistvaralähedane
programmeerimine
16
Vahetu adresseerimine I
Op. Code
Constant
Immidiate Mode
12/07/2005
ID218 Riistvaralähedane
programmeerimine
17
Vahetu adresseerimine II
Op. Code
Register
Register
Operand
Register addressing Mode
12/07/2005
ID218 Riistvaralähedane
programmeerimine
18
Kaudne adresseerimine I
Op. Code
Indirect
addressing
mode
12/07/2005
Address
Main
memory
Effective address
ID218 Riistvaralähedane
programmeerimine
19
Kaud adresseerimine II
Op. Code
Register
Register
indirect
addressing
mode
12/07/2005
Address
Main
memory
aaddress
Effective address
ID218 Riistvaralähedane
programmeerimine
20
Käsuloenduriga
adresseerimine
Op. Code
Offset
PC
aaddress
+
Effective aaddress
PC relative addressing Mode
12/07/2005
ID218 Riistvaralähedane
programmeerimine
21
Intel 8086 mälu
adresseerimisviisid
Register
Immediate
Direct memory
Indirect memory
12/07/2005
ID218 Riistvaralähedane
programmeerimine
22
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
23
Register Operands II
Mov bx, 10
Add ax, bx
Jmp di
; Load constant to BX
; Add BX to AX
; Jump to the address in DI
Mov [bx], dl
inc
bx
Mov [bx], dl
; Store DL in indirect memory operand
; Increment register operand
; Store DL in new indirect memory
operand
12/07/2005
ID218 Riistvaralähedane
programmeerimine
24
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
25
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
26
Immediate Operands III
OFFSET Operator
Mov bx, OFFSET var
; Load offset address
SEG Operator
Mov
ax, SEG farvar
Mov
es, ax
12/07/2005
; Load segment address
ID218 Riistvaralähedane
programmeerimine
27
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
28
Direct Memory Operands II
var
.DATA; Segment for uninitialized data
BYTE ?
; Reserve one byte, labeled "var“
.CODE
.
.
.
Mov var, al
12/07/2005
; Copy AL to byte at var
ID218 Riistvaralähedane
programmeerimine
29
Direct Memory Operands III
[ ] = “+”
Mov
Mov
Mov
Mov
Mov
Mov
12/07/2005
ax,
ax,
ax,
ax,
ax,
ax,
array[2]
array+2
array[-2]
array-2
var
[var]
; [ ] = “+”
; lubatud “-”
; [ ] või ilma
ID218 Riistvaralähedane
programmeerimine
30
Direct Memory Operands IV
12/07/2005
ID218 Riistvaralähedane
programmeerimine
31
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
32
Indirect Memory Operands II
Mov
ax, WORD [bx]
Mov
ax, [bx+si]
Mov
ax, table[si]
12/07/2005
ID218 Riistvaralähedane
programmeerimine
33
Indirect Memory Operands III
table
WORD
100 DUP (0) ; õige
.
.
.
Mov
ax, table[bx][di]+6
Mov
ax, mem1[si] + mem2
12/07/2005
; vale
ID218 Riistvaralähedane
programmeerimine
34
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
35
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
36
Indirect Memory Operands VI
12/07/2005
ID218 Riistvaralähedane
programmeerimine
37
Indirect Memory Operands VII
12/07/2005
ID218 Riistvaralähedane
programmeerimine
38
Indirect Memory Operands
VIII
12/07/2005
ID218 Riistvaralähedane
programmeerimine
39
Indirect Memory Operands IX
12/07/2005
ID218 Riistvaralähedane
programmeerimine
40
Indirect Memory Operands X
12/07/2005
ID218 Riistvaralähedane
programmeerimine
41
Indirect Memory Operands XI
12/07/2005
ID218 Riistvaralähedane
programmeerimine
42
Indirect Memory Operands XII
12/07/2005
ID218 Riistvaralähedane
programmeerimine
43
Indirect Memory Operands
XIII
12/07/2005
ID218 Riistvaralähedane
programmeerimine
44
Indirect Memory Operands
XIV
[Bx]
[Si]
disp
[Bp]
12/07/2005
[Di]
ID218 Riistvaralähedane
programmeerimine
45
Kokkuvõtte I
Programmeerijale tähtis:
Registrid
Mälukorraldus
Käsustik
12/07/2005
ID218 Riistvaralähedane
programmeerimine
46
Kokkuvõtte II
Registrid:
Üldregistrid
Segmendiregistrid
Eriregistrid
12/07/2005
ID218 Riistvaralähedane
programmeerimine
47
Kokkuvõtte III
Mälukorraldus:
Vahetu adresseerimine
Otsene adresseerimine
Kaudne adresseerimine
12/07/2005
ID218 Riistvaralähedane
programmeerimine
48