首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >指令sete在汇编中是做什么的?

指令sete在汇编中是做什么的?
EN

Stack Overflow用户
提问于 2018-10-26 23:14:09
回答 1查看 14.8K关注 0票数 10

我的大学课程需要一些基本的汇编知识。即使我什么都没有。然而,他们给了我们这个示例汇编代码:

代码语言:javascript
运行
复制
080485fa <check_pin>:
 80485fa:       55                      push   ebp
 80485fb:       89 e5                   mov    ebp,esp
 80485fd:       81 7d 08 bf 07 00 00    cmp    DWORD PTR [ebp+0x8],0x7bf
 8048604:       0f 94 c0                sete   al
 8048607:       0f b6 c0                movzx  eax,al
 804860a:       5d                      pop    ebp
 804860b:       c3                      ret

它应该或多或少等同于下面的C代码:

代码语言:javascript
运行
复制
int check_pin(int pin) {
        return pin == 0x7bf;
}

我试图弄清楚这段汇编代码到底做了什么,但我被这条sete指令搞糊涂了。这个指令是做什么的?

维基百科有a course on x86 assembly,但我在专门介绍汇编指令的章节中找不到任何关于sete的内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-26 23:25:26

如果设置了零标志,则sete指令(及其等效指令setz)将其参数设置为1,否则设置为0。如果最后的比较或算术指令产生相等或结果为零,则设置零标志。因此,在您的示例中,sete根据前面的cmp指令的结果将al设置为01

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53011701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档