Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Турбо Ассемблер / Использование Турбо Ассемблера /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Начало работы на Турбо Ассемблере - Программирование от RIN.RU
Начало работы на Турбо Ассемблере



Что происходит?


Теперь, когда вы получили и выполнили программу 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  Обсудить в чате

8  В тему

Использование директив и параметров

Общие принципы программирования

Объектно-ориентированное программирование

Использование выражений и значений идентификаторов

Директивы выбора процессора

Использование моделей памяти программы и сегментации

Определение типов данных

Задание и использование счетчика адреса

Описание процедур

Управление областью действия идентификаторов

Определение данных

Расширенные инструкции

Использование макрокоманд

Использование условных директив

Интерфейс с компоновщиком

Генерация листинга

Интерфейс Турбо Ассемблера и Borland C++

Интерфейс Турбо Ассемблера с Турбо Паскалем

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь