Как поместить значение полученное от StdIn в eax?

Написал вот такую программу, необходимо взять из консоли число и провести некоторые арифметичческие команды, что именно мне нужно сделать чтобы из консоли забиралось число и помещалось в eax, пробывал так: mov eax, offset buffer но число было странно большим

.386
.model flat, stdcall
option casemap:none

include D:\masm32\include\windows.inc
include D:\masm32\include\masm32.inc
include D:\masm32\include\gdi32.inc
include D:\masm32\include\user32.inc
include D:\masm32\include\kernel32.inc
include D:\masm32\include\masm32rt.inc
includelib D:\masm32\lib\masm32.lib
includelib D:\masm32\lib\gdi32.lib
includelib D:\masm32\lib\user32.lib
includelib D:\masm32\lib\kernel32.lib

ExitProcess proto :DWORD

.data
    consoletitle1 db "Введите первое число", 0
    consoletitle2 db "Введите второе число", 0
    mestitle1 db "Целая часть", 0
    mestitle2 db "Остаток", 0
    buffer1 db 128 dup(0)
    buffer2 db 128 dup(0)
    format db "%d", 0

.data?
    first db 100 dup(?)
    second db 100 dup(?)

.code
start:

    push offset consoletitle1
    call StdOut

    push 100
    push offset first
    call StdIn

    push offset consoletitle2
    call StdOut

    push 100
    push offset second
    call StdIn

    mov eax, val(offset first)
    mov ebx, val(offset second)

    ;mov eax, 32
    ;add eax, 3
    ;mov ebx, 5
    ;sub eax, ebx
    ;mov ebx, 10
    ;mul ebx
    ;mov ebx, 8
    xor edx, edx

    div ebx
    push edx

    invoke wsprintf, addr buffer1, addr format, eax
    invoke MessageBox,0,addr buffer1, addr mestitle1, MB_OK

    pop edx
    invoke wsprintf, addr buffer2, addr format, edx
    invoke MessageBox,0,addr buffer2, addr mestitle2, MB_OK


    invoke ExitProcess, 0

end start
code end

Ответы (1 шт):

Автор решения: Илья К

Метод StdInпомещает в buffer строку символов, это не число, а строка символов.

Ты можешь передать эту строку какому либо другому методу который преобразует ее в число.

→ Ссылка