Лабораторная работа 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. Подготовка к работе
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. Задание на выполнение работы
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.9. Составьте отчет, который должен содержать:
распечатку текста исходного модуля и всех файлов, созданных в процессе ассемблирования и компоновки для программ hello_1 и hello_2 с комментариями: *.asm, *.obj, *.lst, *.map, *.exe;
список команд, использующихся для ассемблирования и компоновки;
тексты созданных командных файлов *.bat с комментариями;