Проблемы с переносом данных в EAX - PullRequest
1 голос
/ 25 ноября 2011

Я назначаю переменную через ввод и затем пытаюсь переместить значение этой переменной в 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.

Почему?

1 Ответ

0 голосов
/ 08 января 2012

Попробуйте dd или DWORD, а не подписанный DWORD. Смотрите этот пример:

http://www.masm32.com/board/index.php?PHPSESSID=6a490c9d234761060af337f831a7efbe&topic=3270;prev_next=next

...