Funkcja wykonuje działanie mnożenia na dwóch liczbach 32 bitowych w formacie int32 (od −2 147 483 648 — +2 147 483 647). Znak liczby umieszczony jest w najstarszym bicie liczby. Otrzymany wynik jest w postaci 32 bitowej zapisany na Out_Lo i Out_Hi. Najbardziej znaczący bit Out_Hi odpowiada za znak liczby. Podczas wykonywania operacji mnożenia należy pamiętać o ograniczeniu wyjścia 32 bitowego – jeśli wartość wyjściowa przekroczy próg 2 147 483 648 lub −2 147 483 648, w obu przypadkach wyjście Out_Ovf zostanie ustawione w stan wysoki, w przy przekroczeniu wartości, na najstarszy bit może zostać przeniesiona wartość 1, co może spowodować zmianę znaku liczby,
In1_Lo | In1_Hi | In1 (32 bit) | In2_Lo | In2_Hi | In2 (32 bit) | Out_Lo | Out_Hi | Out (32 bit) | Out_Ovf |
---|---|---|---|---|---|---|---|---|---|
8 | 0 | 8 | 8 | 0 | 8 | 64 | 0 | 8 | 0 |
8 | 0 | 8 | 10000 | 0 | 1000 | 14464 | 1 | 80000 | 0 |
8000 | 0 | 8000 | 10000 | 0 | 10000 | -19456 | 1220 | 80 000 000 | 0 |
-15536 | 0 | 50000 | -15536 | 0 | 50000 | -1792 | -27390 | 2 500 000 000 | 1 |