如何在C++中嵌入汇编

bynonelse 2010-09-18 04:24:46
我写了这样一段代码,能build,但总是停止工作;
代码如下:
#include <iostream>
using namespace std;

int main()
{

cout<<"Good"<<endl;
_asm
{
XOR EAX, EAX
MOV ECX, 1
LAB1: MOV EDX, ECX
IMUL EDX, ECX
ADD EAX, EDX
INC ECX
CMP ECX, 10
JLE LAB1
RET
}

return 0;
}
环境是VS2010。
汇编初学者。
...全文
232 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bynonelse 2010-09-21
  • 打赏
  • 举报
回复
谢谢各位~
le0nscofy 2010-09-21
  • 打赏
  • 举报
回复
维护堆栈是需要这个的
redleaves 2010-09-21
  • 打赏
  • 举报
回复
楼上的都说了.ret之前要维护stackframe.你这里应该去掉ret.或是直接写个无stackframe的函数,然后函数所有的内容都自己维护.
void __declspec(naked) func( /* 参数 */ ) {
_asm {
...
ret
}
}
lly212 2010-09-20
  • 打赏
  • 举报
回复
你又没有call 你ret什么啊
dengqibin 2010-09-20
  • 打赏
  • 举报
回复
3楼正解那个ret没必要,多了那ret堆栈就不对了
bynonelse 2010-09-20
  • 打赏
  • 举报
回复
我调试的时候也发现了这个问题,前面也没错,只有最后一部有问题~初学,多试试
cswuyg 2010-09-18
  • 打赏
  • 举报
回复
去掉 ret。
bynonelse 2010-09-18
  • 打赏
  • 举报
回复
额~不是随便写的,我们老师的PPT上面复制的~
healer_kx 2010-09-18
  • 打赏
  • 举报
回复
嵌入的汇编也是有限制的,不能随便写的。

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧