skip to Main Content
R1 Disasm

Kod mnożący dwie liczby w asemblerze bez używania MUL

Mnożenie w asemblerze można wykonać za pomocą instrukcji MUL, jednak zadanie na Architekturze Systemów Komputerowych, brzmiało:

Dany jest 8-bitowe ‘a’ i ‘b’, a wynik to 16 bitowy zapis w zmiennej ‘wynik’ . Proszę wykonać operację mnożenia.

Zanim przejdę do kodu i jego omawiania trzeba poznać trochę logiki, która ‚stoi’ za algorytmem.
Algorytm rozkłada liczbę b na sumę potęg dwójki wykonuje mnożenie a potem sumuje wyniki mnożenia.

Ale przecież nadal mamy mnożenie liczb ze sobą! Tak to prawda, ale do mnożenia liczb które są potęgami dwójki nie musimy korzystać z instrukcji MUL a za pomocą przesunięć bitowych w prawo SHR i lewo SHL

Zakładając że liczba b wynosi 10 to wtedy algorytm by tak ‚pracował’

Kod z komentarzami:

Paweł Sołtysiak

Programista, domowy kucharz i "amator amerykańskiej polityki".
Zbieram informacje z całej sieci, po odrzuceniu chwastów i dodaniu swojej opinii publikuje na blogu.

  • Anonymous

    Aczkolwiek…

  • Anonymous

    Pozdro!
    #FAZA_Team #jebac #assemblera == #jbc_asm

Back To Top