Wprowadzenie do języka Zgromadzenia

Original: http://www.swansontec.com/sprogram.html

Jest to krótkie wprowadzenie do języka asemblera. Asembler jest najbardziej podstawowym językiem programowania dostępne dla każdego procesora. Z asemblera, programator działa tylko z działania realizowane bezpośrednio na procesor fizyczny. Asemblera brakuje wysokiej klasy udogodnienia, takie jak zmiennych i funkcji, i to nie jest przenośne między różnymi rodzinami procesorów. Niemniej jednak, w asemblerze jest najpotężniejszym językiem programowania z komputera, i daje programistom wgląd wymagane napisać skuteczne kod w językach wysokiego poziomu. Nauki asemblera jest warte czasu i wysiłku każdego poważnego programisty.

Podstawy

Zanim będziemy mogli zbadać proces pisania programów komputerowych, musimy wrócić do podstaw i dowiedzieć się dokładnie, co komputer jest i jak to działa. Każdy komputer, bez względu na to, jak proste lub złożone, ma na swoim sercu dokładnie dwóch rzeczy: CPU i trochę pamięci. Razem te dwie rzeczy są tym, co umożliwi uruchamianie na komputerze programów.

Na najbardziej podstawowym poziomie, program komputerowy nie jest niczym więcej niż zbiorem numerów zapisanych w pamięci. Różne numery powiedzieć CPU robić różne rzeczy.Procesor odczytuje jeden numer na raz, dekoduje je i robi to, co mówią liczby. Na przykład, jeśli CPU odczytuje numer 64 jako część programu, to dodanie 1 do liczby w danym miejscu zwanym AX. Jeśli CPU odczytuje numer 146, to zamienić liczbę zapisaną w AX z numeru zapisanego w innym miejscu o nazwie BX. Poprzez połączenie wielu prostych operacji, takich to do programu, programista komputerowy może wykonywać wiele niesamowitych rzeczy.

Jako przykład, tutaj są numery prostego programu komputerowego: 184, 0, 184, 142, 216, 198, 6, 158, 15, 36, 205, 32. Jeśli było wpisać te numery do pamięci komputera i uruchomić je pod MS-DOS, to zobaczysz znak dolara umieszczony w prawym dolnym rogu ekranu, ponieważ to właśnie te liczby mówią komputer zrobić.

Zespół Język

Chociaż liczba powyższego programu, aby sens do komputera, oni są tak jasne jak słońce dla człowieka. Kto by pomyślał, że oni włożyli znak dolara na ekranie? Oczywiście, wprowadzania numerów ręcznie jest kiepska sposób napisać program.

Nie ma być w ten sposób, że.Dawno, dawno temu, ktoś wpadł na pomysł, że programy komputerowe mogą być napisane za pomocą słów, a nie liczb.Specjalny program o nazwie asembler będzie następnie słowa programisty i konwertować je do liczb, które komputer może zrozumieć. Ta nowa metoda, zwana pisania programów w asemblerze, zapisane programistów tysiące godzin, gdyż nie ma już patrzeć trudne do zapamiętania numery w grzbietach książek programowania, ale może zamiast używać prostych słów.

Program powyżej, napisany w asemblerze, wygląda to tak:

MOV AX, 47104
MOV DS, AX
MOV [3998], 36
INT 32
Gdy kompilator czyta ten przykładowy program, konwertuje każdy wiersz kodu w jednej instrukcji procesora poziomu. Program ten wykorzystuje dwa typy instrukcji, MOV i INT. Na procesorach Intela, instrukcja MOV przenosi dane wokół, a transfery instrukcji INT procesora do kontroli sterowników lub systemów operacyjnych.

Program nadal nie jest całkowicie jasny, ale jest o wiele łatwiejsze do zrozumienia niż to było dotychczas.Pierwsza instrukcja, MOV AX, 47104, mówi komputera, aby skopiować numer 47104 do AX lokalizacji.Następna instrukcja, MOV DS, AX, że komputer skopiować numer w AX do lokalizacji DS.Następna instrukcja, MOV [3998], 36 powoduje, że komputer umieścić numer 36 w ​​miejscu pamięci 3998. Wreszcie, INT 32 wychodzi z programu przez powrót do systemu operacyjnego.

Zanim przejdziemy dalej, chciałbym wyjaśnić, w jaki sposób działa ten program. Wewnątrz procesora jest liczba miejsc, zwany rejestr, który może zawierać numer telefonu. Niektóre, takie jak rejestry AX, są uniwersalne, i nic specjalnego nie robią. Inne rejestry, takie jak DS, kontrolować sposób działania procesora. DS okazuje się być rejestr segmentowy, i jest używany do piłki, który obszar pamięci CPU może napisać do. W naszym programie, możemy umieścić numer 47104 do DS, która mówi procesorowi dostęp do pamięci na karcie graficznej.Następną rzeczą, nasz program nie jest umieścić numer 36 na miejscu 3998 z pamięci karty graficznej. Od 36 jest kod na znaku dolara, a 3998 jest pamięć o prawym dolnym rogu ekranu pojawia się znak dolara na ekranie kilka mikrosekund później. Wreszcie, nasz program mówi CPU do wykonywania tego, co nazywa się przerwanie.Przerwanie jest używany do zatrzymania jednego programu i wykonać w innym miejscu. W naszym przypadku, chcemy przerwać 32, który kończy nasz program wraca do systemu MS-DOS, lub jakikolwiek inny program został użyty do uruchomienia naszego programu.

Uruchomienie programu

Idziemy dalej i uruchomić ten program. Po pierwsze, upewnij się, aby wydrukować te instrukcje się, ponieważ trzeba będzie odnieść się do nich, jak idziemy. Następnie kliknij na menu Start i uruchom program o nazwie MS-DOS. Powinien pojawić się czarny ekran z białym tekstem. Jesteśmy teraz w MS-DOS, sposób, w jaki komputery używane do być 20 lat temu. MS-DOS był przed dni myszy, więc należy wpisać komendy na klawiaturze komputera, aby robić rzeczy.

Po pierwsze, chcę, żebyś wpisz debug słowo i naciśnij klawisz Enter.Kursor powinien poruszać się w dół linii, i powinieneś zobaczyć Debug polecenia, które jest proste, kreska. Jesteśmy teraz w programie o nazwie Debug. Debug to potężne narzędzie, które pozwala na bezpośredni dostęp do rejestrów i pamięci komputera do różnych celów. W naszym przypadku, chcemy wprowadzić nasz program do pamięci i uruchomić go, więc użyjemy debugować za polecenie, do montażu. Śmiało i wpisz A100 teraz.Kursor przesunie się kolejną linię, a zobaczysz coś jak 1073: 0100. To jest miejsce w pamięci mamy zamiar wprowadzić instrukcje asemblerze na.Pierwsza cyfra jest segmentem, a druga liczba jest pamięć buforowa w segmencie. Program Debug prawdopodobnie wybrać inny segment do programu niż moje zrobił, więc nie martw się, jeśli jest inaczej. Inną rzeczą, aby pamiętać, jest to, że Debug rozumie tylko liczb szesnastkowych, które są rodzajem komputera skrót. Liczby szesnastkowe czasami zawierać litery oraz cyfry, a także, więc jeśli widzisz coś 63AF, nie martw się.

Idziemy dalej i wprowadzić nasz program teraz. Wpisz każde z instrukcjami poniżej w Debug dokładnie tak, jak pojawiają się one, i naciśnij enter po każdym z nich. Po wprowadzeniu ostatniej instrukcji, dwukrotnie naciśnij przycisk Enter, aby powiedzieć, że jesteśmy Debug zrobić wpisując instrukcje.

mov ax, B800
mov ds, ax
mov byte [0F9E], 24
int 20
Jak widać, mam wszystkie numery konwertowane na system szesnastkowy, i zrobił kilka innych zmian tak Debug może zrozumieć, co się dzieje. Jeśli pomylisz się podczas wprowadzania powyższy program, naciśnij dwukrotnie klawisz Enter, typu A100, i ponownie uruchomić instrukcje wprowadzania na początku programu.

Po wprowadzeniu do programu, można iść dalej i uruchomić go. Wystarczy wpisać g do przejść i naciśnij enter, kiedy jesteś gotowy, aby rozpocząć program. Powinieneś zobaczyć znak dolara w prawym dolnym rogu ekranu i Programu słowa zakończone normalnie. Słowa te są wprowadzane przez Debug, aby poinformować, że program zakończył się normalnie. Gratulacje! Po prostu weszła i uruchomić pierwszy program w języku asemblera!

Wróćmy do Windows teraz. Śmiało i wpisz q, aby wyjść z Debug. Teraz wpisz polecenie exit, aby wydostać się z MS-DOS. Teraz powinno być z powrotem w systemie Windows.

Dowiedzieć się więcej

Ten poradnik ledwie zarysowania powierzchni, jak działa język asemblera. Aby dowiedzieć się więcej na temat nowoczesnej biuletynie montażu, proponuję czytania tego kursu.

Comments are closed.