Witaj szanowny Gościu na forum Odjechani.com.pl. Serdecznie zachęcamy do rejestracji. Tylko u nas tak przyjazna atmosfera. Kliknij tutaj, aby się zarejestrować i dołączyć do grona Odjechanych!

Strona odjechani.com.pl może przechowywać Twoje dane osobowe, które w niej zamieścisz po zarejestrowaniu konta. Odjechani.com.pl wykorzystuje również pliki cookies (ciasteczka), odwiedzając ją wyrażasz zgodę na ich wykorzystanie oraz rejestrując konto wyrażasz zgodę na przetwarzanie swoich danych osobowych w ramach funkcjonowania serwisu. Więcej informacji znajdziesz w naszej polityce prywatności. Pozdrawiamy!


[Poradnik] Łatwy i przyjemny sposób na naukę assemblera
#1
W tym poradniku opiszę łatwy i prosty sposób na naukę tego języka. Assembler jest postrzegany za trudny język, ponieważ trzeba świetnie wiedzieć jak działa procesor, w dodatku dla wielu osób nie jest przejrzysty tak jak języki wysokiego poziomu. Wielu osobom też trudno by było w nim napisać cały program robiący coś konkretnego, ale kto powiedział, że trzeba się go uczyć pisząc całe programy? Znając C/C++ można w prosty sposób nauczyć się assemblera pisząc w nim tylko pojedyncze elementy programu oraz obserwując jak działa zdekompilowany program napisany w kompilowanym języku wysokiego poziomu. Tylko jak pisać w assemblerze pojedyncze elementy programu w C/C++ i obserwować jak działa zdekompilowany program? Bardzo łatwo, używając tzw. wstawek w assemblerze oraz debugera. Jeśli chcemy zobaczyć jak wygląda pojedyncza funkcja programu w C/C++ w assemblerze ustawiamy breakpointa przed nagłówkiem funkcji, odpalamy debuger oraz wyświetlamy okno, które w przypadku środowiska CodeBlocks nazywa się "Disassembly".
[Obrazek: vQTk910.png]
Widać czarno na białym, jak w assemblerze zapisana jest pojedyncza instrukcja w C, świetnie widać jak funkcja korzysta ze stosu oraz jak w assemblerze wykonywane są obliczenia i jak jest zwracana wartość. Oczywiście należy się zaopatrzyć w materiał(y) do nauki assemblera, aby wiedzieć jakie zadanie pełni każda pojedyncza instrukcja, oraz aby potem samemu móc coś pisać w tym języku. Jeśli jednak chcemy sami napisać coś w assemblerze, możemy posłużyć się wstawkami w tym języku. Przykładowa wstawka znajduje się w 9 linii kodu, zastępuje ona instrukcję return. Ponieważ jak wiadomo wartość zwrotna funkcji, w tym funkcji main w procesorach x86 zapisywana jest do rejestru EAX. Ta wstawka umieszcza wartość 3 w tym rejestrze też przed wyjściem z maina i zakończeniem programu. Przechodząc do kolejnej instrukcji w naszym programie, możemy w oknie "Disassembly" zobaczyć naszą wstawkę. Zaznaczona ona jest żółtą strzałką i w oknie z kodem programu i w oknie "Disassembly".[Obrazek: cLSIyZy.png]To oczywiście banalny przykład, jak jest się bardziej zaawansowanym, można próbować pisać całe funkcje w assemblerze a ostatecznie nawet i programy(choć to rzadko jest praktykowane). Mam nadzieję, że po przerobieniu tego poradnika, assembler już nie będzie dla Was taki straszny ;)
  Odpowiedz


Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości