Operady istrukcji Operadem istrukcji azywamy liczbę, której dotyczy wykoywaa operacja. Wstęp do iformatyki Programowaie komputera asembler c.d. INC AL ; zwiększ wartość rejestru AL operad istrukcji (wartość w rejestrze) Cezary Bolek cbolek@ki.ui.lodz.pl Uiwersytet Łódzki Wydział Zarządzaia Katedra Iformatyki Dla operacji wymagających dwóch operadów, ) pierzy azyway jest operadem przezaczeia, ) drugi operadem źródłowym. ADD AL, ; dodaj do AL wartość h operad przezaczeia operad źródłowy Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 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 Adresowaie atychmiastowe (Immediate) Operad jest podaą liczbą AL, ;załaduj liczbę h do AL operad źródłowy wyraŝoy w trybie atychmiastowym operad w rejestrze operad - liczba ADD,DL ;??? NOT owaie atychmiastowe jest zabroioe dla pojedyczych operadów oraz operadów przezaczeia Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 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,!Uwaga AL,BL ;załaduj liczbę h do AL operad przezaczeia wyraŝoy w trybie bezpośredim rejestrowym 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) Adresowaie bezpośredie pamięci (Memory Direct) Operad jest liczbą w komórce pamięci o podaym [ie] (w awiasach kwadratowych) AL,[] [],BL AL,[] ; załaduj liczbę z komórki ; o ie h do rejestru AL operad źródłowy wyraŝoy w trybie owaia bezpośredim pamięci ; realizacja AL,BL ; w symulatorze Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> Adresowaie bezpośredie pamięci Adresowaie bezpośredie pamięci AL BL CL DL A [],BL DL,[8] A 4 8 9 A B Dla istrukcji arytmetyczych, logiczych i przesuięć ie jest dozwoloe uŝywaie owaia bezpośrediego pamięci. ADD AL,[] ;iedozwoloe INC [] ;iedozwoloe OR [],BL ;iedozwoloe NOT [] ;iedozwoloe ROR [] ;iedozwoloe Nie jest moŝliwe wykoaie operacji bezpośredio pomiędzy komórkami pamięci [],[] ; iedozwoloe Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 8
Adresowaie pośredie rejestrowe (Register Idirect) Adresowaie pośredie rejestrowe 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 AL BL CL DL B C A [DL],CL BL,[AL] B C 4 8 9 A B Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 9 Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 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> 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>
Zaawasoway tryb owaia - przykład A A D D +D 9F 4 8 8 + 9 A 9F B D,[,[A,D]] Adresowaie pośredie komórką pamięci z ideksem i przesuięciem 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 jest wykorzystyway do przechowywaia pośredich wyików obliczeń, przekazywaia parametrów do procedur realizacji mechaizmu z podprogramu stos maleje Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 4 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 i odczytaia komórki o ie [] OdłoŜeie (zapisaie) bajtu a stos wymaga zapisu do komórki o ie [] i zmiejszeia o 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. AL PUSH AL Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 4
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. BL A X A 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 istr uruchom podprogram X istr4 istr uruchom podprogram X istr STOP istr powrót POP BL Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 8 Mechaizm skoku do podprogramu Mechaizm z 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 istr X istr4 istr END X 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 istr X istr4 istr END X Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 9 Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl>
Istrukcje skoku i z podprogramu p. xxx istrukcja skoku do podprogramu rozpoczyającego się od u xxx istrukcja (zakończeia) z aktualie wykoywaego podprogramu ext: JMP ext : BL,FF cc: DEC BL JNZ cc program główy wywołuje podprogram w ieskończoej pętli realizacja pętli opóźiającej jako podprogram 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. BL, BL,9 : DEC BL JNZ Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> Przekazywaie parametrów przez komórki pamięci Określaie początku programu lub daych 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. AL, [8],AL AL,9 [8],AL : BL,[8] cc: DEC BL JNZ cc 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ą bajt pamięci i wypełiającą go podaą wartością (pomoce przy rezerwacji pamięci) ORG ORG DB F DB F Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> Wstęp do iformatyki Cezary Bolek <cbolek@ki.ui.lodz.pl> 4
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>