Модификация вашей первой программы на Турбо Ассемблере

 

 

Теперь снова войдем в редактор и модифицируем программу та-

ким образом, чтобы она могла воспринимать какие-то данные из

внешней среды (этой "внешней средой" будете вы, а вводимые данные

будут набираться на клавиатуре). Измените программу следующим об-

разом:

 

.MODEL SMALL

.STACK 100h

.DATA

TimePrompt DB 'Eto vremya posle poludnya? (yes/no) - [y/n]$'

GoodMorningMessage DB 13,10,'Dobroe utro!',13,10,'$'

GoodAfternoonMessage DB 13,10,'Hello!',13,10,'$'

.CODE

.startup

mov ax,@Data

mov ds,ax; установить регистр DS таким

; образом, чтобы он указывал

; на сегмент данных

mov dx,OFFSET TimePrompt; ссылка на сообщение-запрос

mov ah,09h; функция DOS вывода строки

int 21h; получить ответ из одного

; символа

Begin:

mov ah,08h

int 21h

cmp al,'y'; указано время после полудня

; (буква Y)

jz IsAfternoon; да, время указано после

; полудня

cmp al,'n'; указано время после полудня

; (буква n)

jz IsMorning; нет, время указано до

; полудня

jmp Begin

IsAfternoon:

mov dl,'y'

mov ah,02h

int 21h

mov dx,OFFSET GoodAfternoonMessage; указывает на

; приветствие "Hello"

jmp DisplayGreeting

IsMorning:

mov dl,'n'

mov ah,02h

int 21h

mov dx,OFFSET GoodMorningMessage; указывает на

; приветствие "Dobroe utro"

DisplayGreeting:

mov ah,09h; функция DOS вывода сообщения

int 21h; вывести соответствующее

; сообщение

mov ah,4ch; функция DOS завершения

; программы

int 21h; завершить программу

ends

END

 

Таким образом, вы добавили в программу два очень важных новых

средства: возможность ввода и принятие решений. Эта программа

запрашивает у вас, является ли вводимое время временем после по-

лудня, воспринимая ответ (один символ) с клавиатуры. Если таким

ответом будет буква y, то программа выводит сообщение

"Hello!", если буква n, то выводится сообщение "Dobroe utro!".

В данной программе имеются все основные элементы полезной

программы: ввод информации из внешней среды, обработка данных и

принятие решения.

 

Сохраните эту модифицированную программу на диске. После

этого заново ассемблируйте и скомпонуйте программу, как в преды-

дущем примере. Запустите ее снова, введя hello в ответ на подс-

казку DOS. Выведется сообщение:

 

Eto vremya posle poludnya? (yes/no) - [y/n]

 

Курсор будет мерцать у последнего символа в ожидании ввода

ответа. Нажмите y. Программа ответит:

 

Hello!

 

Таким образом HELLO.ASM стала теперь интерактивной програм-

мой с принятием решений.

 

В ходе ассемблирования вы, конечно, получите различные сооб-

щения об ошибках из-за неправильного набора программы и ошибках в

синтаксисе. Турбо Ассемблер перехватывает такие ошибки, сообщая о

них. Выводимые сообщения об ошибках разбиваются на две категории:

предупреждения и ошибки. Если Турбо Ассемблер обнаруживает что-то

подозрительное, но необязательно неверное, он выводит предупреж-

дающее сообщение. Иногда предупреждающие сообщения можно игнори-

ровать, но всегда лучше их проверить и убедиться в том, что вы

понимаете суть проблемы. При обнаружении чего-либо явно непра-

вильного в вашей программе, что делает невозможным завершение ас-

семблирования и формирование объектного файла, Турбо Ассемблер

выводит сообщение об ошибке.

 

Другими словами, предупреждающие сообщения не свидетельству-

ют о критических ошибках, в то время как ошибки, о которых гово-

риться в сообщениях об ошибках, должны быть исправлены перед за-

пуском программы. В Приложении E содержится перечень сообщений об

ошибках и предупреждающих сообщений.

 

Как и любой язык программирования, Турбо Ассемблер не может

распознавать ошибки в логике программы. Турбо Ассемблер только

сообщает вам, может ли ваш ассемблируемый код быть выполнен в том

виде, как он введен, но он не может сделать вывод о том, будет ли

программа работать так, как вы этого хотите. Об этом можете су-

дить только вы сами.

 

Чтобы получить распечатку программы (вывести ее на устройс-

тво печати), обратитесь к руководству по редактору текстов. Ис-

ходные файлы Турбо Ассемблера представляют собой обычные тексто-

вые файлы в коде ASCII (американский стандартный код обмена

информацией), поэтому вы можете также напечатать исходный текст

программы на Ассемблере с помощью команды PRINT, введя ее в ответ

на подсказку операционной системы DOS.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: