Sastavljanje - Množenje konstantom

Možete napraviti množenje pomoću multimedijskih uputa kao što su imul i mul u kodu asemblerskog jezika, kao Mul name_register. Procesor interno množi kodove za programiranje razdvajanjem parametara veličina, kao što su za eax, ax i al, a zatim pohranjuje rezultat u eax ili ax kao "low" i rezultira u edx ili dx kao "najznačajnijim", s rezultatom zadnje snimljeno, ako je višestruko veće od bajta.

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.

Prethodni Članak Sljedeći Članak

Top Savjeta