Sastavljanje - Množenje konstantom
Kao što su multimedijske datoteke ogromne u memoriji, možda ćete morati pomaknuti vrijednosti u eaxu kako bi se pomnožile na registru, a rezultat registra mora biti eax, s prethodnom prepisanom vrijednosti. Ipak, ako trebate pomnožiti registar s konstantom, stavite rezultat u registar, a zatim upotrijebite prečac s uputama "lea".
Kratki uvod
Jezici skupštine su jezici niskih razina za programiranje računala i prvi su razvijeni 1950-ih. Oni su uglavnom poznati kao drugi generacijski programski jezici. Važna značajka asemblerskog jezika je u tome što su eliminirali mnoge radnje koje su bile sklon pogreškama i oduzimale puno vremena potrebnih za programiranje prve generacije.
Množenje u montaži
U skupštini možete pomnožiti dva broja koristeći upute mul (nepotpisani brojevi) i Imul. Koriste se kako slijedi:
mul name_registry
Procesor povećava sadržaj eax ili ax ili al (ovisno o veličini registra, koji je naveden u parametrima) i zatim pohranjuje rezultat u eax, ax, edx ili dx.
Korištenje mul je prilično zabrinjavajuće, jer ćete morati premjestiti pomnoženu vrijednost na eax, vrijednost za množenje na drugi registar i registra drži rezultat mora biti eax.
Međutim, ako samo želite umnožiti registar konstantom i staviti rezultat u registar po vašem izboru, možete koristiti prečac s uputama "lea" (učitavanje efektivne adrese). Ova se naredba koristi za dohvaćanje adrese podataka u memoriji.
lea destination_registry, [memory_address]; stavite adresu memorije u odredišnu_regiju
Velika prednost toga je što, pomoću konstante, ne morate trošiti dodatnu memorijsku adresu. Zamislite da želite pomnožiti ecx sa 7 i spremiti rezultat u ebx, naredba bi bila:
lea ebx, [ecx * 7]
Napomena: ne možete pomnožiti dva registra zajedno pomoću ovog prečaca.