Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Практическая работа №1
Создание программы на языке Ассемблер.
Трансляция, компоновка, отладка программ.
Цель работы: ознакомление с принципами работы транслятора кодов, компоновщика связей и отладчика программ; получение навыков работы с транслятором Turbo Assembler TASM для архитектуры x86 совместимых микропроцессоров, компоновщиком Turbo Linker, отладчиком Turbo Debugger.
Краткие теоретические сведения
Машинный код – это набор чисел, которые интерпретируются центральным процессором компьютера и определяют выполняемые им действия. Машинный код состоит исключительно из двоичных чисел.
Язык ассемблера состоит из набора операторов, понятных человеку. Язык ассемблера однозначно связан с машинным кодом, т. е. каждый оператор языка ассемблера соответствует одной команде машинного кода.
Язык ассемблера тесно связан с архитектурой процессоров определенного семейства, т. о. он является не переносимым.
Turbo Assembler (TASM) — программный пакет компании Borland, предназначенный для разработки программ на языке ассемблера для архитектуры x86. Кроме того, TASM может работать совместно с трансляторами с языков высокого уровня фирмы Borland, такими как Turbo C и Turbo Pascal.
Пакет TASM поставляется вместе с компоновщиком Turbo Linker и порождает код, который можно отлаживать с помощью Turbo Debugger.
Исходную программу, написанную на языке ассемблера, нельзя непосредственно запустить на компьютере. Сначала ее нужно оттранслировать или, как говорят, ассемблировать в исполняемый код. По сути, программа ассемблер выполняет функции компилятора.
В результате работы ассемблера исходный текстовый файл преобразовывается в бинарный файл, называемый объектным файлом и содержащий машинный код. Непосредственно объектный файл нельзя запустить на выполнение. Его нужно "пропустить" через еще одну программу, называемую компоновщиком (linker) или редактором связей (linkage editor), которая как раз и создает исполняемый файл. Именно этот файл и можно запустить на выполнение из командной строки операционной системы MS DOS и Windows.
Процесс редактирования исходного ассемблерного файла (т. е. написания программы), его компиляции, компоновки и выполнения схематически показан на рисунке 1. Ниже приведено подробное описание каждого этапа.

Рисунок 1.1 - Схематическое изображение цикла трансляции, компоновки и выполнения
1. С помощью текстового редактора программист создает исходный текстовый файл (sourcefile), содержащий программу на ассемблере.

Рисунок 1.2 – Пример программы сложения двух чисел
2. На вход программы ассемблера подается исходный файл, а на выходе получается объектный файл, содержащий машинный код. В качестве дополнительной возможности, ассемблер может создать файл листинга (listing file) программы. Если при компиляции возникнут ошибки, программист должен вернуться к п. 1 и устранить причину их появления. Файл листинга программы предназначен, в основном, для получения твердой копии программы принтере. Поэтому, кроме текста самой программы, разбитого на страницы, в нем содержатся номера строк, адреса команд (точнее, их смещений относительно сегмента кода), оттранслированный машинный код, представленный в шестнадцатеричном виде, и таблица символов.
3. Содержимое объектного файла анализируется компоновщиком. Он определяет, есть ли в программе так называемые внешние ссылки, т. е. содержит ли программа команды вызова процедур, находящихся в одной из библиотек объектных модулей (link library). Компоновщик находит эти ссылки в объектном файле программы, копирует необходимые процедуры из библиотек, объединяет их вместе с объектным файлом (этот процесс называется разрешением внешних ссылок) и создает исполняемый файл (executable file). В качестве дополнительной возможности компоновщик может создать файл перекрестных ссылок (тар file), содержащий план полученного исполняемого файла.
4. Компонент операционной системы, называемый загрузчиком (loader), считывает данные из исполняемого файла, загружает программу в память и передает управление по адресу точки входа. В результате программа начинает выполняться.
Выполнение работы:
1) Создать в любом pедактоpе пpогpамму на ассемблеpе т. е. символьный файл - исходный модуль. Имя файла может иметь pасшиpение - .ASM.
2) Файл с pасшиpением. ASM стpанслиpовать т. е. набpать на клавиатуpе в командной строке:
TASM Имя файла. ASM /Z
После тpансляции на экране появится сообщение:
Assembling file: транслируемый файл.
Error messages: сообщения об ошибках. (None - нет ошибок)
Warning messages: предупреждающее сообщение.
Passes: количество страниц.
Remaining memory: занимаемая память.
Результатом работы транслятора будет файл с расширением - .OBJ - объектный модуль.
3) Странслированный без ошибок файл необходимо обработать компоновщиком, т. е. набрать на клавиатуре:
TLINK Имя файла. OBJ

Рисунок 1.3 – пример запуска транслятора и редактора связей
Результатом будет файл с расширением. EXE или. COM - загрузочный модуль. Эти программы готовы к выполнению на ЭВМ. Их имена можно набрать на клавиатуре и нажать Enter. Выполнение команд программы можно посмотреть в отладчике.
4) Для работы в отладчике необходимо иметь программу с расширением. EXE или. COM. Набрать на клавиатуре:
TD Имя файла. EXE
Задание на практическую работу:
1. Реализация программы сложения двух чисел:
Набрать ассемблерный код программы, реализованной на рисунке 1.2. Транслировать ассемблерный код. В случае нахождения ошибок – устранить их и повторить трансляцию. Скомпоновать программу редактором связей. Запустить программу в отладчике, в случае обнаружения ошибок в работе программы исправить их (при необходимости повторить п. п.3, 4) Показать работу программы преподавателю2. Реализация программы сложения трёх чисел:
Узнать у преподавателя вариант работы. Составить программу сложения трех чисел на языке Ассемблер согласно требованиям:- Значения слагаемых определяется согласно варианту из таблицы 1.1.
Транслировать ассемблерный код. В случае нахождения ошибок – устранить их и повторить трансляцию. Скомпоновать программу редактором связей. Запустить программу в отладчике, в случае обнаружения ошибок в работе программы исправить их (при необходимости повторить п. п.3, 4) Показать работу программы преподавателюТаблица 1.1 – данные для реализации согласно варианту
Вариант | Первое слагаемое | Второе слагаемое | Третье слагаемое |
1 | 1210 | A0A0h | 12 |
2 | 6654 | 6D0h | 12 |
3 | 545 | 55FFh | 12 |
4 | 200 | E310h | 12 |
5 | 15015 | 456h | 12 |
6 | 9999 | B63h | 12 |
7 | 10101 | 8CCh | 12 |
8 | 5555 | 4AAAh | 12 |
9 | 513 | DD33h | 12 |
10 | 1023 | E00Eh | 12 |
Содержание отчета по практической работе:
1. Титульный лист
2. Цель работы
3. Краткие теоретические сведения
4. Описание реализованных программ
5. Исходный ассемблерный код реализованных программ
6. Входные и выходные данные по программе.
7. Выводы по практической работе.


