首页
社区
课程
招聘
[求助]汇编转换为C语言的问题
发表于: 2011-2-27 14:43 4405

[求助]汇编转换为C语言的问题

2011-2-27 14:43
4405
小弟在一本电子书上看到这样一段汇编代码:
.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作者讲授!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 105
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
Text该是个数组
if(MyAl<9)MyAl=+0x7;  应该是 if(MyAL>9)MyAl+=0x7;吧?
复合运算符都反了
2011-2-27 15:07
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
3
那符合运算符纯属失误
2011-2-27 18:33
0
游客
登录 | 注册 方可回帖
返回
//