Código Delphi
[-]
program Ejecutor;
uses
Windows;
const
WM_CHAR= $0102 ;
var
miHandle : DWORD ;
data : string ;
App :string ='Notepad.exe';
Wndclass : string = 'Notepad';
Childclass : string= 'Edit';
begin
data := ' Estamos probando como funciona el assembler'+ #13#10+
'en Delphi y como no tenemos ni idea, no sabemos'+#13#10+
'que sucederà .'+#13#10+
'Bueno, no tenemos ni idea de Delphi,'+#13#10+
'en ensamblador , algo si sabemos ,es el primer len-'+#13#10+
'guaje de programación que nos pusimos a intentar '+#13#10+
'aprender o debí escribir aprehender............'+#13#10+
'¿ End ?' ;
asm
pushad
push SW_SHOW
push dword ptr [App ]
call WinExec
push 0
push dword ptr [Wndclass]
call FindWindow
push 0
push Childclass
push 0
push eax
call FindWindowEx
mov [miHandle], eax
mov edx, data
@@eti1:
xor eax, eax
mov al ,byte [edx]
or al, al
jz @@eti2
push edx
push 0
push eax
push WM_CHAR
push [miHandle]
call SendMessage
push 100
call Sleep
pop edx
inc edx
jmp @@eti1
@@eti2:
push 0
call ExitProcess
popad
end;
end.
Código Delphi
[-]
program segundo;
uses
Windows;
const
SCRCOPY=$00cc0020 ;
var
ancho WORD;
alto WORD;
contador WORD;
HDC WORD;
begin
asm
push SM_CXSCREEN
call GetSystemMetrics
mov [ancho], eax
push SM_CYSCREEN
call GetSystemMetrics
mov [alto], eax
shr eax, 1
mov contador, eax
push 0
call GetDC
mov [HDC], eax
@@eti1:
push SCRCOPY
push 0
push 0
push [HDC]
push [alto]
push [ancho]
push 1
push 1
push [HDC]
call BitBlt
dec [alto]
dec [contador]
jnz @@eti1
push [HDC]
push 0
call ReleaseDC
push 0
call ExitProcess
end;
end.