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