Domingo 22 de Diciembre de 2024, 18:58
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
) »
Str2morse
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Str2morse (Leído 1531 veces)
Enko
Miembro de PLATA
Mensajes: 1562
Nacionalidad:
Str2morse
«
en:
Miércoles 18 de Abril de 2007, 00:21 »
0
Lo que hace el programa es convertir una cadena de caracteres al codigo morse.
Se me ocurió hacerlo por:
http://foros.solocodigo.com/index.php?showtopic=28012
La cadena entrada solo debe contener mayusculas y espacios, los otros caracteres serán ignorados. Como estoy en el trabajo y no encontré la funcion para pasar de minusculas a mayusculas, y mia no quice hacer. (en la msvcrt hay una, pero bue...)
Lo hice porque vi la solucion en JavaScript de una pagina que hacía unos 30 ifs..... no se como que no da
Código: Text
format PE GUI 4.0
entry start
include '..\include\win32a.inc'
section '.data' data readable writeable
hInstance dd 0
szString db 1024 dup 0 ;cadena salida
szMessage db 'AAA AAA', 0 ;solo mayusculas señores
szFormat db '%s%s', 0
szSpace db '|',0
length dd 0
;vector con cadenas de letras de morse alineado a 8 bytes
szMorse db '.- ',0 ,0,0,0,0,\;A 0
'-... ',0,0,0,\;B 1
'-.-. ',0,0,0,\;C 2
'-.. ',0,0,0,0,\;D 3
'. ',0,0,0,0,0,0,\;E 4
'..-. ',0,0,0,\;F 5
'--. ',0,0,0,0,\;G 6
'.... ',0,0,0,\;H 7
'.. ',0,0,0,0,0,\;I 8
'.--- ',0,0,0,\;J 9
'-.- ',0,0,0,0,\;K 10
'.-.. ',0,0,0,\;L 11
'-- ',0,0,0,0,0,\;M 12
'-. ',0,0,0,0,0,\;N 13
'--- ',0,0,0,0,\;0 14
'.--. ',0,0,0,\;P 15
'--.- ',0,0,0,\;Q 16
'.-. ',0,0,0,0,\;R 17
'... ',0,0,0,0,\;S 18
'- ',0,0,0,0,0,0,\;T 19
'..- ',0,0,0,0,\;U 20
'...- ',0,0,0,\;V 21
'.-- ',0,0,0,0,\;W 22
'-..- ',0,0,0,\;X 23
'-.-- ',0,0,0,\;Y 24
'--.. ',0,0,0 ;Z
section '.code' data readable
start:
invoke GetModuleHandle,0
mov [hInstance], eax
stdcall str2morse, szMessage, szString
invoke MessageBox, 0, szString, szMessage, MB_OK
invoke ExitProcess,0
proc str2morse strin, strout
push esi edi ebx
;tamaño cadena entrada
invoke lstrlen, [strin]
mov [length], eax
xor ebx, ebx
mov esi, [strin]
mov edi, [strout]
for_i:
mov eax, [esi + ebx]
and eax, 0x000000FF
;aca iria una funcion tipo StrUpper
;verificamos si es un espacio, si lo es se imprime una barra
cmp eax, 32
jne notspace
invoke wsprintf, edi, szFormat, [strout], szSpace
notspace:
;verificamos que este entre A..Z
cmp eax, 65
jl next
cmp eax, 90
jg next
;como la letra A es 65 y el arreglo comienza desde 0
;se resta 65
sub eax, 65
;multiplicamos por 8 porque esta alineado a 8
imul eax, 8
lea edx, [szMorse+ eax]
;strSalida = strSalida + ChrToMorse(strEntrada[ebx]);
invoke wsprintf, edi, szFormat, [strout], edx
next:
;cosas del bucle
inc ebx
cmp ebx, [length]
jle for_i
xor eax, eax
end_for:
pop ebx edi esi
ret
endp
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL'
include '..\include\api\kernel32.inc'
include '..\include\api\user32.inc'
Tweet
Bicholey
Moderador
Mensajes: 1234
Re: Str2morse
«
Respuesta #1 en:
Miércoles 18 de Abril de 2007, 01:50 »
0
Ahora ya todos podremos participar en el dicho foro y colocar nuestras opiniones en morse...
Hablando de tonterias que no seria buena idea eso de subir programas hechos para que los usuarios del foro ya no estuvieran pidiendo, no tienen un programa de esto de lo otro de aquello, de seguro muchos de nosotros no tenemos mas que programas ociosos que no hace nada importante pero son muy didacticos...
[size=109]
LOS GATOS SIEMPRE CAEMOS DE PIE !!!
[/size]
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Str2morse