ПОЗНАВАТЕЛЬНОЕ Сила воли ведет к действию, а позитивные действия формируют позитивное отношение Как определить диапазон голоса - ваш вокал
Игровые автоматы с быстрым выводом Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими Целительная привычка Как самому избавиться от обидчивости Противоречивые взгляды на качества, присущие мужчинам Тренинг уверенности в себе Вкуснейший "Салат из свеклы с чесноком" Натюрморт и его изобразительные возможности Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д. Как научиться брать на себя ответственность Зачем нужны границы в отношениях с детьми? Световозвращающие элементы на детской одежде Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия Как слышать голос Бога Классификация ожирения по ИМТ (ВОЗ) Глава 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 ; КОНЕЦ ПРОГРАММЫ |