1
0

feat: Initial commit

This commit is contained in:
2024-03-22 13:53:19 +01:00
parent 44aa2938a2
commit 2a54d9dbc2
34 changed files with 1475 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
.data
var: .word 0x3FFFFFF0
.text
.globl main
.ent main
main:
lw $t1, var
add $t1, $t1, $t1
move $a0, $t1
li $v0, 1
syscall
addi $t2, $t1, 40
move $a0, $t2
li $v0, 1
syscall
li $t2, 40
add $t2, $t1, $t1
move $a0, $t2
li $v0, 1
syscall
li $v0, 10
syscall

View File

@@ -0,0 +1,28 @@
.data
formula: .asciiz "Overflow\n"
res: .word 1
.text
.globl main
.ent main
main:
li $v0, 5
syscall
move $t1, $v0
li $v0, 5
syscall
move $t2, $v0
addu $t1, $t1, $t2
slt $t2, $t1, 0
beq $t2, $0, fine
la $a0, formula
li $v0, 4
syscall
fine:
li $v0, 10
syscall
.end main

View File

@@ -0,0 +1,64 @@
.data
wVet: .space 50
wRes: .space 1
charact: .byte 'a'
mex_prompt: .asciiz "Inserire caratteri\n"
mex_occ: .asciiz "Occorrenze: "
.text
.globl main
.ent main
main:
la $t0, wVet # punta a inizio vettore
li $t1, 0 # inizializzo contatore
# stampo primo messaggi
la $a0, mex_prompt
li $v0, 4 # id della syscall print_str
syscall
# lettura stringa. a quanto pare posso solo fare una read_chr
ciclo_read:
# syscall read
li $v0, 12
syscall # il risultato è in v0
sb $v0, ($t0)
add $t0, $t0, 1 # incremento puntatore
beq $v0, '\n', fine_lettura # smetto di saltare quando ho raggiunto un newline
add $t1, $t1, 1 # incremento contatore (sapendo che non è un \n)
beq $t1, 50, fine_lettura # controllo di non uscire dal buffer
b ciclo_read
fine_lettura:
move $t5, $t1 # salvo in $t5 la lunghezza della stringa
# resetto puntatore
la $t0, wVet # punta a inizio vettore
add $t1, $t0, $t5 # indirizzo finale
lb $t2, charact
move $t4, $0
conta_occorrenze:
lb $t3, ($t0)
bne $t3, $t2, prox_chr # salto se non è un minimo
addi $t4, $t4, 1 # memorizzo il nuovo minimo
prox_chr:
add $t0, $t0, 1 # incremento puntatore
bne $t0, $t1, conta_occorrenze # smetto di saltare quando ho iterato su tutti i caratteri
# stampo ultimo messaggio
la $a0, mex_occ
li $v0, 4 # id della syscall print_str
syscall
move $a0, $t4
li $v0, 1
syscall
fine:
li $v0, 10
syscall
.end main