Dokumente und Mars-Simulator
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
########################################################################
|
||||
##### 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 #
|
||||
##########################################################################
|
||||
Reference in New Issue
Block a user