МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Tasm /z /zi /n hello_1 hello_1 hello_1





ЛАБОРАТОРНАЯ РАБОТА N1

Изучение основ программирования на языке

Ассемблера

Цель работы

Практическое овладение навыками составления простейших программ на языке Ассемблера и работы с программами TASM и TLINK.

 

2. Рекомендуемая литература

Assembler. Учебник для вузов. 2-е изд. /В. И. Юров – СПб.: Питер, 2004. с.121…141.

К. Г. Финогенов. Основы языка Ассемблера. – М.: Радио и связь, 2000. с. 22…31.

Абель П. Язык Ассемблера для IBM PC и программирования /Пер. c англ.- М.:Высш.шк., 1992.с 51…75.

Уокерли Дж. Архитектура и программирование микро-ЭВМ: В 2-х книгах. Пер. с англ.-М.: Мир, 1984.-Кн. 2. с 215…284.

Белецкий Я. Энциклопедия языка Си: Пер. c польск.-М.:Мир,1992.с 218…229, 233, 665, 669.

 

Подготовка к работе

3.1. Изучить методические указания и рекомендованную литературу.

3.2. Подготовить ответы на контрольные вопросы.

 

4. Контрольные вопросы

4.1. Команды и директивы ассемблера. Формат и отличия.

4.2. Какова цель сегментации памяти?

4.3. Что такое базовый адрес сегмента?

4.4. Какие значения может принимать базовый адрес сегмента?

Каков максимальный размер сегмента и почему?

4.5. Какие типы сегментов использует ассемблерная программа?

4.6. Какими директивами описывается сегмент?

4.7. Как описываются различные типы данных, используемые программой?

4.8. Каково назначение директивы ASSUME?

4.9. В чем заключается инициализация сегментных регистров?

4.10. Что такое ассемблирование и компоновка программы?

4.11. Стандартное начало и окончание сегмента кодов.

4.12. Каково содержание файлов с расширениями *.ASM, *.LST, *.OBJ, *.MAP, *.EXE?

4.13. Метка и имя директивы. Назначение и отличия.

4.14. Для чего требуется помечать начальную команду программы меткой?

4.15. Как завершается исходный модуль программы?

 

Задание на выполнение работы

5.1. На диске С создать папку (каталог) с именем «Ваша фамилия»[1]: С: \USER \Ваша фамилия. Скопировать в созданную папку файлы Турбо Ассемблера tasm.exe, tlink.exe и td.exe из папки TASM.

5.2. Используя текстовый редактор, создать и отредактировать исходный модуль программы hello_1.asm, текст которого приведен ниже.

 

;Program Hello_1- Ваша первая программа
Data SEGMENT ; Открыть сегмент данных
Greet DB 'Hello, My friends!', 13, 10, '$' ;Определить строку симво- ;лов с именем Greet
Data ENDS ;Закрыть сегмент данных
Ourstack SEGMENT Stack ;Открыть сегмент стека
DB 100h DUP (?) ;Отвести под стек 256 байт
Ourstack ENDS ;Закрыть сегмент стека
ASSUME CS:Code, DS:Data, SS:Ourstack ;Назначить сегментные ;регистры
Code SEGMENT ;Открыть сегмент кодов
Start: mov AX, Data ;Инициализировать
mov DS, AX ;сегментный регистр DS
mov AH, 09h ;Вывести строку Greet
mov DX, OFFSET Greet ;на экран с помощью
int 21h ;DOS
mov AL, 0 ;Завершить программу
mov AH, 4Ch ;с помощью
int 21h ;DOS
Code ENDS ;Закрыть сегмент кодов
END Start ;Конец исходного модуля.

 

 

5.3. Используя компилятор Турбо Ассемблера tasm.exe создать файлы hello_1.obj и hello_1.lst. Просмотреть на экране тексты созданных файлов hello_1.obj и hello_1.lst. и проанализировать их.

5.4. Используя компоновщик tlink.exe создать файлы hello_1.exe и hello_1.map. Вывести на экран файлы hello_1.exe и hello_1.map и проанализировать их.

5.5. Убедиться в работоспособности программы hello_1.

5.5. Создайте для ускорения процесса ассемблирования и компоновки командный файл с любым именем с расширением bat (*.bat). Для этого в текстовом редакторе NC наберите текст, состоящий из последовательности выполняемых команд DOS:



 

Tasm /z /zi /n hello_1 hello_1 hello_1

Tlink /v hello_1

 

Удалите из текущего каталога все файлы hello_1 кроме исходного и проверьте работоспособность созданного командного файла.

5.6. Создайте универсальный командный файл *.bat, который можно использовать для ассемблирования и компоновки любой создаваемой Вами программы. Для этого в созданном командном файле вместо имени файла следует набрать символы %1:

 

tasm /z /zi /n %1 %1 %1

tlink /v %1

 

Для его запуска нужно в командной строке после имени командного файла (без расширения) указать имя Вашего исходного модуля без расширения. Проверьте его работоспособность.

5.7. Внести изменения в программу hello_1, которые заставят ее выводить на экран еще одну строку текста «My name Ваша фамилия». Для этого создайте новый исходный модуль hello_2.asm, выполните ассемблирование и компоновку, после чего убедитесь в работоспособности программы.

5.8. Отчитаться о проделанной работе.

5.9. Составьте отчет, который должен содержать:

- распечатку текста исходного модуля и всех файлов, созданных в процессе ассемблирования и компоновки для программ hello_1 и hello_2 с комментариями: *.asm, *.obj, *.lst, *.map, *.exe;

- список команд, использующихся для ассемблирования и компоновки;

- тексты созданных командных файлов *.bat с комментариями;

 

ОБЩИЕ СВЕДЕНИЯ

6.1. Несмотря на то, что современные языки программирования высокого уровня обеспечивают не только удобное, но и эффективное системное программирование, в тех случаях, когда особенно важно получить оптимальный объектный код, целесообразно использовать Ассемблер. Ассемблер представляет собой машинный язык в символической форме, которая достаточно понятна и удобна программисту.

Полный цикл создания программы на Ассемблере можно представить в виде последовательности четырех этапов, показанных на рисунке 1.1.

 

Рисунок 1.1 – Этапы создания Ассемблерной программы.

 

Исходный модуль программы создается в любом текстовом редакторе, например в «Блокноте» или «NCEDIT» и сохраняется в виде файла с именем, присвоенным по правилам MS DOS, с обязательным расширением asm. Для нашей первой программы это будет hello_1.asm.

Для получения исполняемого модуля, который можно запустить на выполнение, требуется последовательно выполнить этапы ТРАНСЛЯЦИИ и КОМПОНОВКИ. Для этого используются программы, входящие в состав пакета ассемблера Turbo Assembler (TASM) фирмы Borland.

Трансляция производится с помощью компилятора[2] Турбо Ассемблера, который является исполняемой программой tasm.exe, работающей в режиме командной строки. Он вызывается командой DOS:

 

tasm / z/ zi/ n имя файла имя файла имя файла,

 

где /z – ключ, разрешающий вывод на экран строк исходного текста программы, в которых ассемблер обнаружил ошибки;

/zi – ключ, управляющий включением в результирующий файл полных сведений о номерах строк и именах исходного модуля;

/n – ключ, который исключает из листинга информацию о символических обозначениях в программе.

Следующие далее параметры определяют имена файлов исходного (*.asm), объектного (*.obj) и листинга (*.lst). Причем в командной строке достаточно указать только имена файлов, без расширений, например

 

Tasm /z /zi /n hello_1 hello_1 hello_1

 

Если исходный модуль не содержит ошибок, то на экран выводится сообщение об успешной трансляции, а в текущем каталоге появится новые файлы – объектный (hello_1.obj) и листинга (hello_1.lst).

Компоновка объектных модулей с библиотечными модулями производится вызовом компоновщика tlink.exe из командной строки:

 

Tlink /v имя файла

Ключ /v передает в загрузочный файл информацию, используемую при отладке программ.

Следующее далее имя файла обозначает имя объектного модуля. Расширение в этом имени можно не указывать.

Для нашего примера компоновка будет осуществляться следующей командой:

 

Tlink /v hello_1

В случае успешного окончания компоновки в текущем каталоге появляется исполняемый файл – загрузочный модуль hello_1.exe, и файл карты сборки hello_1.map.

Загрузочный модуль может быть запущен на выполнение командой DOS

 

hello_1.exe.

 

Результат работы Вашей первой программы можно увидеть, если убрать с экрана панели Norton Commander клавишами ctrl+O.

Для отладки создаваемых программ используется программа-отладчик Turbo Debugger (td.exe) фирмы Borland.

 

6.2. Исходный модуль программы на Ассемблере - последовательность строк, содержащих командные операторы и директивы, представляемая как функциональная единица для дальнейшей обработки. Исходный модуль создается текстовым редактором и хранится в виде файла с расширением *.asm.

Командные операторы или просто команды имеют следующий формат:

 

[метка:] мнемоника [операнд(ы)] [;комментарий]

 

- метка – определяемое пользователем имя команды, заканчивающееся двоеточием. Значением метки является адрес отмеченной команды. Используются для организации команд передачи управления. Метка состоит из последовательности символов или цифр, однако всегда начинается с символов английского алфавита или с символов @, _,?.

- мнемоника –мнемоническое обозначение команды, которое представляет собой ключевые слова Ассемблера и идентифицирует выполняемую командой операцию. Обычно используются сокращенные английские слова, передающие смысл команды.

- операнд(ы) – объекты, которые участвуют в указанной операции. Это могут быть адреса данных или непосредственно сами данные, необходимые для выполнения команды. Команды могут быть двух, одно и безоперандными. Если операндов два, то они разделяются запятой.

- комментарий – начинается с точки с запятой и предназначен для пояснения к программе. Может выполняться на русском языке, так как не влияет на выполнение программы.

Метка, мнемоника и операнд(ы) разделяются по крайней мере одним пробелом друг от друга.





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.