Files
nand2tetris/MARS/Simulationen/Simulation 02 Arithmetische Befehle mul, div/Simulation 02.asm
2025-03-26 09:10:55 +01:00

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