Создание программы на языке ассемблера
В отличие от языков программирования высокого уровня, язык
ассемблера поставляется без среды разработки программ. Поэтому
разработчику приходится самостоятельно контролировать весь процесс
создания программы. Для языка ассемблера этот процесс включает в себя
следующие этапы:
- Постановка задачи (точное и подробное описание
функциональности будущей программы, а также описание всех входных и
выходных данных и способа их передачи программе);
- Разработка алгоритма программы (построение блок схемы, граф-схемы или текстовое или математическое описание решения);
- Формализация алгоритма (запись алгоритма на языке программирования).
Создание текстового файла программы с расширением .asm (например my.asm ).
Отсутствие среды разработки позволяет программисту самостоятельно
выбрать текстовый редактор для написания кода программы. Для этой цели
подойдет любой текстовый редактор с нумерацией строк, мы рекомендуем
редактор, встроенный в оболочку "FAR Manager". - Компиляция программы;
Компиляция - процесс перевода программы из текстового вида в
машинный код. При использовании компилятора фирмы Borland необходимо
выполнить:
tasm my.asm
т.е. запускаем компилятор tasm и передаем с командной
строки имя файла, содержащего программу. Если программа имеет
синтаксические ошибки, компилятор выдаст сообщение об ошибке с указанием
номера строки и описанием для каждой ошибки (нужно вернуться на этап №3
и исправить синтаксические ошибки).
В случае успешной компиляции будет создан файл, содержащий объектный код программы my.obj , который ещё не является исполняемым модулем. - Компоновка программы;
Компоновка - создание из файла объектного кода исполняемого модуля.
tlink my.obj
В качестве параметра компоновщик tlink принимает имя файла содержащего объектный код программы (в нашем случае - my.obj ). В случае успешной компоновки будет создан исполняемый модуль my.exe - Запуск и тестирование исполняемого модуля программы.
На данном этапе необходимо проверить, соответствует ли написанная
программа постановке задачи, сделанной нами на этапе №1. Неправильная
работа программы говорит об алгоритмической ошибке (семантическая
ошибка), поэтому для успешного её устранения нужно вернуться на этап
разработки алгоритма (этап №2).
Написание первой программы на языке ассемблера
- Постановка задачи. Написать программу, которая выводит на экран строчку "Привет!".
- Разработка алгоритма программы. Алгоритм линейный, разработки не требует.
- Формализация (запись) алгоритма
В текстовом редакторе создаем файл privet.asm и записываем в него следующий код (без номеров строк) :
1 |
|
data segment |
;описание сегмента данных |
2 |
|
|
mes db 'Привет!$' |
;строка для вывода на экран. '$' - признак конца строки |
3 |
|
data ends |
;конец сегмента данных |
4 |
|
|
|
|
5 |
|
code segment |
;начало сегмента кода |
6 |
|
start: |
;метка start - начало нашей программы |
7 |
|
|
assume cs:code, ds: data |
;директива компилятора |
8 |
|
|
mov ax, data |
;настройка сегмента данных |
9 |
|
|
mov ds, ax |
|
10 |
|
|
|
|
11 |
|
|
mov ah, 9 |
;функция №9 - вывод строки на экран |
12 |
|
|
lea dx, mes |
;берём адрес строки |
13 |
|
|
int 21h |
;вызов прерывания для вывода строки |
14 |
|
|
|
|
15 |
|
|
mov ax, 4c00h |
;функция завершения программы |
16 |
|
|
int 21h |
;завершаем программу |
17 |
|
code ends |
;конец сегмента кода |
18 |
|
end start |
;конец программы с точкой входа start |
- Компиляция программы
tasm privet.asm
- Компоновка программы
tlink privet.obj
- Запуск и тестирование
privet.exe
Описание программы privet.asm
Строки 1 - 3 программы privet.asm содержат описание сегмента данных. Сегмент данных - область память, в которой будут храниться данные для наших программ.
Строки 5 - 17 — это код программы, её исполняемая часть.
В 8 и 9 строках выполняется настройка сегмента данных программы.
Строки 11 - 13 — вывод строки на экран при помощи функции №9
прерывания 21h (подробнее о функциях и работе с ними на следующей
лабораторной работе).
15 и 16 строки — стандартное завершение программы.
После символа ';' пишутся комментарии, они не обрабатываются компилятором.
Переход на новую строку
Для организации перехода на новую строку достаточно вывести на экран
символы перевода строки и возврата каретки (CR/LF). Эти символы имеют
коды 10 и 13. Если в нашей программе необходимо после вывода строки
перейти на новую, то для этого достаточно переписать вторую строку
программы:
mes2 db 'Выводим строку и переходим на новую...', 10, 13, '$'
Переход на новую строку можно выполнить и до вывода сообщения на экран:
mes3 db 10, 13, 'Выводим с новой строки...$'
Задание для выполнения
Написать программу, которая выводит одно под другим следующие сообщения:
Привет!
Меня зовут компьютер!
До свидания!
|