Wstęp do informatyki - Katedra Informatyki > Home

Transkrypt

Wstęp do informatyki - Katedra Informatyki > Home
Operandy instrukcji
Operandem instrukcji nazywamy liczbę, której dotyczy
wykonywana operacja.
Wstęp do informatyki
INC
Programowanie komputera – asembler c.d.
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.
Cezary Bolek
[email protected]
Uniwersytet Łódzki
ADD AL,13
Wydział Zarządzania
Katedra Informatyki
operand
przeznaczenia
; dodaj do AL wartość 13h
operand
źródłowy
Wstęp do informatyki
Tryby adresowania
Cezary Bolek <[email protected]>
2
Adresowanie natychmiastowe
(Immediate)
Tryb adresowania jest to sposób określenia lokalizacji
operandu instrukcji
Operand jest podaną liczbą
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
MOV AL,55
;załaduj liczbę 55h do AL
operand źródłowy
wyraŜony w trybie
natychmiastowym
;dodaj do DL wartość 5h
operand
- liczba
NOT 10
adresowanie natychmiastowe
jest zabronione dla pojedynczych
operandów oraz operandów przeznaczenia
;???
Cezary Bolek <[email protected]>
3
Wstęp do informatyki
Cezary Bolek <[email protected]>
4
1
Adresowanie bezpośrednie rejestrowe
Adresowanie bezpośrednie pamięci
(Register Direct)
(Memory Direct)
Operand jest liczbą w podanym rejestrze
DEC CL
MOV AL,55
Operand jest liczbą w komórce pamięci o
podanym [adresie] (w nawiasach kwadratowych)
;załaduj liczbę 55h do AL
MOV AL,[10]
operand przeznaczenia
wyraŜony w trybie
bezpośrednim rejestrowym
!Uwaga
MOV AL,BL
operand źródłowy
wyraŜony w trybie adresowania
bezpośrednim pamięci
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]>
MOV [30],BL
MOV AL,[30]
5
AL
BL
CL
DL
5A
5A
33
MOV DL,[8]
33
Cezary Bolek <[email protected]>
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
0
1
2
3
4
5
6
7
8
9
A
B
Nie jest moŜliwe wykonanie operacji bezpośrednio
pomiędzy komórkami pamięci
MOV [10],[20]
Wstęp do informatyki
Cezary Bolek <[email protected]>
6
Adresowanie
bezpośrednie pamięci
Pamięć
MOV [1],BL
; realizacja MOV AL,BL
; w symulatorze
Wstęp do informatyki
Adresowanie bezpośrednie pamięci
Procesor
; załaduj liczbę z komórki
; o adresie 10h do rejestru AL
7
Wstęp do informatyki
; niedozwolone
Cezary Bolek <[email protected]>
8
2
Adresowanie pośrednie rejestrowe
Adresowanie pośrednie rejestrowe
(Register Indirect)
Procesor
Operand jest liczbą w komórce pamięci o adresie
znajdującym się w [rejestrze]
MOV AL,[BL]
06
7B
C0
0A
AL
BL
CL
DL
; załaduj wartość z komórki
; o adresie w BL do AL
Pamięć
MOV BL,[AL]
operand źródłowy
wyraŜony w trybie
pośrednim rejestrowym
MOV [AL],BL
7B
; załaduj wartość rejestru BL
; do komórki o adresie w AL
C0
MOV [DL],CL
0
1
2
3
4
5
6
7
8
9
A
B
operand przeznaczenia
wyraŜony w trybie
pośrednim rejestrowym
Wstęp do informatyki
Cezary Bolek <[email protected]>
9
Wstęp do informatyki
Posiadanie wielu adresowania komplikuje wewnętrzną
strukturę procesora, ale moŜe znacznie zwiększać jego
wydajność
Dla instrukcji arytmetycznych, logicznych i przesunięć nie
jest dozwolone uŜywanie adresowania pośredniego
rejestrowego.
AL,[BL]
[AL]
[AL],BL
[CL]
[DL]
Przykłady trybów adresowania (niedostępne w symulatorze)
;niedozwolone
;niedozwolone
;niedozwolone
;niedozwolone
;niedozwolone
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)
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]>
10
Inne tryby adresowania
Adresowanie pośrednie rejestrowe
ADD
INC
OR
NOT
ROR
Cezary Bolek <[email protected]>
11
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
3
Zaawansowany tryb adresowania - przykład
Procesor
A0
A1
D0
D1
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ęć
Pamięć
0
1
2
3
4
5
6
7
8
9
A
B
01
+D0
03
9F
+2
MOV D1,[2,[A0,D0]]
08
wierzchołek
stosu
9F
Stos jest wykorzystywany do
przechowywania pośrednich wyników obliczeń,
przekazywania parametrów do procedur
realizacji mechanizmu powrotu z podprogramu
Adresowanie pośrednie komórką pamięci z indeksem i przesunięciem
Wstęp do informatyki
Cezary Bolek <[email protected]>
13
Wstęp do informatyki
Cezary Bolek <[email protected]>
Organizacja stosu
SP
14
Zapis na stos
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
stos
maleje
stos
rośnie
PUSH X
Instrukcja PUSH odkłada na stos wartość rejestru X
(AL, BL, CD lub DL).
Pamięć
ws
0
Wartość wskaźnika stosu SP jest odpowiednio modyfikowana, aby
wskazywała aktualną pozycję wierzchołka po wykonaniu operacji.
Pamięć
0
Procesor
ws
SP
ws
AL
77
77
ws
ws
n
PUSH AL
n
Wstęp do informatyki
Cezary Bolek <[email protected]>
15
Wstęp do informatyki
Cezary Bolek <[email protected]>
16
4
Odczyt ze stosu
POP
Podprogramy
X
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.
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.
Program główny:
Pamięć
0
Procesor
SP
ws
BL
5A
5A
ws
ws
Koniec programu
Podprogram X:
n
Koniec podprogramu
instr1
instr2
instr3
uruchom podprogram X
instr4
instr5
uruchom podprogram X
instr6
STOP
instr1
instr2
instr3
powrót
POP BL
Wstęp do informatyki
Cezary Bolek <[email protected]>
17
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.
Skok realizowany jest poprzez zapis
do rejestru IP wartości adresu
początku podprogramu (X)
Procesor
IP
SP
adres
powrotu
Cezary Bolek <[email protected]>
Podczas powrotu z podprogramu
ze stosu pobierany jest adres
powrotu, tj. adres instrukcji, od której
trzeba wznowić wykonywanie programu
głównego.
0
Pamięć
Powrót realizowany jest poprzez zapis
do rejestru IP wartości adresu
odczytanego ze stosu (adres powrotu)
adres
powrotu
X
Procesor
X
ws
adres
powrotu
18
Mechanizm powrotu z podprogramu
Pamięć
instr1
instr2
instr3
CALL X
instr4
instr5
END
instr1
instr2
RET
Wstęp do informatyki
ws
ws
IP
adres
powrotu
SP
ws
instr1
instr2
instr3
CALL X
instr4
instr5
END
instr1
instr2
RET
0
n
adres
powrotu
0
adres
powrotu
X
ws
ws
n
Wstęp do informatyki
Cezary Bolek <[email protected]>
19
Wstęp do informatyki
Cezary Bolek <[email protected]>
20
5
Przekazywanie parametrów przez rejestry
procesora
Instrukcje skoku i powrotu z podprogramu
CALL xxx
instrukcja skoku do podprogramu
rozpoczynającego się od adresu xxx
Podprogramy mogą wykorzystywać
wartości umieszczone w rejestrach
procesora jako swoje parametry.
RET
instrukcja powrotu (zakończenia) z aktualnie
wykonywanego podprogramu
Jedynym ograniczeniem tej metody
jest ograniczona liczba rejestrów
wewnętrznych procesora.
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
BL,FF
BL
cc
Wstęp do informatyki
wait:
Cezary Bolek <[email protected]>
21
Wstęp do informatyki
MOV
MOV
CALL
...
MOV
MOV
CALL
...
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
DEC
JNZ
RET
DEC
JNZ
RET
BL
wait
BL,90
wait
Cezary Bolek <[email protected]>
22
ORG adres ; origin
jest dyrektywą określającą adres w pamięci, od jakiego
będą umieszczane kolejne instrukcje lub dane.
AL,10
[80],AL
wait
DB
AL,90
[80],AL
wait
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
BL,[80]
BL
cc
Cezary Bolek <[email protected]>
BL,10
wait
Określanie początku
programu lub danych
Przekazywanie parametrów przez komórki
pamięci
Podprogramy mogą wykorzystywać
wartości umieszczone w komórkach
pamięci jako swoje parametry.
MOV
CALL
...
MOV
CALL
...
23
Wstęp do informatyki
0
5
1F
0
instr1 0
instr2
1F
0
5
Cezary Bolek <[email protected]>
24
6
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
7