• 全部
...

improper operand type

rrr999999999 2008-12-26 09:51:05
int hui;
int huitt;
CString myst;

_asm {
lea eax, myst
mov hui,eax
//mov eax, offset myst
mov huitt,eax
}

为什么加offset 出错呀.:: error C2415: improper operand type
...全文
给本帖投票
2012 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sagegz 2008-12-26
  • 打赏
  • 举报
回复
2F解释来自
sagegz 2008-12-26
  • 打赏
  • 举报
回复
出现这些错误的主要原因是操作数和寄存器类型不匹配。一般,C语言可以做一些简单的数据类型转换,如将int转换为short,将float转换为int。但对于汇编语言,不会做这样的转换。如果你的value的类型是int或long,则会产生operand size conflict的错误提示,只能是short类型,因为AX寄存器为16位。至于AND AL, 0x80则应该没有错误,可能是前面的错误影响到这个语句了。
sagegz 2008-12-26
  • 打赏
  • 举报
回复

lea eax, myst
mov hui,eax ;这个hui是什么?定义的内容呢?
;mov eax, offset myst
mov huitt,eax
xtdumpling 2008-12-26
  • 打赏
  • 举报
回复
mark
xiaopoy 2008-12-26
  • 打赏
  • 举报
回复
offset是取offset to file start.
static变量即可取offset.
cnzdgs 2008-12-26
  • 打赏
  • 举报
回复
局部变量是在栈中分配的,不能用offset取地址,(其地址是ebp-n的形式),只能用lea。

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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

手机看
关注公众号

关注公众号

客服 返回
顶部