
- •Практическое задание №1 Представление данных в эвм. Кодирование данных в эвм
- •Практическое задание №2 Принцип представления чисел в позиционных системах счисления
- •Практическое задание №3 Перевод из двоичной системы счисления в шестнадцатеричную (восьмеричную) и из шестнадцатеричной (восьмеричной) в двоичную. Умножение и деление двоичных чисел
- •Практическое задание № 4 Контрольная работа
- •Примечание: Таблицы asciIпредставлены в предыдущей практической работе. Практическое задание №5 Аппаратные средства персональных компьютеров
- •Практическое задание №6 Подключение оборудования к системному блоку и изучение компонентов системного блока
- •Практическое задание №7 Начало работы на языке ассемблера Цель работы:
- •Практическое задание №8 Директивы языка ассемблера
- •Практическое задание №9 Арифметические операции Битовые команды
Практическое задание №8 Директивы языка ассемблера
Цель работы:
ознакомление со структурой программы на ассемблере;
дать понятие о директивах определения данных;
директивы DATA, CODE, Mode.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Программа на ассемблере представляет собой совокупность блоков памяти, называемых сегментами памяти. Программа может состоять из одного или нескольких таких блоков-сегментов. Каждый сегмент содержит совокупность предложений языка, каждое из которых занимает отдельную строку кода программы.
Предложения ассемблера бывают четырех типов:
команды или инструкции, представляющие собой символические аналоги машинных команд. В процессе трансляции инструкции ассемблера преобразуются в соответствующие команды системы команд микропроцессора;
макрокоманды — оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями;
директивы, являющиеся указанием транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении;
строки комментариев, содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.
Формат директивы |
Назначение |
.CODE [имя] |
Начало или продолжение сегмента кода |
.DATA |
Начало или продолжение сегмента инициализированных данных. |
.STACK [размер] |
Начало или продолжение сегмента стека модуля. Параметр [размер] задает размер стека. |
При использовании директивы MODEL транслятор делает доступными несколько идентификаторов, к которым можно обращаться во время работы программы, с тем, чтобы получить информацию о тех или иных характеристиках данной модели памяти.
Директивы определения сегментов .STACK, .CODE и .DATA определяют, соответственно, сегмент стека, сегмент кода и сегмент данных. Например, директива:.STACK 200hопределяет стек размером в 200h (512) байт.
.CODE отмечает начало сегмента кода.
.CODE указывает Турбо Ассемблеру, в какой именно сегмент надо поместить ваши инструкции.
Директивы определения данных позволяют определить переменные в памяти различного размера:
DB - 1 байт DW - 2 байта = 1 слово DD - 4 байта = 1 двойное слово DQ - 8 байт = 1 четвертное слово DT - 10 байт
Задание: 1. Создайте файл с именем Lab8.asm. (Программно этот код практически ни чем отличается от Lab7.asm, но будет хорошо, если вы дополните егокомментариями).
.ModelSmall ; Модель памяти ближнего типа
.Stack 100h ; Определяет стек размеро100h
.Data ; Начало сегмента данных
HelloDB ‘Laboratornayarabota №6 !$’; Зарезервировалипамять для переменной Hello
.Code ; Начало сегмента кода
Start:
Movax,@DATA ; Формирование адреса сегмента
Movds,ax ;данных
LeaDX,Hello ; Установитьв DX адрес переменной Hello
Movah,09h ; ФункцияDOCвывода строки
Int 21h ; Вывод строки на экран
Movah,1h
Int 21h ; Вывод строки на экран
Movax,4C00h ; Функция DOC завершения
Int 21 ; программы
ENDstart ; конец программы
2. Создайте исполняемый файл Lab8.EXE, выполнив ассемблирование и компоновку файла. 3. Войдите в директорию cлабораторной работой (ПЗ7), в ней создайте файл с именем Lab71.asm. Введите текст следующей программы (без комментариев).
.ModelSmall
.CODE
Org 100h
Begin:
Jmpstart
Hello DB ‘Hello!$’
Start:LEA DX,Hello
Movah,09h
Int 21h
Movah,1h
Int 21h
Movah,4ch
Moval,00h
Int 21h
ENDbegin
3.1Создайте исполняемый *.comфайл Lab71.com, выполнив ассемблирование и компоновку файла Lab71.asm. При компоновке наберите TLINK/t Lab71.
4. Напишите отчет о директивах ассемблера.
5. Продемонстрируйте работающие программы Lab8.exe, Lab71.com 6. Показать работа двух программ в Турбоотладчике 7. Напишите в отчете основные отличия в создании и структуре *.com и *.exe файлов.
Контрольные вопросы:
Какую структуру имеет программа на языке ассемблера?
Какого вида предложения бывают в исходном коде на ассемблере?
Модели памяти директива Model.
Расскажите разницу между директивами .Code, .Data и .Stack?
Какие директивы определения данных существуют, их отличия и применение?
Создание .com и .exe, их структурное отличие на примере сегментов памяти?