.text
.globl main
main:
ori $9, $0, 0 # base register
ori $10, $0, 0 # register dat char vasthoudt
ori $11, $0, 0 # controle var
ori $12, $0, 0 # controle var
ori $13, $0, 0x20 # spatie
ori $14, $0, 0x20 # 20 lager, wordt het hoofdletter
lui $9, 0x1000
spatievreter:
lbu $10, 0x00($9) # eerste character
sll $0, $0, 0
beq $10, $0, finished # nul character, dus klaar...
sll $0, $0, 0
sltiu $11, $10, 0x61 # als $10 kleiner is dan 61 is het true
bne $11, $0, nextchar # naar volgende char kijken...
sll $0, $0, 0
sltiu $12, $10, 0x7B # als $10 kleiner 0x7B dan is het true
bne $11, $0, nextchar # naar volgende char kijken
sll $0, $0, 0
# naar volgende char kijken, om te weten of het een spatie is...
or $5, $0, $9
addiu $5, $5, 0x01 # wijst nu naar volgende byte.
lbu $15, 0x00($5)
sll $0, $0, 0
beq $15, $13, touppercase
sll $0, $0, 0
# zo niet, dan naar volgende character...
j nextchar
sll $0, $0, 0
nextchar:
addiu $9, $9, 0x01 # verhoog pointer
j spatievreter
sll $0, $0, 0
touppercase:
sub $10, $10, $14 # - 20, zodat het hoofdletter wordt
sb $10, 0x00($9)
j nextchar
sll $0, $0, 0
finished:
sll $0, $0, 0
.data
string: .asciiz "o t"