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

C语言中写汇编代码

2006-6-6 09:18
4926
这些是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;
}
我不知他的实现方法,很多高手应该会,可以解释一下吗?
谢谢.

[注意]APP应用上架合规检测服务,协助应用顺利上架!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
//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;
}
2006-6-6 09:33
0
雪    币: 380
活跃值: (101)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
3
问下小虾啊
  lea eax, [ebp-09h]
  push eax
起什么作用的,怎么去掉之后程序就异常了
2006-6-6 11:17
0
雪    币: 380
活跃值: (101)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
4
SORRY,懂了,传递的参数
2006-6-6 11:18
0
游客
登录 | 注册 方可回帖
返回
//