I would like to continue using this code to learn assembly language in MASM32 SDK ,
.386
.MODEL flat, stdcall
OPTION casemap :none
INCLUDE \masm32\include\windows.inc
INCLUDE \masm32\include\masm32.inc
INCLUDE \masm32\include\kernel32.inc
INCLUDELIB \masm32\lib\kernel32.lib
INCLUDELIB \masm32\lib\masm32.lib
cdMaxSize EQU 11
.DATA?
szNumber1 db cdMaxSize dup(?)
szNumber2 db cdMaxSize dup(?)
iNum dd ?
.DATA
szTxtNum1 db "Your first number: ", 0
szTxtNum2 db "Your second number: ", 0
szTxtSum db "Both sum: ", 0
number1 DD 442
number2 dd 22
msg db cdMaxSize dup(0)
.CODE
num2str proc uses ebx edx esi
; In: eax, number value
; Out: eax, offset of value in string format
mov esi, offset msg + cdMaxSize - 1
mov ebx, 10
@Next:
dec esi
xor edx, edx
div ebx
or edx, 30h
mov byte ptr [esi], dl
or eax, eax
jnz @Next
mov eax, esi
ret
num2str endp
str2num proc uses ebx ecx edx esi edi
; In: eax, offset to str_num
; out: eax, the number converted
mov edi, eax ; offset
mov eax, 0
mov ecx, cdMaxSize
repne scasb
jne @NoFound
sub edi, 2
sub ecx, cdMaxSize
neg ecx
mov ebx, 1 ; factor
mov esi, 0 ; Acumulative
@Next:
dec ecx
jl @Exit
xor eax, eax ; clear it
mov al, byte ptr [edi]
and al, 15 ; 2num
mul ebx
add esi, eax ; get into accumulative
mov eax, ebx ; increases factor
mov ebx, 10
mul ebx
mov ebx, eax
dec edi ; reset pointer
jmp @Next
@Exit:
mov eax, esi
@NoFound:
ret
str2num endp
start:
; Get the numbers in asciiz
invoke StdOut, offset szTxtNum1
invoke StdIn, offset szNumber1, cdMaxSize
invoke StdOut, offset szTxtNum2
invoke StdIn, offset szNumber2, cdMaxSize
; Convert to numbers and sum
mov eax, offset szNumber1
call str2num
mov ebx, eax
mov eax, offset szNumber2
call str2num
add ebx, eax
; Show the result
invoke StdOut, offset szTxtSum
mov eax, ebx
call num2str
invoke StdOut, eax
INVOKE ExitProcess, 0
END start
But i cant get this program to work with inkey
It says
error A2008 : syntax error : inkey