Wstęp do iformatyki Programowaie komputera asembler c.d. Cezary Bolek cbolek@ki.ui.lodz.pl Uiwersytet Łódzki Wydział Zarządzaia Katedra Iformatyki Operady istrukcji Operadem istrukcji azywamy liczbę, której dotyczy wykoywaa operacja. INC AL ; zwiększ wartość rejestru AL operad istrukcji (wartość w rejestrze) Dla operacji wymagających dwóch operadów, 1) pierzy azyway jest operadem przezaczeia, 2) drugi operadem źródłowym. ADD AL,13 ; dodaj do AL wartość 13 h operad przezaczeia operad źródłowy Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 2 Tryby owaia Tryb owaia jest to sposób określeia lokalizacji operadu istrukcji KaŜdy operad istrukcji moŝe być wyraŝoy za pomocą róŝego trybu owaia. Nie zystkie tryby owaia są dozwoloe dla zystkich istrukcji ADD DL, ;dodaj do DL wartość h operad w rejestrze operad - liczba ADD,DL ;??? Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 3 1
Adresowaie atychmiastowe (Immediate) Operad jest podaą liczbą AL, ;załaduj liczbę h do AL operad źródłowy wyraŝoy w trybie atychmiastowym NOT 1 owaie atychmiastowe jest zabroioe dla pojedyczych operadów oraz operadów przezaczeia Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 4 Adresowaie bezpośredie rejestrowe (Register Direct) Operad jest liczbą w podaym rejestrze DEC CL AL, ;załaduj liczbę h do AL operad przezaczeia wyraŝoy w trybie bezpośredim rejestrowym!uwaga AL,BL Przesłaia międzyrejestrowe w trybie bezpośredim rejestrowym ie są dozwoloe w symulatorze stosowaym w laboratorium, (ale zwykle akceptowae przez większość procesorów) Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> Adresowaie bezpośredie pamięci (Memory Direct) Operad jest liczbą w komórce pamięci o podaym [ie] (w awiasach kwadratowych) AL,[1] ; załaduj liczbę z komórki ; o ie 1 h do rejestru AL operad źródłowy wyraŝoy w trybie owaia bezpośredim pamięci [3],BL AL,[3] ; realizacja AL,BL ; w symulatorze Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 6 2
Adresowaie bezpośredie pamięci AL BL CL DL A 33 [1],BL DL,[8] A 33 1 2 3 4 6 7 8 9 A B Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 7 Adresowaie bezpośredie pamięci Dla istrukcji arytmetyczych, logiczych i przesuięć ie jest dozwoloe uŝywaie owaia bezpośrediego pamięci. ADD AL,[2] ;iedozwoloe INC [] ;iedozwoloe OR [],BL ;iedozwoloe NOT [1] ;iedozwoloe ROR [3] ;iedozwoloe Nie jest moŝliwe wykoaie operacji bezpośredio pomiędzy komórkami pamięci [1],[2] ; iedozwoloe Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 8 Adresowaie pośredie rejestrowe (Register Idirect) Operad jest liczbą w komórce pamięci o ie zajdującym się w [rejestrze] AL,[BL] [AL],BL ; załaduj wartość z komórki ; o ie w BL do AL operad źródłowy wyraŝoy w trybie pośredim rejestrowym ; załaduj wartość rejestru BL ; do komórki o ie w AL operad przezaczeia wyraŝoy w trybie pośredim rejestrowym Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 9 3
Adresowaie pośredie rejestrowe AL BL CL DL 6 7B C A [DL],CL BL,[AL] 7B C 1 2 3 4 6 7 8 9 A B Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 1 Adresowaie pośredie rejestrowe Dla istrukcji arytmetyczych, logiczych i przesuięć ie jest dozwoloe uŝywaie owaia pośrediego rejestrowego. ADD AL,[BL] ;iedozwoloe INC [AL] ;iedozwoloe OR [AL],BL ;iedozwoloe NOT [CL] ;iedozwoloe ROR [DL] ;iedozwoloe Nie jest moŝliwe wykoaie operacji bezpośredio pomiędzy komórkami pamięci [AL],[BL] ;iedozwoloe Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 11 Ie tryby owaia Posiadaie wielu owaia komplikuje wewętrzą strukturę procesora, ale moŝe zaczie zwiększać jego wydajość Przykłady trybów owaia (iedostępe w symulatorze) a) pośredie rejestrowe z przesuięciem b) pośredie rejestrowe z ideksem (i przesuięciem) c) pośredie liczikiem programu (z ideksem i przesuięciem) d) pośredie komórką pamięci (z ideksem i przesuięciem) e) pośredie rejestrowe z postikremetacją f) pośredie rejestrowe z predekremetacją a) X,[Y,Z] b) X,[d,Y,Z] c) X,[d,PC,Y] d) X,[d,[X,Y]] e) X,Y+ f) X,-Y X,Y,Z rejestry wewętrze procesora, d liczba Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 12 4
Zaawasoway tryb owaia - przykład A A1 D D1 1 1 2 3 +D 3 9F 4 8 6 7 8 +2 9 A 9F B D1,[2,[A,D]] Adresowaie pośredie komórką pamięci z ideksem i przesuięciem Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 13 Stos Stos jest strukturą daych w pamięci, zorgaizowaą w taki sposób, Ŝe w daej chwili moŝliwy jest dostęp (odczyt lub zapis) tylko do jedego elemetu zajdującego się a wierzchołku. wierzchołek stosu stos rośie stos maleje Stos jest wykorzystyway do przechowywaia pośredich wyików obliczeń, przekazywaia parametrów do procedur realizacji mechaizmu z podprogramu Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 14 Orgaizacja stosu Orgaizacja struktury stosu zaleŝy od typu procesora, a omówioa poiŝej dotyczy symulatora z laboratorium. Stos rośie w kieruku malejących ów PołoŜeie wierzchołka stosu zajduje się w rejestrze (stack poiter). kazuje a pierzy woly bajt a stosie (a ie a ostati zajęty) Zdjęcie (odczytaie) bajtu ze stosu wymaga zwiększeia o 1 i odczytaia komórki o ie [] OdłoŜeie (zapisaie) bajtu a stos wymaga zapisu do komórki o ie [] i zmiejszeia o 1 Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 1
Zapis a stos PUSH X Istrukcja PUSH odkłada a stos wartość rejestru X (AL, BL, CD lub DL). Wartość kaźika stosu jest odpowiedio modyfikowaa, aby kazywała aktualą pozycję wierzchołka po wykoaiu operacji. 77 AL 77 PUSH AL Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 16 Odczyt ze stosu POP Istrukcja POP zdejmuje ze stosu wartość i umieszcza w rejestrze X (AL, BL, CD lub DL). Wartość kaźika stosu jest odpowiedio modyfikowaa, aby kazywała aktualą pozycję wierzchołka po wykoaiu operacji. X A BL A POP BL Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 17 Podprogramy Podprogram jest ciągiem istrukcji, który staowi fukcjoalą całość i moŝe być wywoływay z dowolego miejsca w programie główym, a po zakończeiu swego działaia powraca do miejsca skąd był wywołay. Program główy: Koiec programu Podprogram X: Koiec podprogramu istr3 uruchom podprogram X istr4 istr uruchom podprogram X istr6 STOP istr3 powrót Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 18 6
Mechaizm skoku do podprogramu Podczas skoku do podprogramu a stos odkładay jest (z rejestru IP), tj. istrukcji astępej po istrukcji skoku do podprogramu. Skok realizoway jest poprzez zapis do rejestru IP wartości u początku podprogramu (X) IP X istr3 CALL X istr4 istr END X Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 19 Mechaizm z podprogramu Podczas z podprogramu ze stosu pobieray jest, tj. istrukcji, od której trzeba wzowić wykoywaie programu główego. Powrót realizoway jest poprzez zapis do rejestru IP wartości u odczytaego ze stosu ( ) IP istr3 CALL X istr4 istr END X Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 2 Istrukcje skoku i z podprogramu CALL xxx istrukcja skoku do podprogramu rozpoczyającego się od u xxx istrukcja (zakończeia) z aktualie wykoywaego podprogramu p. ext: CALL wait JMP ext wait: BL,FF cc: DEC BL JNZ cc program główy wywołuje podprogram wait w ieskończoej pętli realizacja pętli opóźiającej jako podprogram wait Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 21 7
Przekazywaie parametrów przez rejestry procesora Podprogramy mogą wykorzystywać wartości umieszczoe w rejestrach procesora jako swoje parametry. Jedyym ograiczeiem tej metody jest ograiczoa liczba rejestrów wewętrzych procesora. CALL... CALL... BL,1 wait BL,9 wait wait: DEC BL JNZ wait Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 22 Przekazywaie parametrów przez komórki pamięci Podprogramy mogą wykorzystywać wartości umieszczoe w komórkach pamięci jako swoje parametry. Zaletą metody jest moŝliwość przekazaia duŝej liczby parametrów, a iedogodością jest koieczość rezerwacji miejsca w pamięci operacyjej. CALL... CALL... AL,1 [8],AL wait AL,9 [8],AL wait wait: BL,[8] cc: DEC BL JNZ cc Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 23 Określaie początku programu lub daych ORG ; origi jest dyrektywą określającą w pamięci, od jakiego będą umieszczae koleje istrukcje lub dae. DB wartość ; defie byte jest dyrektywą rezerwującą 1 bajt pamięci i wypełiającą go podaą wartością (pomoce przy rezerwacji pamięci) ORG ORG DB 1F DB 1F Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 24 8
Deklaracja apisów w pamięci DB apis jeśli argumetem dyrektywy DB będzie łańcuch tekstowy, to koleje bajty zostaą wypełioe kodami ASCII liter tego łańcucha ORG ORG DB hello DB 48 4 4C 4C 4F Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 2 9