| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
Borland, 1991 г.; 2 - ассемблирован файл HELLO.ASM; 3 - сообщения
об ошибках: нет; 4 - предупреждающие сообщения: нет; 5 - число
проходов: 1; 6 - остается памяти: 266К
Если вы введете файл HELLO.ASM в точности так, как показано,
то вы не получите никаких предупреждающих сообщений или сообщений
об ошибках. Если вы получаете такие сообщения, они появляются на
экране наряду с номерами строк, указывающими строки, где содер-
жатся ошибки. При получении сообщений об ошибках проверьте исход-
ный код (текст) программы и убедитесь, что он выглядит точно так,
как исходный код в нашем примере, а затем снова ассемблируйте
программу.
Турбо Ассемблер 3.0/tasm/#1-2 = 23 =
Компоновка программы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
После ассемблирования файла HELLO.ASM вы продвинулись только
на один шаг в процессе создания программы. Теперь, если вы ском-
понуете только что полученный объектный код в выполняемый вид, вы
сможете запустить программу.
Для компоновки программы используется программа TLINK,
представляющая собой поставляемый вместе с Турбо Ассемблером ком-
поновщик. Введите командную строку:
TLINK HELLO
Здесь опять не требуется вводить расширение имени файла.
Компоновщик TLINK по умолчанию предполагает, что этим расширением
является расширение .OBJ. Когда компоновка завершится (самое
большее через несколько секунд), компоновщик автоматически прис-
воит файлу с расширением .EXE имя, совпадающее с именем вашего
объектного файла (если вы не определили другое имя). При успешной
компоновке на экране появляется сообщение:
Turbo Linker Version 3.0 Copyright (c) 1988, 1991 by Borland
International Inc.
В процессе компоновки могут возникнуть ошибки (в данной
программе это маловероятно). Если вы получили сообщения об ошиб-
ках компоновки (они выводятся на экран), измените исходный код
программы так, чтобы он в точности соответствовал тексту програм-
мы в приведенном выше примере, а затем снова выполните ассембли-
рование и компоновку.
Запуск вашей первой программы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Теперь программу можно запустить на выполнение. Для этого в
ответ на подсказку операционной системы DOS введите hello. На эк-
ран выведется сообщение:
Привет!
Пока это все. Вы только что создали и выполнили свою первую
программу на Ассемблере!.
Что происходит?
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Теперь, когда вы получили и выполнили программу HELLO.ASM,
давайте вернемся назад и рассмотрим подробно, что происходит с
момента ввода текста программы до ее выполнения.
Когда вы ассемблируете файл HELLO.ASM, Турбо Ассемблер прев-
ращает текст инструкций в этом файле в их двоичный эквивалент в
Турбо Ассемблер 3.0/tasm/#1-2 = 24 =
объектном файле HELLO.OBJ. Этот файл является промежуточным фай-
лом (промежуточным звеном в процессе перехода от текстового к вы-
полняемому файлу). Файл HELLO.OBJ содержит всю информацию, необ-
ходимую для создания выполняемого кода из инструкций, содержащих-
ся в файле HELLO.ASM, но она записана в виде, который позволяет
комбинировать ее с другими объектными файлами для создания одной
программы.
При компоновке файла HELLO.OBJ TLINK преобразует его в вы-
полняемый файл HELLO.EXE, который вы запускаете, введя hello в
ответ на подсказку DOS.
Теперь введите:
dir hello.*
При этом будет выведен список файлов HELLO на диске. Это будут
файлы HELLO.ASM, HELLO.OBJ, HELLO.EXE и HELLO.MAP.
Турбо Ассемблер 3.0/tasm/#1-2 = 25 =
Модификация вашей первой программы на Турбо Ассемблере
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Теперь снова войдем в редактор и модифицируем программу та-
ким образом, чтобы она могла воспринимать какие-то данные из
внешней среды (этой "внешней средой" будете вы, а вводимые данные
будут набираться на клавиатуре). Измените программу следующим об-
разом:
.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 ; установить регистр 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
Таким образом вы добавили в программу два очень важных новых
средства: возможность ввода и принятие решений. Эта программа
запрашивает у вас, является ли вводимое время временем после по-
Турбо Ассемблер 3.0/tasm/#1-2 = 26 =
лудня, воспринимая ответ (один символ) с клавиатуры. Если таким
ответом будет буква Y в верхнем или нижнем регистре (что означает
ответ ДА), то программа выводит сообщение "Здравствуйте!", в про-
тивном случае выводится сообщение "Доброе утро!". В данной прог-
рамме имеются все основные элементы полезной программы: ввод из
информации внешней среды, обработка данных и принятие решения.
Сохраните эту модифицированную программу на диске. После
этого заново ассемблируйте и скомпонуйте программу, как в преды-
дущем примере. Запустите ее снова, введя hello в ответ на подс-
казку DOS. Выведется сообщение:
Это время после полудня? (ДА/НЕТ) - [Y/N]
Курсор будет мерцать у последнего символа в ожидании ввода
ответа. Нажмите Y. Программа ответит:
Здравствуйте!
Таким образом HELLO.ASM стала теперь интерактивной програм-
мой с принятием решений.
В ходе ассемблирования вы, конечно, получите различные сооб-
щения об ошибках из-за неправильного набора программы и ошибках в
синтаксисе. Турбо Ассемблер перехватывает такие ошибки, сообщая о
них. Выводимые сообщения об ошибках разбиваются на две категории:
предупреждения и ошибки. Если Турбо Ассемблер обнаруживает что-то
подозрительное, но необязательно неверное, он выводит предупреж-
дающее сообщение. Иногда предупреждающие сообщения можно игнори-
ровать, но всегда лучше их проверить и убедиться в том, что вы
понимаете суть проблемы. При обнаружении чего-либо явно непра-
вильного в вашей программе, что делает невозможным завершение ас-
семблирования и формирование объектного файла, Турбо Ассемблер
выводит сообщение об ошибке.
Другими словами, предупреждающие сообщения не свидетельству-
ют о критических ошибках, в то время как ошибки, о которых гово-
риться в сообщениях об ошибках, должны быть исправлены перед за-
пуском программы. В Приложении E содержится перечень сообщений об
ошибках и предупреждающих сообщений.
Как и любой язык программирования, Турбо Ассемблер не может
распознавать ошибки в логике программы. Турбо Ассемблер только
сообщает вам, может ли ваш ассемблируемый код быть выполнен в том
виде, как он введен, но он не может сделать вывод о том, будет ли
программа работать так, как вы этого хотите. Об этом можете су-
дить только вы сами.
|
adfun.ru
|
|
|
|