小弟在一本电子书上看到这样一段汇编代码:
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
.data
MsgBoxCaption db "结果!",0
MsgBoxText db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.code
start:
mov al,97h
call ShowAL
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_YESNOCANCEL
invoke ExitProcess, NULL
ShowAL proc
mov dl,al ;保存AL
mov cl,04
shr al,cl ;AL 高4 位移至低4 位
mov cx,02h ;循环2 次
xor ebx,ebx
mov esi,offset MsgBoxText
Low4bit:
cmp al,09
jbe larger ;低4 位超过9
add al,07
larger:
add al,30h
mov [esi],al
inc esi
mov al,dl ;恢复保存
and al,0Fh
loop Low4bit
ret
ShowAL endp
end start
小弟想把它转换为C语言,下面是我写的代码,没有输出结果,哪个帮忙看哈呀。代码:
#include<windows.h>
unsigned char MyAl=0x97;
unsigned char Text;
void MyFun(void)
{
char MyDl=MyAl;
char MyCl=0x4;
MyAl>>=MyCl;
MyCl=0x0;
unsigned char MyEsi=Text;
do
{
if(MyAl<9)MyAl=+0x7;
MyAl=+30;
MyEsi=MyAl;
MyEsi++;
MyAl=MyDl;
MyAl&=0xF;
MyCl++;
}while(MyCl<2);
}
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
MessageBox(NULL,Text,"结果!",MB_OK);
return 0;
}
[课程]FART 脱壳王!加量不加价!FART作者讲授!