Как поместить значение полученное от 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 строку символов, это не число, а строка символов.
Ты можешь передать эту строку какому либо другому методу который преобразует ее в число.