МегаПредмет

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

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

Обработка одномерных массивов на ассемблере





Лабораторная работа №2

 

Тема: Разработка программ на ассемблере. Обработка одномерных массивов.

 

Цель работы: Изучить этапы разработки программ на ассемблере. Научиться решать типовые задачи обработки одномерных массивов на ассемблере.

 

Разработка программы на ассемблере

Разработка программы на языке ассемблере включает в себя несколько этапов:

1) Подготовка исходного текста программы на ассемблере. Для набора и редактирования текста программы можно использовать любой текстовый редактор. Текст программы необходимо сохранить в файле с расширением *.asm.

2) Ассемблирование программы. Осуществляется с помощью программы – ассемблер (например, Tasm.exe). Ассемблер проверяет исходный текст программы на наличие ошибок, и если их нет, то создаст файл с расширением *.obj, который будет содержать объектный код. Если же ассемблер обнаружит в тексте программы ошибки, то процесс компиляции будет прерван, и на экран выводится сообщение об ошибке. В этом случае необходимо вернуться на первый этап и исправить ошибки в исходном тексте программы.

3) Компоновка программы. Осуществляется с помощью редактора связей (например, Tlink.exe). На этапе компоновки все объектные файлы и библиотеки собираются в один исполняемый файл с расширением *.exe, который содержит машинный код предназначенный для выполнения на микропроцессоре 8086.

4) Отладка программы. На данном этапе программист осуществляет тестирование своей программы с целью проверки правильности ее работы в соответствии с заданным алгоритмом. Для отладки программ на ассемблере используются программы – отладчики (например, Tdebug.exe).

 

Обработка одномерных массивов на ассемблере

 

Прежде чем начинать обработку массива, его сначала нужно разместить в памяти микропроцессорной системы. Для этого в ассемблере используется конструкция повторения. Директива DUP имеет следующий формат:

<имя массива> <тип данных> <количество элементов массива> DUP (начальное значение).

Рассмотрим примеры использования директивы DUP для создания массивов:

- X DB 10 DUP (0); создается массив байт с именем Х, состоящий из 10 элементов, с начальным значением всех элементов равным нулю.

- Y DW 30 DUP (?); создается массив слов из 30 элементов, с неопределенным исходным значением всех элементов.

- Z DB 10 DUP (5 DUP (?)); создается двухмерный массив, представляющий собой матрицу размером 10 на 5 элементов.

Для обращения к элементам массива в ассемблере микропроцессора 8086 используется модификация адресов. В качестве модификатора адреса в микропроцессоре 8086 можно использовать четыре регистра: BX, SI, DI и BP. Регистр ВР не рекомендуется использовать для обработки массивов, т.к. он по умолчанию адресует ячейки памяти в сегменте стека, а не в сегменте данных, где обычно располагаются все массивы. Если регистр используется в качестве модификатора, то он указывается в команде в квадратных скобках, например: MOV AX, X[BX]. В такой команде в регистр АХ будет считано содержимое ячейки памяти, адрес которой будет равен сумме адреса переменной Х и содержимого регистра ВХ: ADR = X+[BX]. Таким образом, для обращения к i-элементу массива, в команде необходимо указать имя массива, а в регистр модификатор необходимо записать номер элемента массива – число i. Первый элемент массива имеет номер – 0, а последний элемент массива – (N-1), где N – число элементов массива. Так как для индексирования элементов массива используется 16-разрядный регистр, то размер массива в микропроцессоре 8086 не может превышать 64 Кб (65536 элементов).



Обработку одномерных массивов на ассемблере разберем на следующем примере. Задан массив из 10 байт. Необходимо вычислить сумму элементов этого массива и поместить ее в регистр AL. Текст программы на ассемблере позволяющий решить данную задачу приведен ниже.

DOSSEG

.MODEL SMALL

.STACK 100h

.DATA

MAS1 DB 1,2,3,4,5,6,7,8,9,10; значения массива

.CODE

MOV AX, @DATA

MOV DS, AX; установить регистр DS, на начало сегмента данных

;----------------------------------------------

; начало обработки одномерного массива

MOV CX, 10; организуем цикл на 10

MOV SI, 0; обнуляем индексный регистр

MOV AL, 0; обнуляем регистр для хранения суммы элементов массива

M1: ADD AL, MAS1[SI]; вычисление суммы

INC SI; вычисление индекса следующего элемента массива

LOOP M1; конец цикла

;-----------------------------------------------

MOV AH, 4Ch; функция DOS завершения программы

INT 21h; завершить программу

END ; КОНЕЦ ПРОГРАММЫ

 





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