Struktura assemblerowego programu Praktycznie każdy język ma swoja własną, niepowtarzalna strukturę. Tak jest także z Assemblerem. To właśnie jest w nim proste. W Assemblerze każde nowe polecenie zaczyna się od nowej linijki, wiec nie ma potrzeby oddzielania ich średnikami. Po prostu piszesz je jedno pod drugim. Gdybyś chciał jednak napisać wszystko w jednej linijce to bez średników się jednak nie obejdziesz. Etykiety Assemblerowe oznacza się tak samo jak w Pascalu, czyli Etykieta:. Jeśli jednak nie chcesz ich deklarować przed rozpoczęciem programu (tak jak się to robi w Pascalu) to po prostu przed jej nazwa dodaj @(małpka):
Polecenie; Polecenie Polecenie Polecenie jmp @Etykieta Polecenie {To nie zostanie wykonane} @Etykieta:
I tak oto poznajemy pierwsze polecenie :-) jmp Etykieta. Zastępuje ono polecenie goto Etykieta używane w Pascalu. Aby umieścić wstawkę assemblerowa w programie użyj słów kluczowych: Asm .. End;, gdzie w miejscu kropek powinieneś wstawić kod Asemblera. Załóżmy, że chciałbyś zrobić \'wirusa\', który będzie zawieszał komputer. Jako, że kod musi być czytelny ;-) kod zawieszający postanowiłbyś zrobić w osobnej procedurze. Mógłbyś zrobić to tak:
1 2 3 4 5 6
| procedure zawies; label e; begin e: goto e; end; |
Ale jako, że chcesz się czegoś nauczyć (oraz ma to wyglądać profesjonalnie ;-) powinieneś to napisać w asemblerze:
1 2 3 4 5 6 7
| procedure zawies_2; begin asm @e: jmp @e end; end; |
Nawet prościej wygląda :-) Razi w oczy jeszcze jedna rzecz. Dwa endy pod rząd? Po co dawać begin, skoro piszemy tylko w asemblerze? Otóż nie trzeba! Jeśli całą procedurę piszesz w Assemblerze to możesz sobie spokojnie begina i enda odpuścić. Powiedz tylko o tym kompilatorowi pisząc po nazwie procedury słowo kluczowe Assembler;:
1 2 3 4 5
| Procedure zawies_3;Assembler; asm @e: jmp @e end; |
Poza czytelnością to rozwiązanie ma jeszcze jedną zaletę - jest szybkie. Gdy piszesz procedurę tak jak zawies_2; to bez twojej wiedzy/zgody kompilator umieszcza na jej początku i końcu najróżniejsze \'udziwniacze\' w formie komend assemblerowych, których oczywiście nie widzisz, lecz odczuwasz, gdyż spowalniają działanie całego programu. Gdy napiszesz procedurę tak jak zawies_3 to dasz kompilatorowi znak, żeby nie wcinał się w nie swoje sprawy i dorzucił jedynie absolutnie niezbędne polecenia. Zyskasz wiec na przejrzystości i prędkości kodu. Prawda, ze ten Asembler jest prosty? Mam nadzieje, ze go zrozumiałeś, bo jeśli nie to powtórz wszystko, bo inaczej w życiu nie zrozumiesz kolejnych lekcji.
|