开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

12
返回列表 发新帖
楼主: 小娘
收起左侧

[已解决] 20精币,CE里的小问题

[复制链接]
结帖率:50% (1/2)
发表于 2011-8-14 14:54:07 | 显示全部楼层   安徽省阜阳市
见血封喉 发表于 2011-8-14 14:40
第一个回答,我还是不明白啊。
请看:mov eax,[eax+esi*4]
这条语句里面有两个EAX。

eax只有一个 你把eax当成一个变量 在理解看看  是不是很简单
还有一点忘了告诉你 加[]的时候运算的不是值是地址
回复

使用道具 举报

结帖率:100% (8/8)
发表于 2011-8-14 15:12:33 | 显示全部楼层   广东省东莞市
mov eax,[eax+esi*4]
这个的意思就是
mov eax,[15581c40+esi*4]
回复

使用道具 举报

结帖率:100% (8/8)
发表于 2011-8-14 15:16:41 | 显示全部楼层   广东省东莞市
mov eax,[eax+esi*4]
这个的意思就是
mov eax,[15581c40+esi*4]

esi=00000000
所以
mov eax,[15581c40]
回复

使用道具 举报

结帖率:57% (4/7)
 楼主| 发表于 2011-8-14 15:19:27 | 显示全部楼层   黑龙江省七台河市
360501456 发表于 2011-8-14 14:54
eax只有一个 你把eax当成一个变量 在理解看看  是不是很简单
还有一点忘了告诉你 加[]的时候运算的不是 ...

EAX只有一个我到知道。
但是指令里却调用了两次EAX。
我想问的是EAX保存的是运算前还是运算后的值?
回复

使用道具 举报

结帖率:57% (4/7)
 楼主| 发表于 2011-8-14 15:23:44 | 显示全部楼层   黑龙江省七台河市
本帖最后由 见血封喉 于 2011-8-14 15:24 编辑
a5501241 发表于 2011-8-14 15:16
mov eax,[eax+esi*4]
这个的意思就是
mov eax,[15581c40+esi*4]


那假如ESI=1,那么下面的寄存器列表EAX=15581C44吗?其实我的的问题很简单,当MOV里目的操作数和源操作数都有EAX寄存的时候,CE下面寄存器列表表示的是运算前的EAX(15581C40)还是运算后的EAX(15581C44)呢?
{:soso__5967895541582461383_1:}
回复

使用道具 举报

结帖率:50% (1/2)
发表于 2011-8-14 15:35:06 | 显示全部楼层   安徽省阜阳市
本帖最后由 360501456 于 2011-8-14 15:37 编辑
见血封喉 发表于 2011-8-14 15:19
EAX只有一个我到知道。
但是指令里却调用了两次EAX。
我想问的是EAX保存的是运算前还是运算后的值?


你的理解能力真差  说了这么多白说了  可以这么理解
mov eax,[eax+esi*4]
eax=变量
理解成  变量=[变量+esi*4]
你说下变量是哪个值  很明显是右面那个值  但是在往下进行的时候eax值就会发生改变了  因为它被从新附值了
回复

使用道具 举报

结帖率:57% (4/7)
 楼主| 发表于 2011-8-14 15:39:51 | 显示全部楼层   黑龙江省七台河市
360501456 发表于 2011-8-14 15:35
你的理解能力真差  说了这么多白说了  可以这么理解
mov eax,[eax+esi*4]
eax=变量

不知所云,o(︶︿︶)o 唉。
理解能力太差了。
回复

使用道具 举报

结帖率:50% (1/2)
发表于 2011-8-14 15:48:58 | 显示全部楼层   安徽省阜阳市
见血封喉 发表于 2011-8-14 15:39
不知所云,o(︶︿︶)o 唉。
理解能力太差了。

我晕,我刚说错了
你的理解能力真差  说了这么多白说了  可以这么理解
mov eax,[eax+esi*4]
eax=变量
理解成  变量=[变量+esi*4]
这个时候 应该两个变量是同一个值 都是下面的那个值  但是因为左面那个没有用到所以不用管是多少
回复

使用道具 举报

结帖率:100% (8/8)
发表于 2011-8-14 16:10:19 | 显示全部楼层   广东省东莞市
本帖最后由 a5501241 于 2011-8-14 16:12 编辑
见血封喉 发表于 2011-8-14 15:23
那假如ESI=1,那么下面的寄存器列表EAX=15581C44吗?其实我的的问题很简单,当MOV里目的操作数和源操作 ...


mov eax,[eax+esi*4]
这个的意思就是
mov eax,[15581c40+esi*4]

esi=00000000
所以
mov eax,[15581c40]


也就是 把中括号里面的值传给外面的值   
eax   可以看成一个   a
mov a [15581c40(这个是eax也就是a)+esi*4]
这个就是   15581c40(这个是eax也就是a)+偏移(esi*4)
也就是等于
mov 15581c40[15581c40+0(esi*4=0)]
也就是没有偏移了
最后结果就是
mov 15581c40(这个值是eax)

回复

使用道具 举报

结帖率:100% (8/8)
发表于 2011-8-14 16:18:11 | 显示全部楼层   广东省东莞市
本帖最后由 a5501241 于 2011-8-14 19:18 编辑

1.在这条指令里有两个EAX,那么请问下面寄存器里面的EAX=15581C40,显示的是哪个呢?是MOV的左值还是右值。
  
这个计算完之后    左值=右值  
下面是计算步骤
mov eax,[eax+esi*4]
mov eax,[eax+0*4]
mov eax,[eax]
mov eax,[15581c40]
mov 15581c40
假如esi=1

mov eax,[eax+esi*4]
mov eax,[eax+1*4]
mov eax,[eax+4]
mov eax,[15581c40+4]
mov 15581c40+4

你可以看成是
eax=这个里面的地址(eax+esi*4)

点评

你这样说还是不对哦 eax不等于eax+esi*4 而是等于[eax+esi*4]这个地址的值   安徽省阜阳市  发表于 2011-8-14 16:49
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表