Files
nand2tetris/MARS/Simulationen/Simulation 04 Schleife mit Verwendung von slt/Simulation 04.asm
2025-03-26 09:10:55 +01:00

32 lines
1.4 KiB
NASM

########################################################################
##### Folgender High-Level Code wird in Assembler umgesetzt: #####
##### int sum = 0; #####
##### for (i = 1; i < 101; i = i*2) #####
##### sum = sum + i; #####
########################################################################
##### addiert die Vielfachen von 2 von 1 bis 100, zeigt die #####
##### Verwendung der 'set less than' Anweisung slt #####
########################################################################
addi $s1, $zero, 0 # Initialisierung der Summe sum in $s1 mit 0
addi $s0, $zero, 1 # Initialisierung des Zaehlers i in $s0 mit 1
addi $t0, $0, 101 # Obergrenze 101
loop:
slt $t1, $s0, $t0 # if (i<101) $t1 = 1, else $t1 = 0
beq $t1, $zero, done # if $t1 == 0 (i >=101), spring zur Marke done
add $s1, $s1, $s0 # sum = sum + i
sll $s0, $s0, 1 # i = i * 2
j loop # Sprung zu loop
done:
li $v0, 10 # Der Wert 10 fuer den syscall bedeutet:
syscall # terminate execution
##########################################################################
# Dieses Beispiel fuer eine Schleife, die slt nutzt, entstammt dem Buch: #
# Harris & Harris: Digital Design and Computer Architecture, Kap. 6 #
##########################################################################