Теперь снова войдем в редактор и модифицируем программу та- ким образом, чтобы она могла воспринимать какие-то данные из внешней среды (этой "внешней средой" будете вы, а вводимые данные будут набираться на клавиатуре). Измените программу следующим об- разом:
.MODEL SMALL .STACK 100h .DATA TimePrompt DB 'Это время после полудня? (ДА/НЕТ) - [Y/N]$' GoodMorningMessage LABEL BYTE DB 13,10,'Доброе утро!',13,10,'$' GoodAfternoonMessage LABEL BYTE DB 13,10,'Здравствуйте!',13.10,'$' .CODE mov ax,@Data mov ds,ax ; установить регистр DS таким ; образом, чтобы он указывал ; на сегмент данных mov dx,OFFSET TimePrompt ; ссылка на сообщение-запрос mov ah,9 ; функция DOS вывода строки int 21h ; получить ответ из одного ; символа cmp al,'Y' ; указано время после полудня ; (прописная буква Y) jz IsAfternoon ; да, время указано после ; полудня cmp al,'y' ; указано время после полудня ; (строчная буква y) jnz IsMorning ; нет, время указано до ; полудня IsAfternoon: mov dx,OFFSET GoodAfternoonMessage ; указывает на ; приветствие "Здравствуйте" jmp DisplayGreeting IsMorning: mov dx,OFFSET GoodMorningMessage ; указывает на ; приветствие "Доброе утро" DisplayGreeting: mov ah,9 ; функция DOS вывода сообщения int 21h ; вывести соответствующее ; сообщение mov ah,4ch ; функция DOS завершения ; программы int 21h ; завершить программу END
Таким образом вы добавили в программу два очень важных новых средства: возможность ввода и принятие решений. Эта программа запрашивает у вас, является ли вводимое время временем после по- лудня, воспринимая ответ (один символ) с клавиатуры. Если таким ответом будет буква Y в верхнем или нижнем регистре (что означает ответ ДА), то программа выводит сообщение "Здравствуйте!", в про- тивном случае выводится сообщение "Доброе утро!". В данной прог- рамме имеются все основные элементы полезной программы: ввод из информации внешней среды, обработка данных и принятие решения.
Сохраните эту модифицированную программу на диске. После этого заново ассемблируйте и скомпонуйте программу, как в преды- дущем примере. Запустите ее снова, введя hello в ответ на подс- казку DOS. Выведется сообщение: