feat: Initial commit
This commit is contained in:
23
Laboratorio3/Esercizio1.asm
Normal file
23
Laboratorio3/Esercizio1.asm
Normal 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
|
||||
28
Laboratorio3/Esercizio2.asm
Normal file
28
Laboratorio3/Esercizio2.asm
Normal 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
|
||||
64
Laboratorio3/Esercizio5.asm
Normal file
64
Laboratorio3/Esercizio5.asm
Normal 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
|
||||
Reference in New Issue
Block a user