嘿,我有一段对我来说没有意义的汇编代码
.text:004016C5 prompt_uid: ; "[ User %d ]\t"
.text:004016C5 mov [esp+0Ch+var_C], offset aUserD
.text:004016CC mov ecx, [ebp+arg_0]
.text:004016CF mov [esp+0Ch+var_8], ecx
.text:004016D3 call printf
.text:004016D8 mov [esp+0Ch+var_C], esi
.text:004016DB call gets
.text:004016E0 test eax, eax ; test eax=0
.text:004016E2 jz short prompt_uid
起初我对test eax,eax
和jz
跟随 a感到困惑gets
。
“为什么任何输入都是0?”。然后我想“好的。字符串由一个空字节终止,所以一个空字符串应该导致测试设置 ZF”
但是当我在实践中对其进行测试时,jz 从未被使用过。即使我只是在提示符下按回车。
我的错误在哪里?