我的大学课程需要一些基本的汇编知识。即使我什么都没有。然而,他们给了我们这个示例汇编代码:
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
复制相似问题