Domingo 22 de Diciembre de 2024, 14:06
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Manejo De Caracteres
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Manejo De Caracteres (Leído 2225 veces)
olberillo
Nuevo Miembro
Mensajes: 3
Manejo De Caracteres
«
en:
Miércoles 22 de Noviembre de 2006, 15:48 »
0
Alguien ke me enseñe un codigo de como determinar si un caracter es Numero, min o MAyuscula.
Otro es ke al digitar dos caracteres de hexa me enseñe su valor en asci.
Gracias
Olber Utria
olberillo@hotmail.com
Tweet
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Manejo De Caracteres
«
Respuesta #1 en:
Miércoles 22 de Noviembre de 2006, 15:55 »
0
Para saber si es un numero comparas el caracter contra '0' y '9' si es mayor o igual a '0' y menor o igual a '9' entonces es un numero. Para saber si es minuscula lo mismo pero comparando con 'A' y 'Z' y para minusculas con 'a' y 'z'.
En decimal:
'0' es 48, '9' es 57, 'A' es 65, 'Z' es 90, 'a' es 97 y 'z' es 122.
No se piden tareas ni codigo asi como asi, si tenes algun problema especifico te ayudaremos.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
olberillo
Nuevo Miembro
Mensajes: 3
Re: Manejo De Caracteres
«
Respuesta #2 en:
Miércoles 22 de Noviembre de 2006, 23:32 »
0
Tengo esto realizado, y compare el caracter capturado si es un numero y funciona...pero en las otras comparaciones, me genera bastantes errores!
AQui lo envio para que me colabores...porfa...
cr EQU 13
lf EQU 10
print macro arg1
push ax
push dx
lea dx,arg1
mov ah,9
int 21h
pop dx
pop ax
endm
read macro arg1
push ax
push dx
lea dx,arg1
mov ah,10
int 21h
pop dx
pop ax
endm
dades SEGMENT PARA PUBLIC
missatge DB 'Digita el caracter',cr,lf,'$'
mis1 DB 'es numero',cr,lf,'$'
mis3 DB 'ES MIN',cr,lf,'$'
mis4 DB 'ES may',cr,lf,'$'
maxcad DB 30
lencad DB 0
cadena DB 30 DUP(0)
numero DB 5 DUP(0),'$'
linia_blanc DB cr,lf,'$'
missatge2 DB 'Desea salir?',cr,lf,'$'
maxcad2 DB 2 ;longitud máxima.
lencad2 DB 0 ;longitud leida.
cadena2 DB 2 DUP(0) ;buffer que contendrá el texto introducido.
blanc DB cr,lf,'$'
dades ENDS
codi SEGMENT PARA PUBLIC 'code'
main PROC FAR
ASSUME CS:codi,DS:dades,SS:pila,ES:dades
mov ax,dades
mov ds,ax
mov es,ax
inicio:
print missatge ;pide que se introduzca un mensaje y lo guarda en maxcad
read maxcad
print linia_blanc ;imprime linea en blanco
mov bx,0 ;pone el registro bx a 0
pushpila:
mov al, cadena[bx] ;movemos la cadena introducida a al
push ax
inc bl
cmp bl, lencad ;hacemos la comparacion para que el proceso se repita mientras bl no sea 0
jne pushpila
mov bx, 0
caracter:
cmp numero[bx],0 ;Comprueba posicion a posicion que el caràcter introducido es un
jb error ;numero decimal, por eso verifica si esta entre 0 y 9 si no esta
cmp numero[bx],9 ;salta al bucle error.
ja error
inc bl
cmp bl,lencad
jne caracter
; si no salta a numeros
error:
print blanc
print mis1
print blanc
jmp salir
salir:
mov ax,4c00h
int 21h
main ENDP
codi ENDS
pila SEGMENT PARA STACK 'stack'
DB 128 DUP(0)
pila ENDS
END main
podrrido
Miembro activo
Mensajes: 33
Re: Manejo De Caracteres
«
Respuesta #3 en:
Jueves 23 de Noviembre de 2006, 07:30 »
0
Va
TITLE LETRAS(EXE)
.MODEL SMALL
.STACK 64
;----------------------------------------------
.DATA
MAYUSCULA DB 'ES LETRA MAYUSCULA','$'
NUMERO DB '**ES UN NUMERO** ','$'
MINUSCULA DB '**ES MINUSCULA** ','$'
NINGUNO DB ' NO ES NINGUNA $ '
;--------------------------------------------------
.CODE
GABINOC PROC NEAR
MOV AX,@data
MOV DS,AX
CALL LIMPIAR ;limpia pantalla
CALL CURSOR ;coloca cursor (no es necesario)
MOV AH,10H ;¿Que letra se preciono?
INT 16H
CMP AL,'A'
JB A20
CMP AL,'Z'
JA A20
LEA DX,MAYUSCULA
CALL ESCRIBIR
JMP SALIR
A20:
CMP AL,'a'
JB A30
CMP AL,'z'
JA A30
LEA DX,MINUSCULA
CALL ESCRIBIR
JMP SALIR
A30:
CMP AL,'0'
JB A40
CMP AL,'9'
JA A40
LEA DX,NUMERO
CALL ESCRIBIR
JMP SALIR
A40:
LEA DX,NINGUNO
CALL ESCRIBIR
SALIR:
MOV AH,10H
INT 16H
MOV AX,4C00H
INT 21H
GABINOC ENDP
;------------------------------------------------------------
ESCRIBIR PROC NEAR ;dx entra desde atras
MOV AH,09H ;imprime
INT 21H
RET
ESCRIBIR ENDP
;------------------------------------------------------------
LIMPIAR PROC NEAR
MOV AX,0600H
MOV BH,1BH
MOV CX,0000
MOV DX,184FH
INT 10H
RET
LIMPIAR ENDP
;------------------------------------------------------------
CURSOR PROC NEAR
MOV AH,02H
MOV BH,00
MOV DH,00
MOV DL,00
INT 10H
RET
CURSOR ENDP
;-------------------------------------------------------------
END GABINOC
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Manejo De Caracteres
«
Respuesta #4 en:
Jueves 23 de Noviembre de 2006, 08:16 »
0
Como podes ver en mi mensaje y en el codigo que te dejaron la comparacion no se hace contra 0 o 9 sino contra '0' y '9' osea contra sus equivalentes en ASCII. Lo mismo va para las mayusculas y minusculas.
podrrido
: por favor que no se haga costumbre poner el codigo con la resolucion como primera medida, asi no aprende nadie.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Manejo De Caracteres