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