09.12.2009, 22:21
общий
это ответ
Здравствуйте, FilipN.
Число нечетное, если младший бит установлен, т.е. равен 1.
Программа в приложении предлагает ввести число (длиной до 5 цифр, проверок на корректность ввода нет), затем проверяет последнюю цифру и выводит сообщение в зависимости от результата. Если есть необходимость, то можно добавить проверку на корректность введенной строки (т.е. что введено действительно число).
Успехов!
Приложение:
.model tiny
.data
msg db "Enter a number: $"
buf db 6, 7 dup(0) ; буфер для введенной пользователем строки
msg_even db 13,10,"The number is even",13,10,"$"
msg_odd db 13,10,"The number is odd",13,10,"$"
.code
org 100h
start:
mov ah,9 ; предлагаем ввести число
mov dx,offset msg
int 21h
mov ah,0Ah ; буферизованный ввод
mov dx,offset buf
int 21h
; Для проверки чет/нечет достаточно проверить последнюю цифру.
; Число нечетное, если младший бит установлен.
; В буфере содержатся коды символов (например, 31h ('1') вместо 1),
; но символ отличается от соответствующей цифры на 30h ('0'),
; поэтому можно проверить код символа.
xor bx,bx
mov bl,[buf+1] ; длина введенной строки
test [buf][bx+1],1 ; проверяем последнюю цифру
mov dx,offset msg_even ; предполагаем четное
jz @@even
mov dx,offset msg_odd ; нечетное
@@even:
mov ah,9
int 21h
xor ah,ah ; ждем нажатия любой клавиши для выхода
int 16h
int 20h ; завершаем программу
end start