2011-11-25 58 views
1

我正在通過輸入分配變量,然後嘗試將該變量值移入EAX。無法將數據移入EAX

它不工作,我收到奇怪的結果。

.386 
    .model flat, c 
    .stack 100h 
printf PROTO arg1:Ptr Byte, printlist:VARARG 
scanf PROTO arg2:Ptr Byte, printlist:VARARG 
    .data 
in1fmt byte "%d",0 
msg1fmt byte 0Ah,"%s",0 
msg1 byte "Enter an integer: ",0 
number sdword ? 
    .code 
main proc 
    INVOKE printf, ADDR msg1fmt, ADDR msg1 
    INVOKE scanf, ADDR in1fmt, ADDR number 
    mov eax, number 
    ret 
main endp 
    end 

如果我輸入30,由於某種原因EAX包含17。

爲什麼?

+0

你是如何檢查eax的值?我沒有看到任何輸出代碼.... – SoapBox

+0

也許他在調試器 –

+0

中檢查過,或者也可能是他輸入了23 .__。 –

回答