CPU poseduje mogućnost manipulacije vrednostima iz registara, tako da bismo dodali 10 na vrednost registra eax, trebalo bi napisati sledeći heksadecimalni operativni kod:
05/0a/00/00/00
Ovo je tzv. mašinski kod, kod koga za svaku ugrađenu funkciju u CPU-u imamo određeni broj (šifru za poziv). Kao što vidite, pisanje programa u mašinskom kodu je jako naporno (dosadno), a otklanjanje bug-ova je još teže. Asemblerski jezik nam dopušta snagu mašinskog jezika na lakši način, a sam posao prevođenja (konvertovanja) u mašinski kod upravo vrši asembler. U Delphi je ugrađen Borland-ov Turbo Assembler i ponekad je pravo zadovoljstvo koristiti ga. Ako se sada ponovo vratimo na dodavanje 10 registru eax, odgovarajuća asemblerska instrukcija bi izgledala ovako:
add eax,10 {a := a + 10}
Slično ovome, oduzimanje vrednosti ebx od eax bi bilo:
sub eax,ebx {a := a – b }
Da bismo privremeno sačuvali dobijenu vrednost, premestićemo je u drugi registar,
mov eax,ecx {a := c }
ili, još bolje, sačuvaćemo datu vrednost u nekoj od memorijskih adresa:
mov [1235],eax {smestanje vrednosti registra eax na adresu 1235}
Naravno, moguće je kretanje vrednosti i u obrnutom smeru:
mov eax,[1235]
Kada vršite transfer u memorijski prostor, na umu uvek treba da vam bude veličina vrednosti koja se prebacuje. U našem primeru, imali smo instrukciju mov [1235], eax koja rezultira ne samo zauzećem memorijske adrese 1235, nego i 1236, 1237 i 1238, pošto premeštate 32-bitnu vrednost, tj. vrednost od 4 bajta. Memorijski prostor uvek adresiramo u bajtovima.
Pratite Krstaricu na www.krstarica.com