Архитектура компьютера
Введение Теоретическая часть 1 Архитектура компьютера Лабораторный практикум 1 Создание программы на языке ассемблера 2 Применение функций DOS и BIOS 3 Линейные алгоритмы 4 Десятичная арифметика 5 Команды передачи управления 6 Циклы с условием 7 Циклы со счетчиком 8 Работа с массивами 9 Цепочечные команды Приложения 1 Таблица кодов символов ASCII 2 Функции DOS и BIOS Гостевая книга Лабораторная работа №1
Создание программы на языке ассемблера
В отличие от языков программирования высокого уровня, язык ассемблера поставляется без среды разработки программ. Поэтому разработчику приходится самостоятельно контролировать весь процесс создания программы. Для языка ассемблера этот процесс включает в себя следующие этапы:
- Постановка задачи (точное и подробное описание функциональности будущей программы, а также описание всех входных и выходных данных и способа их передачи программе);
- Разработка алгоритма программы (построение блок схемы, граф-схемы или текстовое или математическое описание решения);
- Формализация алгоритма (запись алгоритма на языке программирования).
Создание текстового файла программы с расширением.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, 'Выводим с новой строки...$'
Задание для выполнения
Написать программу, которая выводит одно под другим следующие сообщения:
Привет!
Меня зовут компьютер!
До свидания! © Истомин А.С. ЗабГГПУХостинг от uCoz