30 lines
1.1 KiB
NASM
30 lines
1.1 KiB
NASM
###############################################################################
|
|
# Multipliziert zwei Integerzahlen, zeigt die Verwendung der Register hi, lo #
|
|
# die benoetigt werden, weil das Produkt von 32-Bit-Zahlen bis zu 64-Bit lang #
|
|
# wird. Bei der Division wird der Quotient in lo und der Rest in hi abgelegt #
|
|
###############################################################################
|
|
|
|
.data
|
|
number1: .word 0x0fffffff
|
|
number2: .word 0x12345678
|
|
number3: .word 0x01234567
|
|
.text
|
|
# Laden der Beispielzahlen in t0, t1, t2
|
|
lw $t0, number1
|
|
lw $t1, number2
|
|
lw $t2, number3
|
|
|
|
# Multiplikation
|
|
mul $t3, $t0, $t1 # Die unteren 32 Bits des Produkts werden in $t3 abgelegt
|
|
mfhi $s0 # Um auf die oberen 32 Bits zugreifen zu können, wird mfhi benötigt
|
|
mflo $s1 # Fuer den Zugriff auf die unteren 32 Bits des Produkts wird mflo verwendet
|
|
|
|
# Division $t0 durch $t1
|
|
div $t0, $t2 # speichert den Quotienten in lo und den rest in hi
|
|
mfhi $s2 # holt den Rest der Division aus hi und legt ihn in $s2 ab
|
|
mflo $s3 # holt den Quotienten aus lo und legt ihn in $s3 ab
|
|
|
|
# exit
|
|
li $v0, 10
|
|
syscall
|