ちょっと意味のわからないアセンブリ コードのスニペットがあります
.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 になるのはなぜですか?」. 次に、「わかりました。文字列はnullbyteで終了するため、空の文字列はテスト設定ZFになるはずです」と思いました
しかし、実際にテストしたところ、jz は取得されませんでした。プロンプトでEnterキーを押しただけでも。
私の間違いはどこですか?