Я застрял в написании своей программы. Вот что я хотел:
- отображать приветственное сообщение внутри консоли
- Подождите, пока пользователь введет число от 0 до 9]
- сравните это число с 0
- вывести сообщение, если оно есть, иначе выйти
Вот что у меня есть на данный момент:
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
include \masm32\include\masm32.inc
includelib \masm32\lib\masm32.lib
.data
capt db "SCHiM says: ",0
txt db "Enter a number 0-9:",0
.data?
data db ?
.code
start:
call AllocConsole
push offset txt
call StdOut
push 1
push offset data
call StdIn
mov al, data
cmp al, 0h
jz eqzero
invoke ExitProcess, NULL
eqzero:
push offset capt
call StdOut
push offset data
call StdOut
endloop:
jmp endloop
invoke ExitProcess, NULL
end start
Программа прекрасно компилируется и линкуется без каких-либо предупреждений или ошибок. Но cmp всегда возвращает 1, если я печатаю значение в данных (с помощью StdOut), оно показывает мне точное значение, которое я ввел. Так почему же это не работает?
заранее спасибо