1.- Desarrolle una macro llamada lenstr que tenga como argumento la etiqueta a un arreglo de bytes, la macro deberá contar el número de caracteres que tiene el arreglo hasta encontrar un CTRL/D, la macro deb regresar el número de caracteres del registro DX.
2.- Crear dos arreglo myarreglo que contenga "este arreglo tiene 20 caracteresª" y el arreglo cuenta que contenga "ejemplo de arregloª", a donde ª es el carácter CTRL/D:
Dada la macro anterior contar los caracteres del arreglo myarreglo y cuenta y sumar la longitud de los dos arreglos en AX.
3.- Desarrollar el punto 1 como un procedimiento al cual se le pasa en el stack la dirección del arreglo y regresa BX la cuenta de caracteres.
4.- De acuerdo al punto 2 llamar la función lentsr y sumar la longitud del arreglo myarreglo y cuenta en el registro DX.
He desarrollado el siguiente código:
.ASM
Código:
.386
.model flat,stdcall
option casemap:none
.stack
include examen.inc
include \MASM32\macros\macros.asm
lenstr macro
LOCAL myarreglo
endm
.code
inicio:
invoke lstrcat,addr myarreglo ,addr cuenta
invoke lstrlen,addr myarreglo
invoke wsprintf,addr buffer,addr fmo,eax
mov edx , eax
invoke MessageBox,NULL,addr buffer,addr MsgTitulo,MB_OK + MB_ICONINFORMATION
invoke ExitProcess,0
mov ebx , edx
add edx , ebx
end inicio
.INC
Código:
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
.data
myarreglo db "este arreglo tiene 20 caracteresª",0
cuenta db "ejemplo de arregloª",0
MsgTitulo db "Programa en Assembler",0
fmo db "la longitud de nuestra cadena es %d caracteres",0
.data?
buffer db 100 dup (?)
No he podido colocar el codigo dentro de la macro como es requerido...realiza la suma de las cadenas de caracteres pero necesito ayuda con la forma de introducir las instrucciones en la MACRO.
Y un poco de orientación en el enlace con un lenguaje de alto nivel de estas mismas funciones.