-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbase 01.asm
84 lines (63 loc) · 1.81 KB
/
base 01.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
.text
main: lui $8, 0x1001
addi $9, $0, 512
ori $5, $0, 0xffff # $5 <= 0x0000ffff
sll $5, $5, 8 # $5 <= 0x00ffff00
for1: beq $9, $0, fimScr
addi $2, $0, 42 #pausa para simular atraso entao fica mais perceptível o preenchimento gradativo da tela
syscall
sw $4, 0($8) #posição inicial do pixel a ser pintado
sw $4, 2048($8) #Desenha um pixel na linha seguinte do display
addi $8, $8, 4 #Avança para o próximo pixel horizontalmente
addi $9, $9, -1 #Decrementa o contador de pixels
j for1
fimScr:
lui $8, 0x1001
ori $20, 0xffffff
addi $10, $0, 512
lui $21, 0xffff
addi $25, $0, 32
addi $10, $0, 4
addi $11, $0, 'a'
addi $12, $0, 'd'
addi $13, $0, 's'
addi $14, $0, 'w'
for2:
sw $20, 0($8)
jal timer
lw $9, 2048($8)
sw $9, 0($8)
add $8, $8, $10
lw $22, 0($21)
beq $22, $0, cont
lw $23, 4($21)
beq $23, $25, fim
beq $23, $11, esq
beq $23, $12, dir
beq $23, $13, baixo
beq $23, $14, cima
j cont
esq: addi $10, $0, -4
j cont
dir: addi $10, $0, 4
j cont
baixo: addi $10, $0, +128
j cont
cima: addi $10, $0, -128
j cont
cont: j for2
fim: addi $2, $0, 10
syscall
#====================================================================
# função Timer
timer: sw $16, 0($29)
addi $29, $29, -4
addi $16, $0, 100000
forT: beq $16, $0, fimT
nop
nop
addi $16, $16, -1
j forT
fimT: addi $29, $29, 4
lw $16, 0($29)
jr $31