Wstęp do informatyki - Katedra Informatyki > Home

Transkrypt

Wstęp do informatyki - Katedra Informatyki > Home
Wstęp do informatyki
Programowanie komputera – asembler c.d.
Cezary Bolek
[email protected]
Uniwersytet Łódzki
Wydział Zarządzania
Katedra Informatyki
Operandy instrukcji
Operandem instrukcji nazywamy liczbę, której dotyczy
wykonywana operacja.
INC
AL
; zwiększ wartość rejestru AL
operand instrukcji (wartość w rejestrze)
Dla operacji wymagających dwóch operandów,
1) pierwszy nazywany jest operandem przeznaczenia,
2) drugi – operandem źródłowym.
ADD AL,13
operand
przeznaczenia
; dodaj do AL wartość 13h
operand
źródłowy
Wstęp do informatyki
Cezary Bolek <[email protected]>
2
Tryby adresowania
Tryb adresowania jest to sposób określenia lokalizacji
operandu instrukcji
KaŜdy operand instrukcji moŜe być wyraŜony za pomocą
róŜnego trybu adresowania.
Nie wszystkie tryby adresowania są dozwolone dla
wszystkich instrukcji
ADD DL,05
operand
w rejestrze
ADD 05,DL
Wstęp do informatyki
;dodaj do DL wartość 5h
operand
- liczba
;???
Cezary Bolek <[email protected]>
3
1
Adresowanie natychmiastowe
(Immediate)
Operand jest podaną liczbą
MOV AL,55
;załaduj liczbę 55h do AL
operand źródłowy
wyraŜony w trybie
natychmiastowym
NOT 10
adresowanie natychmiastowe
jest zabronione dla pojedynczych
operandów oraz operandów przeznaczenia
Wstęp do informatyki
Cezary Bolek <[email protected]>
4
Adresowanie bezpośrednie rejestrowe
(Register Direct)
Operand jest liczbą w podanym rejestrze
DEC CL
MOV AL,55
;załaduj liczbę 55h do AL
operand przeznaczenia
wyraŜony w trybie
bezpośrednim rejestrowym
!Uwaga
MOV AL,BL
Przesłania międzyrejestrowe w trybie bezpośrednim
rejestrowym nie są dozwolone w symulatorze
stosowanym w laboratorium, (ale zwykle
akceptowane przez większość procesorów)
Wstęp do informatyki
Cezary Bolek <[email protected]>
5
Adresowanie bezpośrednie pamięci
(Memory Direct)
Operand jest liczbą w komórce pamięci o
podanym [adresie] (w nawiasach kwadratowych)
MOV AL,[10]
; załaduj liczbę z komórki
; o adresie 10h do rejestru AL
operand źródłowy
wyraŜony w trybie adresowania
bezpośrednim pamięci
MOV [30],BL
MOV AL,[30]
Wstęp do informatyki
; realizacja MOV AL,BL
; w symulatorze
Cezary Bolek <[email protected]>
6
2
Adresowanie bezpośrednie pamięci
Procesor
AL
BL
CL
DL
Pamięć
MOV [1],BL
5A
5A
33
MOV DL,[8]
Wstęp do informatyki
33
0
1
2
3
4
5
6
7
8
9
A
B
Cezary Bolek <[email protected]>
7
Adresowanie
bezpośrednie pamięci
Dla instrukcji arytmetycznych, logicznych i przesunięć nie
jest dozwolone uŜywanie adresowania bezpośredniego
pamięci.
ADD AL,[20]
;niedozwolone
INC [50]
;niedozwolone
OR
[50],BL
;niedozwolone
NOT [10]
;niedozwolone
ROR [30]
;niedozwolone
Nie jest moŜliwe wykonanie operacji bezpośrednio
pomiędzy komórkami pamięci
MOV [10],[20]
; niedozwolone
Wstęp do informatyki
Cezary Bolek <[email protected]>
8
Adresowanie pośrednie rejestrowe
(Register Indirect)
Operand jest liczbą w komórce pamięci o adresie
znajdującym się w [rejestrze]
MOV AL,[BL]
; załaduj wartość z komórki
; o adresie w BL do AL
operand źródłowy
wyraŜony w trybie
pośrednim rejestrowym
MOV [AL],BL
; załaduj wartość rejestru BL
; do komórki o adresie w AL
operand przeznaczenia
wyraŜony w trybie
pośrednim rejestrowym
Wstęp do informatyki
Cezary Bolek <[email protected]>
9
3
Adresowanie pośrednie rejestrowe
Procesor
06
7B
C0
0A
AL
BL
CL
DL
Pamięć
MOV BL,[AL]
7B
C0
MOV [DL],CL
Wstęp do informatyki
0
1
2
3
4
5
6
7
8
9
A
B
Cezary Bolek <[email protected]>
10
Adresowanie pośrednie rejestrowe
Dla instrukcji arytmetycznych, logicznych i przesunięć nie
jest dozwolone uŜywanie adresowania pośredniego
rejestrowego.
ADD
INC
OR
NOT
ROR
AL,[BL]
[AL]
[AL],BL
[CL]
[DL]
;niedozwolone
;niedozwolone
;niedozwolone
;niedozwolone
;niedozwolone
Nie jest moŜliwe wykonanie operacji bezpośrednio
pomiędzy komórkami pamięci
MOV [AL],[BL]
Wstęp do informatyki
;niedozwolone
Cezary Bolek <[email protected]>
11
Inne tryby adresowania
Posiadanie wielu adresowania komplikuje wewnętrzną
strukturę procesora, ale moŜe znacznie zwiększać jego
wydajność
Przykłady trybów adresowania (niedostępne w symulatorze)
a) pośrednie rejestrowe z przesunięciem
b) pośrednie rejestrowe z indeksem (i przesunięciem)
c) pośrednie licznikiem programu (z indeksem i przesunięciem)
d) pośrednie komórką pamięci (z indeksem i przesunięciem)
e) pośrednie rejestrowe z postinkrementacją
f) pośrednie rejestrowe z predekrementacją
a)
b)
c)
d)
e)
f)
MOV
MOV
MOV
MOV
MOV
MOV
Wstęp do informatyki
X,[Y,Z]
X,[d,Y,Z]
X,[d,PC,Y]
X,[d,[X,Y]]
X,Y+
X,-Y
X,Y,Z – rejestry wewnętrzne procesora,
d
– liczba
Cezary Bolek <[email protected]>
12
4
Zaawansowany tryb adresowania - przykład
Procesor
A0
A1
D0
D1
Pamięć
0
1
2
3
4
5
6
7
8
9
A
B
01
+D0
03
9F
+2
MOV D1,[2,[A0,D0]]
08
9F
Adresowanie pośrednie komórką pamięci z indeksem i przesunięciem
Wstęp do informatyki
Cezary Bolek <[email protected]>
13
Stos
Stos jest strukturą danych w pamięci, zorganizowaną w taki sposób, Ŝe w
danej chwili moŜliwy jest dostęp (odczyt lub zapis) tylko do jednego
elementu znajdującego się na wierzchołku.
Pamięć
wierzchołek
stosu
stos
maleje
stos
rośnie
Stos jest wykorzystywany do
przechowywania pośrednich wyników obliczeń,
przekazywania parametrów do procedur
realizacji mechanizmu powrotu z podprogramu
Wstęp do informatyki
Cezary Bolek <[email protected]>
14
Organizacja stosu
Organizacja struktury stosu zaleŜy od typu procesora, a omówiona poniŜej
dotyczy symulatora z laboratorium.
Stos rośnie w kierunku malejących adresów
PołoŜenie wierzchołka stosu znajduje się
w rejestrze SP (stack pointer).
SP wskazuje na pierwszy wolny bajt
na stosie (a nie na ostatni zajęty)
Zdjęcie (odczytanie) bajtu ze stosu wymaga
zwiększenia SP o 1 i odczytania komórki
o adresie [SP]
OdłoŜenie (zapisanie) bajtu na stos wymaga
zapisu do komórki o adresie [SP]
Procesor
i zmniejszenia SP o 1
SP
Pamięć
ws
0
ws
n
Wstęp do informatyki
Cezary Bolek <[email protected]>
15
5
Zapis na stos
PUSH X
Instrukcja PUSH odkłada na stos wartość rejestru X
(AL, BL, CD lub DL).
Wartość wskaźnika stosu SP jest odpowiednio modyfikowana, aby
wskazywała aktualną pozycję wierzchołka po wykonaniu operacji.
Pamięć
0
Procesor
SP
ws
AL
77
77
ws
ws
n
PUSH AL
Wstęp do informatyki
Cezary Bolek <[email protected]>
16
Odczyt ze stosu
POP
X
Instrukcja POP zdejmuje ze stosu wartość i umieszcza w rejestrze X
(AL, BL, CD lub DL).
Wartość wskaźnika stosu SP jest odpowiednio modyfikowana, aby
wskazywała aktualną pozycję wierzchołka po wykonaniu operacji.
Pamięć
0
Procesor
SP
ws
BL
5A
5A
ws
ws
n
POP BL
Wstęp do informatyki
Cezary Bolek <[email protected]>
17
Podprogramy
Podprogram jest ciągiem instrukcji, który stanowi funkcjonalną całość i
moŜe być wywoływany z dowolnego miejsca w programie głównym, a
po zakończeniu swego działania powraca do miejsca skąd był
wywołany.
Program główny:
Koniec programu
Podprogram X:
Koniec podprogramu
Wstęp do informatyki
instr1
instr2
instr3
uruchom podprogram X
instr4
instr5
uruchom podprogram X
instr6
STOP
instr1
instr2
instr3
powrót
Cezary Bolek <[email protected]>
18
6
Mechanizm skoku do podprogramu
Podczas skoku do podprogramu
na stos odkładany jest adres
powrotu (z rejestru IP), tj. adres
instrukcji następnej po instrukcji
skoku do podprogramu.
Pamięć
instr1
instr2
instr3
CALL X
instr4
instr5
END
instr1
instr2
RET
Skok realizowany jest poprzez zapis
do rejestru IP wartości adresu
początku podprogramu (X)
Procesor
adres
powrotu
IP
adres
powrotu
X
X
ws
SP
0
adres
powrotu
ws
ws
0
n
Wstęp do informatyki
Cezary Bolek <[email protected]>
19
Mechanizm powrotu z podprogramu
Podczas powrotu z podprogramu
ze stosu pobierany jest adres
powrotu, tj. adres instrukcji, od której
trzeba wznowić wykonywanie programu
głównego.
Pamięć
instr1
instr2
instr3
CALL X
instr4
instr5
END
instr1
instr2
RET
Powrót realizowany jest poprzez zapis
do rejestru IP wartości adresu
odczytanego ze stosu (adres powrotu)
Procesor
IP
adres
powrotu
SP
ws
adres
powrotu
0
adres
powrotu
X
ws
ws
n
Wstęp do informatyki
Cezary Bolek <[email protected]>
20
Instrukcje skoku i powrotu z podprogramu
CALL xxx
instrukcja skoku do podprogramu
rozpoczynającego się od adresu xxx
RET
instrukcja powrotu (zakończenia) z aktualnie
wykonywanego podprogramu
np.
next:
CALL wait
JMP
next
program główny wywołuje
podprogram wait
w nieskończonej pętli
wait:
cc:
MOV
DEC
JNZ
RET
realizacja pętli opóźniającej
jako podprogram wait
Wstęp do informatyki
BL,FF
BL
cc
Cezary Bolek <[email protected]>
21
7
Przekazywanie parametrów przez rejestry
procesora
Podprogramy mogą wykorzystywać
wartości umieszczone w rejestrach
procesora jako swoje parametry.
Jedynym ograniczeniem tej metody
jest ograniczona liczba rejestrów
wewnętrznych procesora.
wait:
Wstęp do informatyki
MOV
CALL
...
MOV
CALL
...
BL,10
wait
DEC
JNZ
RET
BL
wait
BL,90
wait
Cezary Bolek <[email protected]>
22
Przekazywanie parametrów przez komórki
pamięci
Podprogramy mogą wykorzystywać
wartości umieszczone w komórkach
pamięci jako swoje parametry.
Zaletą metody jest moŜliwość przekazania
duŜej liczby parametrów, a niedogodnością
jest konieczność rezerwacji miejsca
w pamięci operacyjnej.
wait:
cc:
Wstęp do informatyki
MOV
MOV
CALL
...
MOV
MOV
CALL
...
AL,10
[80],AL
wait
MOV
DEC
JNZ
RET
BL,[80]
BL
cc
AL,90
[80],AL
wait
Cezary Bolek <[email protected]>
23
Określanie początku
programu lub danych
ORG adres ; origin
jest dyrektywą określającą adres w pamięci, od jakiego
będą umieszczane kolejne instrukcje lub dane.
DB
wartość ; define byte
jest dyrektywą rezerwującą 1 bajt pamięci i wypełniającą
go podaną wartością (pomocne przy rezerwacji pamięci)
ORG
instr1
instr2
ORG
DB
DB
Wstęp do informatyki
0
5
1F
0
instr1 0
instr2
1F
0
5
Cezary Bolek <[email protected]>
24
8
Deklaracja napisów
w pamięci
DB ”napis”
jeśli argumentem dyrektywy DB będzie łańcuch
tekstowy, to kolejne bajty zostaną wypełnione
kodami ASCII liter tego łańcucha
ORG
instr1
instr2
ORG
DB
DB
Wstęp do informatyki
0
5
”hello”
0
instr1
instr2
0
48
45
4C
4C
4F
0
5
Cezary Bolek <[email protected]>
25
9

Podobne dokumenty