Montáž - Násobenie konštantou

Multiplikáciu môžete vykonať pomocou multimediálnych inštrukcií, ako je imul a mul v kóde jazyka zostavy, ako Mul name_register. Procesor interne vynásobí programové kódy tým, že oddelí parametre veľkostí, napríklad pre eax, ax a al, a potom výsledok uloží do eax alebo ax ako "low" a výsledky v edx alebo dx ako "najvýznamnejšie", s výsledkom posledný zaznamenaný súbor, ak je násobok väčší ako bajt.

Keďže multimediálne súbory sú obrovské v pamäti, možno budete musieť posunúť hodnoty v eax, aby sa mohli vynásobiť v registri, a výsledok registra musí byť eax, pričom predchádzajúca hodnota sa prepíše. Ak však potrebujete násobiť register konštantou, vložte výsledok do registra a potom použite skratku s inštrukciou "lea".

Krátky úvod

Jazyky montáže sú jazyky na nízkej úrovni pre programovacie počítače a boli prvýkrát vyvinuté v 50. rokoch. Väčšinou sú známe ako programovacie jazyky druhej generácie. Dôležitou črtou jazyka zhromaždenia je, že eliminovali väčšinu operácií náchylných na chyby a časovo náročných operácií vyžadovaných v programovaní prvej generácie.

Násobenie pri montáži

V zostave môžete násobiť dve čísla pomocou inštrukcií mul (unsigned numbers) a Imul. Používajú sa takto:

 mul name_registry 

Procesor zvyšuje obsah eax alebo ax alebo al (v závislosti od veľkosti registra, ktorý je uvedený v parametroch) a potom výsledok uloží do eax, ax, edx alebo dx.

Použitie mul je dosť nepríjemné, pretože budete musieť presunúť vynásobenú hodnotu na eax, hodnota vynásobiť do iného registra a registra drží výsledok musí byť eax.

Ak však chcete násobiť register konštantou a dať výsledok do registra podľa vlastného výberu, môžete použiť klávesovú skratku s pokynom „lea“ (načítať efektívnu adresu). Táto inštrukcia sa používa na získanie adresy dát v pamäti.

 lea destination_registry, [memory_address]; miesto memory_address v destination_registry 

Veľkou výhodou je, že použitím konštanty nemusíte používať extra pamäťovú adresu. Predstavte si, že chcete násobiť ecx o 7 a výsledok uložiť do ebx, príkaz bude:

 lea ebx, [ecx * 7] 

Poznámka: Pomocou tohto odkazu nemôžete násobiť dva registre spoločne.

Predchádzajúci Článok Nasledujúci Článok

Najlepšie Tipy