Adjunto 'separa_ex1.s'
Descargar 1 .text
2 .arm
3 .global _start
4 _start:
5 b reset
6 b loop
7 b loop
8 b loop
9 b loop
10 nop
11 b loop
12 b loop
13
14 /* ==============================
15 * TEST CODE
16 * ==============================
17 */
18 reset: ldr sp,=STACK
19 ldr r3,=VECTORES
20 ldr r2,=CADENA
21
22 otrapalabra:
23 mov r4,#0
24 mov r1,r2 @ puntero a la primera letra
25 otro: ldrb r0,[r2],#1 @ buscar palabra
26 cmp r0,#' '
27 beq finpal
28 cmp r0,#0
29 beq finpal
30 add r4,#1 @ contar letras
31 b otro
32 finpal:
33 cmp r4,#0
34 beq continuar
35 cmp r4,#3 @ calcula vector a guardar según el largo de la palabra
36 movlo r4,#3 @ para las menores a 3 letras la deja como 3
37 cmp r4,#12
38 movhi r4,#12 @ y para las mayores a 12 las deja como 12
39 sub r4,#3 @ restando 3 al resultado queda todo comprendido entre 0 y 9 donde este valor indica el vector a usar
40 mov r5,#40
41 mul r4,r5 @ se multiplica por 40 para calcular la posicion dentro del vector general
42 mov r5,#10
43 otrolugar:
44 ldr r6,[r3,r4] @ busco un lugar vacio
45 cmp r6,#0
46 beq grabar
47 add r4,#4
48 subs r5,#1
49 bne otrolugar
50
51 b continuar
52 grabar:
53 str r1,[r3,r4] @ se graba el puntero de la primer letra en el lugar vacio
54 mov r5,#0
55 strb r5,[r2,#-1] @ y un nulo en el espacio siguiente a la última letra
56
57 continuar:
58 cmp r0,#0
59 bne otrapalabra
60
61 loop: b loop
62
63 CADENA: .ascii "hola es la mundo palabra varios"
64 .balign 4
65 @ se utiliza un solo vector de 10 * 10, formado por 10 filas de 10 elementos, cada fila representa un vector
66 VECTORES:
67 .rept 10
68 .word 0,0,0,0,0,0,0,0,0,0
69 .endr
70
71 .space(200)
72 STACK:
73
74 .end
Archivos adjuntos
Para referirse a los adjuntos de una página, usa attachment:nombredelarchivo, como se muestra abajo en la lista de archivos. NO uses la URL del enlace [get], ya que puede cambiar fácilmente y dejar de funcionar.No tienes permisos para adjuntar un archivo a esta página.