Практическая работа 8


Скачать 66.15 Kb.
Название Практическая работа 8
Тип Практическая работа
Практическая работа 8

«РАБОТА С ЭЛЕМЕНТАМИ ОДНОМЕРНОГО МАССИВА»

Цель и содержание методических указаний


Целью работы является закрепление теоретических знаний по разделу «архитектура набора команд» компьютера и получение практических навыков в программировании на Ассемблере под 32-разрядную Windows.

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

Теоретическая часть


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

.data

A DB 1,2,3,4,5,6,7,8 ;массив из 8 однобайтовых элементов

B DW 1,8,1024,4095 ;массив из 4 двухбайтовых элементов

CC DD +255,-100 ;массив из 2 четырёхбайтовых элементов

В памяти элементы массива располагаются последовательно, начиная с младшего элемента. Если элемент имеет размерность более одного байта, то согласно архитектуре little-endian по младшему адресу храниться младший байт числа. Это значит, что адресом элемента в памяти является адрес его младшего байта. Например, обратите внимание, что элемент В[1], равный 000816 в шестнадцатеричном представлении, храниться в памяти перевёрнутым как два байта 08 00 с последовательными адресами 0040300А и 0040300В.



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

LEA ESI,СС ;в регистр ESI заноситься адрес младшего байта нулевого

; элемента массива СС

Аналогично работает команда

MOV ESI,offset СС ;ESI= адрес мл. байта нулевого элемента массива СС
Если к этой величине прибавить размер элемента в байтах то получим адрес следующего элемента, и так далее.

ADD ESI,4 ;увеличение адреса на 4

Для обращения за элементом в ОП по этому адресу надо записать следующую формулу:

MOV EAX,[ESI] ;косвенно-регистровая адресация элемента массива CC

;EAX=содержимое ячейки ОП по адресу [ESI],

; размером 32 бит (как и регистр EАХ)



Или другой вариант

MOV ESI,0 ;ESI=0

MOV AX,A[ESI] ;AX= ОП [ESI,15÷0]

Для того, чтобы перебрать все элементы массива, требуется организовать цикл с количеством проходов, равным количеству элементов массива (аналогично конструкции for в Си, Паскале). Счётчиком цикла по умолчанию всегда является регистр ЕСХ. Если в него поместить величину, равную числу элементов, то по команде организации цикла в конце каждого цикла из регистра ЕСХ вычитается «1» и получившееся значение сравнивается с «0». Когда ЕСХ=0, цикл заканчивается, иначе организуется переход на начало цикла. Цикл while организуется с помощью команд условного перехода.

Далее приведён фрагмент кода программы, которая сортирует одномерный массив по возрастанию методом пузырька. Этот метод подразумевает несколько переборов всех элементов. В каждом переборе происходит многократное попарное сравнение всех соседних элементов массива. Перед началом каждого перебора флаг перестановки сбрасывается (становиться равным «0»). Если встречаются неупорядоченные пары, то элементы пары меняются местами и устанавливается флаг необходимости провести ещё один перебор. Процедура перебора повторяется до тех пор, пока флаг перестановки равен «1». Если после очередного перебора флаг остаётся нулевым, то сортировка заканчивается.

;стандартное начало программы
.data

прямая со стрелкой 1A DW 0,1,2,4,6,7,3 ;массив двухбайтовых элементов



.code



MOV DL,1 ;флаг перестановок установить в «1» для первичного входа в цикл перебора

WHILE1: MOV ECX,7-1 ;начало цикла while

MOV DL,0 ;сброс флага

LEA ESI,A ;загрузка в регистр ESI адреса массива (нулевого элемента)

FOR1: MOV AX,[ESI] ;загрузка в регистр АХ очередного элемента массива с адресом ESI

MOV BX,[ESI+2] ;загрузка в рег. ВХ след. по порядку элемента с адресом ESI+длина элемента (2)

CMP AX,BX ;сравнение пары элементов

JBE NEXT ;АХ≤ВХ тогда переход к следующей паре

правая фигурная скобка 2MOV [ESI],BX ; перестановка

MOV [ESI+2],AX ;

OR DH,1 ;установка флага

NEXT: INC ESI ;вычисление адреса нового элемента для перебора ESI=ESI+длина эл-та

INC ESI

LOOP FOR1 ;команда организации цикла попарных перестановок (со счётчиком ЕСХ)

OR DH,0 ;проверка флага

JNZ WHILE1 ;на начало цикла перебора «пока флаг≠0» (без счётчика)
;вывод результатов

;стандартное завершение работы программы

задание


  1. Создать свою программу prakt8.asm согласно варианту в редакторе Quick Editor пакета MASM, которая

  • выполняет заданные действия,

  • выводит на экран окно с результатами.

  1. Откомпилировать программу и запустить на исполнение (в случае безошибочной компиляции, иначе исправить синтаксические ошибки и провести повторную компиляцию и запуск).

  2. Отладить программу через OllyDbg, проследить изменения в регистрах.

  3. Ответить на вопросы для самопроверки.

варианты ЗАДАНИй

№ вар


Задание (целочисленные операции)



Найти минимальный и максимальный элемент массива и запомнить их номера, предусмотреть случай, когда все/несколько элементов равны.



Найти нулевой/ые элементы массива и запомнить их номера, предусмотреть случай, когда таких элементов нет.



Найти элементы массива, содержащие 2 единицы в двоичном представлении и запомнить их номера, предусмотреть случай, когда таких элементов нет.



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



Умножить каждый элемент массива на его номер.



Вычислить сумму всех элементов массива и запомнить её в заданной переменной.



Вычислить сумму всех отрицательных элементов массива и запомнить её в заданной переменной, предусмотреть случай, когда таких элементов нет.



Вычислить сумму всех элементов массива больше заданного числа и запомнить её в заданной переменной, предусмотреть случай, когда таких элементов нет.



Вычислить сумму всех чётных элементов массива и запомнить её в заданной переменной, предусмотреть случай, когда таких элементов нет.



Поменять местами элементы с чётными и нечётными номерами, предусмотреть случай, когда общее число элементов массива чётно и нечётно.



Поменять местами первый и последний элементы массива, второй и предпоследний, и т.д. предусмотреть случай, когда общее число элементов массива чётно и нечётно.



Поменять местами элементы массива, с произвольными номерами (заданы как переменные в памяти), предусмотреть случай, когда эти номера больше общего числа элементов массива.



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


  1. Как располагаются элементы массива в памяти компьютера?

  2. Как рассчитать адрес элемента с произвольным номером?

  3. Как организовать цикл для перебора всех элементов массива?

  4. Как организуется счётчик циклов?

  5. Как изменяется номер и адрес элемента массива в цикле?

Список литературы


  1. Нарваха Р. Введение в крэкинг с нуля, используя OllyDbg. (http://pro.dtn.ru/cr.html).

  2. Intel 64 and IA32-Architectures Software Developers Manual (с сайта intel.com)

  3. Гук М., Юров В. Процессоры Pentium III, Athlon и другие. – СПб.: Издательство «Питер», 2000.

  4. Юров В. Ассемблер. – СПб.: Издательство «Питер», 2002.

  5. Иванова Е.М. «Форматированный вывод числа – результата вычислений программы». Учебно-методическое пособие. Москва – МИЭМ ВШЭ, 2013.

Похожие:

Практическая работа 8 icon Практическая работа №12 72 Изучение холодильных шкафов 72 Практическая...
Ознакомление с оборудованием системы автоматизации ресторанной деятельности (r- keeper) 22
Практическая работа 8 icon Практическая работа №1 «Работа с нормативными документами»
...
Практическая работа 8 icon Практическая работа №1 «Расчет срока окупаемости капитальных вложений...
Практическая работа №2 «Задача выбора поставщика и ее решениена основе анализа полной стоимости»
Практическая работа 8 icon Практическая работа №1 «Технология строительства воздушных линий связи»
Практическая работа №9 «Технология ввода кабелей в здание атс. Оборудование шахт»
Практическая работа 8 icon Практическая работа 1 «Создание алгоритма разработки web-сайта»
Практическая работа 7-8 «Дополнительные элементы языка html для форматирования web-страниц»
Практическая работа 8 icon Практическая работа №1 «Изучение конструкции материнской платы»
Практическая работа №5 «Изучение принципа работы и характеристик жидкокристаллических дисплеев»
Практическая работа 8 icon Практическая работа №1 «Изучение организации бесперебойного питания пк»
Практическая работа №3 «Изучение типов современных процессоров и их характеристик»
Практическая работа 8 icon Практическая работа №1 «Изучение организации бесперебойного питания пк»
Практическая работа №3 «Изучение типов современных процессоров и их характеристик»
Практическая работа 8 icon Практическая работа №1 «Изучение методов конфигурирования сетей доступа»
Практическая работа №2 «Изучение методов отбора, подготовки и контроля линии под технологию adsl»
Практическая работа 8 icon Практическая работа №1 «Изучение принципов работы с системами счисления»
Практическая работа №3 «Изучение принципов построения и работы логических узлов эвм»
Практическая работа 8 icon Практическая работа №3 Ведение документации по охране труда 77 Практическая...
Рабочая тетрадь по выполнению практических и лабораторных работ по специальности 140101 Тепловые электрические станции
Практическая работа 8 icon Методические указания и практическая работа по дисциплине «Охрана труда»
Внутреннее расследование микротравм и опасных событий. Методические указания и практическая работа по дисциплине «Охрана труда»,...
Практическая работа 8 icon Практическая работа Содержание
Лабораторная работа: Оценка программно-аппаратных средств при переходе на Windows Vista 3
Практическая работа 8 icon Практическая работа №1

Практическая работа 8 icon Учебник для высшей школы Г. С. Абрамова практическая психология издательство...
Ii практическая зтика и практическая психология как профессиональная деятельность 19
Практическая работа 8 icon Практическая работа №1-4 «Обжаловать административное дело на юридические...


Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск