首页
社区
课程
招聘
C语言中写汇编代码
2006-6-6 09:18 4421

C语言中写汇编代码

2006-6-6 09:18
4421
这些是Rookie写的,我经常犯错误,可能会有很多错误,望高手不吝指出.
是有几个朋友也喜欢这种编城方法的,前几天听我一个朋友说:"真正的高手是懂C,而不是C++",想想也是.

几乎所有代码最后还是有汇编代码组成的,只是效率的问题,汇编和机器语言11对应,这使汇编可以叫机器做机器能做的所有事.所以学好汇编对任何高级语言的理解很有好处.希望编程爱好者也能学习.

没事做, 写了短字符串处理的代码:

#include <string.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
__asm
{
  push ebp
  mov ebp, esp
  sub esp, 10h
  mov byte ptr[ebp-09h], 'a'
  mov byte ptr[ebp-08h], 'b'
  mov byte ptr[ebp-07h], 'c'
  mov byte ptr[ebp-06h], 'd'
  mov byte ptr[ebp-05h], '\n'
  mov byte ptr[ebp-04h], 0
  lea eax, [ebp-09h]
  push eax
  call printf
  mov esp, ebp
  pop ebp
}
return 0;
}
我不知他的实现方法,很多高手应该会,可以解释一下吗?
谢谢.

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 2367
活跃值: (756)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
小虾 10 2006-6-6 09:33
2
0
//VC-ConsoleWithApi
#include <string.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
  char szStr[10] = {0};
  szStr[0] = 'a';
  szStr[1] = 'b';
  szStr[2] = 'c';
  szStr[3] = 'd';
  szStr[4] = '\n';
  szStr[5] = '\x00';
  printf(szStr);
  return 0;
}
雪    币: 380
活跃值: (96)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
llydd 9 2006-6-6 11:17
3
0
问下小虾啊
  lea eax, [ebp-09h]
  push eax
起什么作用的,怎么去掉之后程序就异常了
雪    币: 380
活跃值: (96)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
llydd 9 2006-6-6 11:18
4
0
SORRY,懂了,传递的参数
游客
登录 | 注册 方可回帖
返回