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