---
# System prepended metadata

title: Blatt03

---

# Blatt03

## Gruppe 1
**Felix Eschey, Hannes Bruger, Dominik Süsser**

## Aufgabe 1

```
		.data
Zeichenkette: 	.asciiz "Informatik macht Spass."
		.align	2
		.space	4
Laenge:		.space 	4

		.text
main:
		add t1, zero, Zeichenkette
		add t3, zero, zero
		nop
Loop:		lb  t2, 0(t1)
		nop
		nop
		beq t2, zero, Finish
		nop
		nop
		nop
		add t3, t3, 1
		add t1, t1, 1
		j Loop
		nop

Finish:		sw t3, Laenge(zero)
		add a0, zero, 0
		add a7, zero, 93
		scall
```


## Aufgabe 2

```
	.data 0x300

in:	.word 0x5
out:	.space 4

	.text
main:

	lw t1, in(zero) # Load Byte from in and save it to t1
	add t2, t1, zero
loop:	
	add t3, t2, t3
	add t1, t1, -1
	bne t1, zero, loop

	sw t3, out(zero) # Write into 0x304

#End
	add a0, zero, a0
	add a7, zero, 93
	scall
```

## Aufgabe 3

```
	.data 0x200
Input:	.space 100


	.text
	
main:
	add t3, zero, 97 # = 'a'
	add t4, zero, 123 # = 'z'+1
	add t2, t2, -1	 # t2 = -1. Da loop mit +1 beginnt und zu beginn t2 = 0 sein muss
	
	
	add a0, zero, 0   	#stdin
	add a1, zero, Input	#speicheradresse
	add a2, zero, 100	#laenge
	add a7, zero, 63	#read
	scall
	
	
loop:	
	add t2, t2, 1	 #Zaehlvariable die Adresszugriff bei LoadByte verschiebt
	lb t1, Input(t2) # Load Byte
	beq t1, zero, End
	bgeu t1, t4, loop # Jump to loop if loaded byte >= 'z'
	bltu t1, t3, loop # Jump to loop if loaded byte < 'a'
	add t1, t1, -32	# Convert to uppercase
	sb t1, Input(t2) # write back to memory
	j loop

#End

End:
	add a0, zero, 1		#stout
	add a1, zero, Input	#Speicheradresse
	add a2, zero, t2	#Laenge. Hier ist es = Anzahl der verschiebungen
	add a7, zero, 64	#write
	scall
	

	add a0, zero, 0
	add a7, zero, 93
	scall
	


```



## Aufgabe 4 a

![](https://i.imgur.com/qs2buIV.jpg)






## Aufgabe 4 b/c

```

	.text

main:
	mul t3, t1, t3
	nop
	nop
	add t2, t2, t3
	mul t1, t1, t1
	nop
	nop
	mul t4, t4, t1
	nop
	nop
	add t2, t2, t4


Optimierung:

	mul t3, t1, t3
	mul t1, t1, t1
	nop
	add t2 , t2 , t3
	mul t4, t4, t1
	nop
	nop
	add t2, t2, t4
```

