Что происходит?
Теперь, когда вы получили и выполнили программу HELLO.ASM, давайте вернемся назад и рассмотрим подробно, что происходит с момента ввода текста программы до ее выполнения.
Когда вы ассемблируете файл HELLO.ASM, Турбо Ассемблер превращает текст инструкций в этом файле в их двоичный эквивалент в объектном файле HELLO.OBJ. Этот файл является промежуточным файлом (промежуточным звеном в процессе перехода от текстового к выполняемому файлу). Файл HELLO.OBJ содержит всю информацию, необходимую для создания выполняемого кода из инструкций, содержащихся в файле HELLO.ASM, но она записана в виде, который позволяет комбинировать ее с другими объектными файлами для создания одной программы.
При компоновке файла HELLO.OBJ TLINK преобразует его в выполняемый файл HELLO.EXE, который вы запускаете, введя hello в ответ на подсказку DOS.
Теперь введите:
dir hello.*
При этом будет выведен список файлов HELLO на диске. Это будут файлы HELLO.ASM, HELLO.OBJ, HELLO.EXE и HELLO.MAP.
Модификация вашей первой программы на Турбо Ассемблере
Теперь снова войдем в редактор и модифицируем программу таким образом, чтобы она могла воспринимать какие-то данные из внешней среды (этой "внешней средой" будете вы, а вводимые данные будут набираться на клавиатуре). Измените программу следующим образом:
.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 dx,ax
mov dx,OFFSET TimePrompt mov ah,9 int 21h cmp al,"Y" jz IsAfternoon cmp al,"y" jnz IsMorning IsAfternoon: mov dx,OFFSET GoodAfternoonMessage jmp DisplayGreeting IsMorning: mov dx,OFFSET GoodMorningMessage DisplayGreeting: mov ah,9 int 21h mov ah,4ch int 21h END
|
установить регистр DS таким образом, чтобы он указывал на сегмент данных ссылка на сообщение-запрос функция DOS вывода строки получить ответ из одного символа указано время после полудня (прописная буква Y) да, время указано после полудня указано время после полудня (строчная буква y) нет, время указано до полудня
указывает на приветствие "Здравствуйте"
указывает на приветствие "Доброе утро"
функция DOS вывода сообщения вывести соответствующее сообщение функция DOS завершения программы завершить программу |
Таким образом вы добавили в программу два очень важных новых средства: возможность ввода и принятие решений. Эта программа запрашивает у вас, является ли вводимое время временем после полудня, воспринимая ответ (один символ) с клавиатуры. Если таким ответом будет буква Y в верхнем или нижнем регистре (что означает ответ ДА), то программа выводит сообщение "Здравствуйте!", в противном случае выводится сообщение "Доброе утро!". В данной программе имеются все основные элементы полезной программы: ввод из информации внешней среды, обработка данных и принятие решения.
Сохраните эту модифицированную программу на диске. После этого заново ассемблируйте и скомпонуйте программу, как в предыдущем примере. Запустите ее снова, введя hello в ответ на подсказку DOS. Выведется сообщение:
Это время после полудня? (ДА/НЕТ) - [Y/N]
Курсор будет мерцать у последнего символа в ожидании ввода ответа. Нажмите Y. Программа ответит:
Здравствуйте!
Таким образом HELLO.ASM стала теперь интерактивной программой с принятием решений.
В ходе ассемблирования вы, конечно, получите различные сообщения об ошибках из-за неправильного набора программы и ошибках в синтаксисе. Турбо Ассемблер перехватывает такие ошибки, сообщая о них. Выводимые сообщения об ошибках разбиваются на две категории: предупреждения и ошибки. Если Турбо Ассемблер обнаруживает что-то подозрительное, но необязательно неверное, он выводит предупреждающее сообщение. Иногда предупреждающие сообщения можно игнорировать, но всегда лучше их проверить и убедиться в том, что вы понимаете суть проблемы. При обнаружении чего-либо явно неправильного в вашей программе, что делает невозможным завершение ассемблирования и формирование объектного файла, Турбо Ассемблер выводит сообщение об ошибке.
Другими словами, предупреждающие сообщения не свидетельствуют о критических ошибках, в то время как ошибки, о которых говориться в сообщениях об ошибках, должны быть исправлены перед запуском программы. В Приложении E содержится перечень сообщений об ошибках и предупреждающих сообщений.
Как и любой язык программирования, Турбо Ассемблер не может распознавать ошибки в логике программы. Турбо Ассемблер только сообщает вам, может ли ваш ассемблируемый код быть выполнен в том виде, как он введен, но он не может сделать вывод о том, будет ли программа работать так, как вы этого хотите. Об этом можете судить только вы сами.
Чтобы получить распечатку программы (вывести ее на устройство печати), обратитесь к руководству по редактору текстов. Исходные файлы Турбо Ассемблера представляют собой обычные текстовые файлы в коде ASCII (американский стандартный код обмена информацией), поэтому вы можете также напечатать исходный текст программы на Ассемблере с помощью команды PRINT, введя ее в ответ на подсказку операционной системы DOS.
1 2 3 4 5 6 7 8
8 8 8
| |