[AC2] Aula01
- Missing addicional exercises Signed-off-by: TiagoRG <tiago.rgarcia@ua.pt>
This commit is contained in:
parent
522ae1327c
commit
f57a8e1f6b
|
@ -0,0 +1,5 @@
|
||||||
|
# Arquitetura de Computadores 2
|
||||||
|
### Projetos + resoluções de exercícios organizados por aulas
|
||||||
|
|
||||||
|
---
|
||||||
|
*Pode conter erros, caso encontre algum, crie um* [*ticket*](https://github.com/TiagoRG/uaveiro-leci/issues/new)
|
Binary file not shown.
|
@ -0,0 +1,13 @@
|
||||||
|
.equ PRINT_STR, 8
|
||||||
|
|
||||||
|
.data
|
||||||
|
msg: .asciz "AC2 - Aulas praticas\n"
|
||||||
|
|
||||||
|
.text
|
||||||
|
.globl main
|
||||||
|
|
||||||
|
main: la $a0, msg
|
||||||
|
li $v0, PRINT_STR
|
||||||
|
syscall # printStr("AC2 - Aulas praticas\n");
|
||||||
|
li $v0, 0 # return 0;
|
||||||
|
jr $ra
|
|
@ -0,0 +1,35 @@
|
||||||
|
.equ GET_CHAR, 2
|
||||||
|
.equ PUT_CHAT, 3
|
||||||
|
.equ PRINT_INT, 6
|
||||||
|
.equ PRINT_STR, 8
|
||||||
|
.data
|
||||||
|
|
||||||
|
.text
|
||||||
|
.globl main
|
||||||
|
|
||||||
|
# Mapa de registos
|
||||||
|
# $t0: cnt
|
||||||
|
# $t1: c
|
||||||
|
|
||||||
|
main: li $t0, 0
|
||||||
|
|
||||||
|
do: # do {
|
||||||
|
li $v0, GET_CHAR
|
||||||
|
syscall
|
||||||
|
move $t1, $v0 # c = getChar();
|
||||||
|
|
||||||
|
li $v0, PUT_CHAT
|
||||||
|
addi $a0, $t1, 0
|
||||||
|
syscall # putChar(c);
|
||||||
|
|
||||||
|
addi $t0, 1 # cnt++;
|
||||||
|
|
||||||
|
bne $t1, '\n', do # } while (c != '\n');
|
||||||
|
|
||||||
|
fi: li $v0, PRINT_INT
|
||||||
|
move $a0, $t0
|
||||||
|
li $a1, 10
|
||||||
|
syscall
|
||||||
|
|
||||||
|
li $v0, 0
|
||||||
|
jr $ra
|
|
@ -0,0 +1,38 @@
|
||||||
|
.equ INKEY, 1
|
||||||
|
.equ GET_CHAR, 2
|
||||||
|
.equ PUT_CHAT, 3
|
||||||
|
.equ PRINT_INT, 6
|
||||||
|
.equ PRINT_STR, 8
|
||||||
|
.data
|
||||||
|
|
||||||
|
.text
|
||||||
|
.globl main
|
||||||
|
|
||||||
|
# Mapa de registos
|
||||||
|
# $t0: cnt
|
||||||
|
# $t1: c
|
||||||
|
|
||||||
|
main: li $t0, 0
|
||||||
|
|
||||||
|
do: # do {
|
||||||
|
li $v0, INKEY
|
||||||
|
syscall
|
||||||
|
move $t1, $v0 # c = inkey();
|
||||||
|
|
||||||
|
if: beq $t1, 0, fi # if (c != 0) {
|
||||||
|
move $a0, $t1 # putchar(c);
|
||||||
|
|
||||||
|
fi: li $v0, PUT_CHAT
|
||||||
|
syscall # getchar();
|
||||||
|
|
||||||
|
addi $t0, 1 # cnt++;
|
||||||
|
|
||||||
|
bne $t1, '\n', do # } while (c != '\n');
|
||||||
|
|
||||||
|
fi: li $v0, PRINT_INT
|
||||||
|
move $a0, $t0
|
||||||
|
li $a1, 10
|
||||||
|
syscall
|
||||||
|
|
||||||
|
li $v0, 0
|
||||||
|
jr $ra
|
|
@ -0,0 +1,75 @@
|
||||||
|
.equ GET_CHAR, 2
|
||||||
|
.equ PUT_CHAT, 3
|
||||||
|
.equ READ_INT10, 5
|
||||||
|
.equ PRINT_INT, 6
|
||||||
|
.equ PRINT_INT10, 7
|
||||||
|
.equ PRINT_STR, 8
|
||||||
|
.data
|
||||||
|
|
||||||
|
input: .asciiz "\nIntroduza um inteiro (sinal e modulo): "
|
||||||
|
out_10: .asciiz "\nValor em base 10 (signed): "
|
||||||
|
out_2: .asciiz "\nValor em base 2: "
|
||||||
|
out_16: .asciiz "\nValor em base 16: "
|
||||||
|
out_u10:
|
||||||
|
.asciiz "\nValor em base 10 (unsigned): "
|
||||||
|
out_u10f:
|
||||||
|
.asciiz "\nValor em base 10 (unsigned), formatado: "
|
||||||
|
|
||||||
|
.text
|
||||||
|
.globl main
|
||||||
|
|
||||||
|
main: la $a0, input
|
||||||
|
li $v0, PRINT_STR
|
||||||
|
syscall # printStr(input);
|
||||||
|
|
||||||
|
li $v0, READ_INT10
|
||||||
|
syscall
|
||||||
|
move $t0, $v0 # value = readInt10();
|
||||||
|
|
||||||
|
la $a0, out_10
|
||||||
|
li $v0, PRINT_STR
|
||||||
|
syscall # printStr(10 signed);
|
||||||
|
|
||||||
|
move $a0, $t0
|
||||||
|
li $v0, PRINT_INT10
|
||||||
|
syscall # printInt10(value);
|
||||||
|
|
||||||
|
la $a0, out_10
|
||||||
|
li $v0, PRINT_STR
|
||||||
|
syscall # printStr(2);
|
||||||
|
|
||||||
|
move $a0, $t0
|
||||||
|
li $a1, 2
|
||||||
|
li $v0, PRINT_INT
|
||||||
|
syscall # printInt(value, 2);
|
||||||
|
|
||||||
|
la $a0, out_10
|
||||||
|
li $v0, PRINT_STR
|
||||||
|
syscall # printStr(16);
|
||||||
|
|
||||||
|
move $a0, $t0
|
||||||
|
li $a1, 16
|
||||||
|
li $v0, PRINT_INT
|
||||||
|
syscall # printInt(value, 16);
|
||||||
|
|
||||||
|
la $a0, out_10
|
||||||
|
li $v0, PRINT_STR
|
||||||
|
syscall # printStr(10 unsigned);
|
||||||
|
|
||||||
|
move $a0, $t0
|
||||||
|
li $a1, 10
|
||||||
|
li $v0, PRINT_INT
|
||||||
|
syscall # printInt(value, 10);
|
||||||
|
|
||||||
|
la $a0, out_u10f
|
||||||
|
li $v0, PRINT_STR
|
||||||
|
syscall # printStr(10 unsigned, formatado);
|
||||||
|
|
||||||
|
move $a0, $t0
|
||||||
|
li $a1, 5
|
||||||
|
sll $a1, $a1, 16
|
||||||
|
ori $a1, $a1, 5
|
||||||
|
li $v0, PRINT_INT
|
||||||
|
syscall # printInt(value, 10 | 5 << 16);
|
||||||
|
|
||||||
|
j main
|
Loading…
Reference in New Issue