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

Adjunto 'anumero1_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 r1,TAMANIO
  20         ldr r2,=VECTOR
  21         ldr r3,=NUMEROS
  22 
  23 otro:   ldr r0,[r2],#4
  24         bl anumero
  25         str r0,[r3],#4
  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 anumero:
  43         push {r1-r4}
  44         mov r4,#0
  45         ldrb r1,[r0]            @ si el primer caracter es '-' se activa la bandera de signo a 1 (r4)
  46         cmp r1,#'-'
  47         moveq r4,#1
  48         addeq r0,#1             @ si es negativo desplazo el puntero para no encontrar de nuevo el signo      
  49         mov r2,#0
  50         mov r3,#16 
  51 anumero_otro:
  52         ldrb r1,[r0],#1         @ carga los elementos desde el mas significativo (primer caracter
  53 
  54         cmp r1,#0
  55         beq anumero_fin
  56         cmp r1,#'.'
  57         beq anumero_cont
  58         cmp r1,#'9'             @ si es menos a '9' es un número si es mayor es una letra 
  59         subls r1,#'0'
  60         subhi r1,#('A'-10)
  61         mul r2,r3               @ multiplico acumulador por 16
  62         add r2,r1               @ sumo al acumulador el digito
  63                                 @ ejemplo 
  64                                 @ entrada = '3','4','A'
  65                                 @ calculo = ((0 * 16 + 3 ) * 16 + 4) * 16 + A 
  66 
  67 anumero_cont:
  68         b anumero_otro         
  69 anumero_fin:
  70         mov r0,r2
  71         cmp r4,#1               @ verifico signo para negar el número si fuera negativo 
  72         rsbeq r0,r0,#0   
  73         pop {r1-r4}    
  74         mov pc,lr
  75               
  76 
  77 VECTOR: .word NUM1,NUM2
  78 NUMEROS: .word 0,0
  79 TAMANIO: .word 2 
  80 NUM1: .asciz "0.A334"
  81 NUM2: .asciz "-98"
  82 .balign 4
  83       .space(200)
  84 STACK:
  85 
  86         .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.