汇编的前辈们帮忙指导下。

addesp,10movecx,eaxtestecx,ecxje098bda7fmoveax,[ecx+24]testeaxeaxje098bda7f098bda7fmo... add esp , 10
mov ecx,eax
test ecx,ecx
je 098bda7f
mov eax,[ecx+24]
test eax eax
je 098bda7f

098bda7f mov edi,[ebp-18]

这段代码该如何去理解? 主要是跳转的地方理解不了。
展开
 我来答
lsh1000
2012-01-03 · TA获得超过205个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:255万
展开全部
//前面很可能是一个CALL语句,进行函数调用,
add esp , 10//CALL调用完,平堆栈
mov ecx,eax //eax是函数调用的返回值
test ecx,ecx
je 098bda7f//检测函数返回值,返回值应该是一个结构体指针或者类对象指针,若是NULL则跳转
mov eax,[ecx+24]
test eax eax //检测返回值的结构体指针或者类对象指针,它指向的成员粗袭变量,若是0则跳转
je 098bda7f

098bda7f mov edi,[ebp-18]

大概含义是:
eax =func();//函数返回值
ecx = eax;
if(ecx ==NULL) jmp 098bda7f//若函数返岩嫌兄回值为NULL,则跳转
if(ecx->b==0) jmp 098bda7f//若函数返回值不者山空,则判断其成员变量(结构体变量)是否为0,是则跳转
mtvwr
2012-01-03 · TA获得超过253个赞
知道答主
回答量:54
采纳率:0%
帮助的人:70.3万
展开全部
你说你跳转的地方不理解,我想应该是对test ecx,ecx和贺蚂test eax eax 不太理解吧?
test指令是把目标操作数与源操作数进行‘与缺丛’操作,影响一些标志位,如ZF。test ecx,ecx 是测试ecx 积存器的值是否为0,等于0则跳转。test指令有点象and指令,只不过and指令在影响标志位的时候同时还改变目标操作数的值,而test指令只影响标志位。

我禅扮埋说的你可理解?嘿嘿。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友be8746014
2012-01-05
知道答主
回答量:5
采纳率:0%
帮助的人:3.4万
展开全部
你就把098bda7f当成标号就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式