Código de Ensamblador - Funcion isalpha

Imágen de perfil

Funcion isalphagráfica de visualizaciones


Ensamblador

Actualizado el 21 de Enero del 2015 por Alejandro (Creado el 16 de Enero del 2015)
1.438 visualizaciones desde el 16 de Enero del 2015. Una media de 21 por semana
Funcion que detecta si los caracteres de una variable son alphanumericos. Si lo son, movemos los caracteres a una nueva variable para separar los valores

Requerimientos

LINUX GAS ASSEMBLY (sintaxis at&t)

1.0

Actualizado el 21 de Enero del 2015 (Creado el 16 de Enero del 2015)gráfica de visualizaciones de la versión: 1.0
1.439 visualizaciones desde el 16 de Enero del 2015. Una media de 21 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

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
.section .data
valor1: .asciz "hola312que pasa!&\n"
new_line: .ascii "\n"
 
.section .bss
.lcomm valor2, 20
 
.section .text
.globl _start
 
.macro print str, str_size  #Macro
    movl $4, %eax  #Llamada a SYS_WRITE
    movl $1, %ebx  #Llamada a stout
    movl \str, %ecx #CADENA
    movl \str_size, %edx #Longitud
    int $0x80  #Llamamos al kernel
.endm #Fin del macro...
 
_start:
    nop
    leal valor1, %esi  #Pasamos la variable origen al registro esi
    leal valor2, %edi #Pasamos la variable destino al registro edi
    movl $18, %ecx  #Longitud de la cadena: valor1
    cld #Borrar bandera df
loop1:  #Bucle que se repite hasta que 16 llegue a 0
    lodsb  #Cargamos el primer caracter de la cadena origen y la almacenamos en el registro %al
    cmpb $' ', %al  #si el caracter es un espacio, brinca y almacena
    je isspace
    cmpb $'a', %al #Si el caracter es menor al codigo ascii de: a, brinca e ignora
    jl brinca
    cmpb $'z', %al #Si el caracter es mayor al codigo ascci de: z, brinca e ignora 
    jg brinca
    stosb  #Sino, almacenamos el caracter en la nueva cadena
    loop loop1 #Repetimos bucle si no es cero
isspace:
    stosb #Almacenamos el espacio
    loop loop1	#Repetimos bucle si no es cero
brinca:  #Ignoramos caracteres
    loop loop1	#Repetimos bucle si no es cero
end:
    print $valor1, $18 #Imprimimos cadena original
    xorl %edi, %edi  #Limpiamos el registro
    movl $valor2, %esi #Pasamos el valor al registro esi
    xorb %al, %al  #Limpiamos el registro
cuenta:  #Detectaremos la longitud de la nueva cadena
    lodsb #Cargamos valorl...
    cmpb $0, %al  #Si el registro al es cero, salimos del bucle
    jz continue
    incl %edi #Incrementamos el valor de la longitud
    jmp cuenta #...
continue:
    print $valor2, %edi #Imprimimos el valor de la nueva cadena pasandole el valor de longitud		
    print $new_line, $1 #Nueva linea
 
    movl $1, %eax #SYS_EXIT
    movl $0, %ebx #return 0
    int $0x80 #Llamada al kernel



Comentarios sobre la versión: 1.0 (0)


No hay comentarios
 

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s3006