Programación General > ASM (Ensamblador)

 Str2morse

(1/1)

Enko:
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.0entry start include '..\include\win32a.inc' section '.data' data readable writeable   hInstance    dd 0   szString     db 1024 dup 0   &#59;cadena salida   szMessage    db 'AAA AAA', 0 &#59;solo mayusculas señores   szFormat     db '%s%s', 0   szSpace      db '|',0   length       dd 0  &#59;vector con cadenas de letras de morse alineado a 8 bytes   szMorse      db '.- ',0 ,0,0,0,0,\&#59;A 0                   '-... ',0,0,0,\&#59;B 1                   '-.-. ',0,0,0,\&#59;C 2                   '-.. ',0,0,0,0,\&#59;D 3                   '. ',0,0,0,0,0,0,\&#59;E 4                   '..-. ',0,0,0,\&#59;F 5                   '--. ',0,0,0,0,\&#59;G 6                   '.... ',0,0,0,\&#59;H 7                   '.. ',0,0,0,0,0,\&#59;I 8                   '.--- ',0,0,0,\&#59;J 9                   '-.- ',0,0,0,0,\&#59;K 10                   '.-.. ',0,0,0,\&#59;L 11                   '-- ',0,0,0,0,0,\&#59;M 12                   '-. ',0,0,0,0,0,\&#59;N 13                   '--- ',0,0,0,0,\&#59;0 14                   '.--. ',0,0,0,\&#59;P 15                   '--.- ',0,0,0,\&#59;Q 16                   '.-. ',0,0,0,0,\&#59;R 17                   '... ',0,0,0,0,\&#59;S 18                   '- ',0,0,0,0,0,0,\&#59;T 19                   '..- ',0,0,0,0,\&#59;U 20                   '...- ',0,0,0,\&#59;V 21                   '.-- ',0,0,0,0,\&#59;W 22                   '-..- ',0,0,0,\&#59;X 23                   '-.-- ',0,0,0,\&#59;Y 24                   '--.. ',0,0,0  &#59;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     &#59;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      &#59;aca iria una funcion tipo StrUpper      &#59;verificamos si es un espacio, si lo es se imprime una barra      cmp    eax, 32      jne    notspace      invoke wsprintf, edi, szFormat, [strout], szSpace    notspace:     &#59;verificamos que este entre A..Z      cmp    eax, 65      jl     next      cmp    eax, 90      jg     next      &#59;como la letra A es 65 y el arreglo comienza desde 0     &#59;se resta 65      sub    eax, 65     &#59;multiplicamos por 8 porque esta alineado a 8      imul   eax, 8      lea    edx, [szMorse+ eax]     &#59;strSalida = strSalida + ChrToMorse(strEntrada[ebx]);      invoke wsprintf, edi, szFormat, [strout], edx  next:     &#59;cosas del bucle      inc     ebx      cmp     ebx, [length]      jle     for_i      xor     eax, eax  end_for:      pop  ebx edi esi      retendp section '.idata' import data readable writeable   library kernel32,'KERNEL32.DLL',\          user32,'USER32.DLL'  include '..\include\api\kernel32.inc'  include '..\include\api\user32.inc'        

Bicholey:
:blink:  :smartass:  :rolleyes:  :huh:

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...

Navegación

[0] Índice de Mensajes

Ir a la versión completa