求这段代码的解释

love_mely 2013-04-08 12:55:44
cmp %ecx, %ebx
setl %al
movzbl %al, %eax

要实现的功能是比较ecx和ebx的大小,
如果ebx<ecx,eax就为1,否则为0。

这段代码为什么能实现这个功能呢?
汇编基础较差麻烦详细解释 :)
...全文
68 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2013-04-08
  • 打赏
  • 举报
回复
为什么不能看下 setl 这个指令的功能说明呢?它就是根据条件对应的标记位来将目标操作数设置为 1 或 0 的。
love_mely 2013-04-08
  • 打赏
  • 举报
回复
找不到哪里可以编辑自己发过的帖子,补充在这好了=。=

cmp的用法是用第二个操作数去减第一个操作数,并根据所得的差设置有关标志位,为随后的条件转移指令提供条件。但并不保存该差,所以,不会改变指令中的操作数。

所以我理解的是
cmp o1, o2
jz...
这种用法。

但是上例中 cmp指令后跟着一条setl,并不是跳转语句,setl这条语句是怎么获得比较结果的呢?


21,458

社区成员

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

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