1
嘿,我有彙編代碼片段沒有意義對我測試爲0後得到
.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
混淆跟隨gets
。
「爲什麼輸入是0?」。然後,我認爲 「好吧,字符串被零字節終止,所以空字符串應導致測試設置ZF」
但是當我在實踐中測試它時,jz從未被採用。即使我只是按提示輸入。
我的錯誤在哪裏?
啊!我在這裏犯了兩個錯誤:a)我忘記了結果實際寫入了作爲參數提供的緩衝區b)我沒有考慮EOF。 – er4z0r