summaryrefslogtreecommitdiff
path: root/app/descifrador.s
blob: ad9ff615d549e3b4972925e7287bc918eedad656 (plain)
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
.global reset
reset:

.equ START_BUTTON, 0x30050000 @Cambiar a dirección de memoria del botón
.equ KEY_SWITCHES, 0x30060000 @Cambiar a dirección de memoria de los switches

@Copiar buffer a VRAM (?)
	@ Esto es para guardar en memoria cada pixel
	@ en este caso se guarda un valor de 0xCA por ejemplo desde la posicion 0x100
	@ dos veces, hasta la 0x104 por ejemplo
	mov	r1, #0x100 
	mov	r2, #0xCA 
	mov	r7, #0x0
	
load:
	str	r2, [r1] 
	add	r1, r1, #4
	add	r7, r7, #1
	cmp	r7, #2
	bne	load

@Esperar botón
	ldr r2, =START_BUTTON
	ldr r3, =KEY_SWITCHES
	
@Prueba: poner botón de start en 1
	mov r9, #0x30050000
	mov r5, #1
	str r5, [r9]
@Prueba: poner switches en 1010
	mov r9, #0x30060000
	mov r5, #0b1011
	str r5, [r9]
	
idle:
	ldr r5, [r2] @Leer valor del botón
	ldr r6, [r3] @Leer valores de los switches 
	cmp r5, #1
	beq start
	b	idle


start:
	@Verificar el algoritmo seleccionado
	ldr r6, [r3]
	and r6, r6, #1
	cmp r6, #1
	beq not
	cmp r6, #0
	beq	xor
	
@Reiniciar contador y posicion de memoria	
	mov	r1, #0x100
	mov	r7, #0x0

@Recorrer la memoria desde #0x100 y hacer not al valor en cada posicion
@ y volverlo a guardar
not:
	ldr	r4, [r1]
	mvn	r4, r4
	str	r4, [r1] 	@Se vuelve a guardar en memoria ya modificado
	add	r1, r1, #4
	add	r7, r7, #1
	cmp	r7, #1000
	bne	not
	b	halt
		
xor:
	ldr	r4, [r1]
	ldr r6, [r3]
	lsr r6, r6, #1
	eor	r4, r4, r6
	str	r4, [r4] 	@Se vuelve a guardar en memoria ya modificado
	add	r1, r1, #4
	add	r7, r7, #1
	cmp	r7, #1000
	bne	xor
	b	halt

halt:
	b halt