Bienvenido: Ingresar
location: attachment:anumero2_ex1.s de WebHome/TrabajosPracticos/PracticoASM4

Adjunto 'anumero2_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 *  Programa principal
  16 *  ==============================
  17 */
  18 reset:  ldr sp,=STACK 
  19         ldr r1,TAMANIO
  20         ldr r2,=VECTOR
  21         ldr r3,=NUMEROS
  22 
  23 otro:   ldr r0,[r2],#4        @ bucle que carga el puntero a la cadena 
  24         bl anumero            @ pasa cadena a numero 
  25         str r0,[r3],#4        @ guarda el resultado
  26         subs r1,#1
  27         bne otro
  28 loop:   b loop
  29 
  30 /* Funcion de pase a numero
  31 *  Transforma una cadena en ascii a un numero.
  32 *  Esta cadena posee las siguientes características:
  33 *  *  El número en la cadena se encuentra en base 16
  34 *  *  La cadena se supone que solo posee dígitos hexadecimales, donde las letras se encuentran en mayúsculas, puntos de
  35 *  *  El único signo posible es un '-' y como primer byte, indicando que el número es negativo, si este signo no existe el número es positivo. 
  36 *  Entrada
  37 *  Dirección de la cadena en r0
  38 *  Salida 
  39 *  Numero resultante en r0
  40 */
  41 
  42 
  43 anumero:
  44         push {r1-r6}
  45         mov r4,#0
  46         ldrb r1,[r0]            @ si el primer caracter es '-' se activa la bandera de signo a 1 (r4)
  47         cmp r1,#'-'   
  48         moveq r4,#1
  49         addeq r0,#1             @ si es negativo desplazo el puntero para no encontrar de nuevo el signo
  50         sub r5,r0,#1            @ calcular r5 para detectar comienzo de cadena 
  51 anumero_otro:
  52         ldrb r1,[r0],#1         @ bucle para encontrar el final de cadena 
  53         cmp r1,#0
  54         bne anumero_otro
  55         sub r0,#2               
  56         mov r2,#1
  57         mov r3,#16 
  58         mov r6,#0 
  59 
  60 anumero_otro2:
  61         ldrb r1,[r0],#-1        @ carga los elementos desde el menos significativo (último caracter)
  62         cmp r0,r5               @ compara si es comienzo de cadena para salir 
  63         blo anumero_fin
  64         cmp r1,#'.'
  65         beq anumero_cont
  66         cmp r1,#'9'             @ si es menos a '9' es un número si es mayor es una letra 
  67         subls r1,#'0'
  68         subhi r1,#('A'-10)
  69         mul r1,r2,r1            @ multiplico el dígito con el peso de la posición
  70         mul r2,r3,r2            @ recalculo el peso de la posición
  71         add r6,r1               @ acumulador con resultado
  72                                 @ ejemplo 
  73                                 @ entrada = '3','4','A'
  74                                 @ calculo = (A *  1)+ (4 * 1 * 16) + (3 * 1 * 16 * 16)
  75 anumero_cont:
  76         b anumero_otro2         
  77 anumero_fin:
  78         mov r0,r6               
  79         cmp r4,#1               @ verifico signo para negar el número si fuera negativo 
  80         rsbeq r0,r0,#0   
  81         pop {r1-r6}    
  82         mov pc,lr
  83               
  84 
  85 VECTOR: .word NUM1,NUM2
  86 NUMEROS: .word 0,0
  87 TAMANIO: .word 2 
  88 NUM1: .asciz "0.A334"
  89 NUM2: .asciz "-98"
  90 .balign 4
  91       .space(200)
  92 STACK:
  93 
  94         .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.
  • [obtener | ver] (2019-09-02 11:56:14, 110.6 KB) [[attachment:ARM_Instruction_Set.pdf]]
  • [obtener | ver] (2019-09-02 11:56:14, 1.1 KB) [[attachment:Makefile]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.4 KB) [[attachment:alarma_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.5 KB) [[attachment:alarma_s_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 2.3 KB) [[attachment:anumero1_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 2.9 KB) [[attachment:anumero2_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.6 KB) [[attachment:cadena_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 1.2 KB) [[attachment:cercano_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.8 KB) [[attachment:clave_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 1.4 KB) [[attachment:compara_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 2.2 KB) [[attachment:contarletrasrep_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 1.5 KB) [[attachment:contarrep_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 1.2 KB) [[attachment:criba_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 2.3 KB) [[attachment:extraenum_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 1.2 KB) [[attachment:igualarlargo_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 1.7 KB) [[attachment:inspalabra_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.9 KB) [[attachment:invertir_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.9 KB) [[attachment:may_min_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.6 KB) [[attachment:multip_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.6 KB) [[attachment:potencia_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.8 KB) [[attachment:potencia_ex1.s,v]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.8 KB) [[attachment:prom_vector_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.6 KB) [[attachment:promedio_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.8 KB) [[attachment:promedio_ex1.s,v]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.7 KB) [[attachment:punt_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.8 KB) [[attachment:punt_ex1.s,v]]
  • [obtener | ver] (2019-09-02 11:56:14, 1.9 KB) [[attachment:separa_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 472.2 KB) [[attachment:slides.pdf]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.5 KB) [[attachment:suma100_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.6 KB) [[attachment:suma64_ex1.s]]
  • [obtener | ver] (2019-09-02 11:56:14, 0.8 KB) [[attachment:suma64_ex1.s,v]]
  • [obtener | ver] (2019-09-02 11:56:14, 160.3 KB) [[attachment:tp1.pdf]]
  • [obtener | ver] (2019-09-02 11:56:14, 167.3 KB) [[attachment:tp3.pdf]]
 All files | Selected Files: delete move to page copy to page

No tienes permisos para adjuntar un archivo a esta página.