Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 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.  Выводы по практической работе.