我的大学课程需要一些基本的汇编知识。即使我什么都没有。然而,他们给了我们这个示例汇编代码:
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代码:
int check_pin(int pin) {
return pin == 0x7bf;
}我试图弄清楚这段汇编代码到底做了什么,但我被这条sete指令搞糊涂了。这个指令是做什么的?
维基百科有a course on x86 assembly,但我在专门介绍汇编指令的章节中找不到任何关于sete的内容。
发布于 2018-10-26 23:25:26
如果设置了零标志,则sete指令(及其等效指令setz)将其参数设置为1,否则设置为0。如果最后的比较或算术指令产生相等或结果为零,则设置零标志。因此,在您的示例中,sete根据前面的cmp指令的结果将al设置为0或1。
https://stackoverflow.com/questions/53011701
复制相似问题