Скачать 66.15 Kb.
|
Практическая работа 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 A 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 ;АХ≤ВХ тогда переход к следующей паре MOV [ESI],BX ; перестановка MOV [ESI+2],AX ; OR DH,1 ;установка флага NEXT: INC ESI ;вычисление адреса нового элемента для перебора ESI=ESI+длина эл-та INC ESI LOOP FOR1 ;команда организации цикла попарных перестановок (со счётчиком ЕСХ) OR DH,0 ;проверка флага JNZ WHILE1 ;на начало цикла перебора «пока флаг≠0» (без счётчика) ;вывод результатов ;стандартное завершение работы программы задание
варианты ЗАДАНИй
Контрольные вопросы
Список литературы
|
Практическая работа №12 72 Изучение холодильных шкафов 72 Практическая... Ознакомление с оборудованием системы автоматизации ресторанной деятельности (r- keeper) 22 |
Практическая работа №1 «Работа с нормативными документами» ... |
||
Практическая работа №1 «Расчет срока окупаемости капитальных вложений... Практическая работа №2 «Задача выбора поставщика и ее решениена основе анализа полной стоимости» |
Практическая работа №1 «Технология строительства воздушных линий связи» Практическая работа №9 «Технология ввода кабелей в здание атс. Оборудование шахт» |
||
Практическая работа 1 «Создание алгоритма разработки web-сайта» Практическая работа 7-8 «Дополнительные элементы языка html для форматирования web-страниц» |
Практическая работа №1 «Изучение конструкции материнской платы» Практическая работа №5 «Изучение принципа работы и характеристик жидкокристаллических дисплеев» |
||
Практическая работа №1 «Изучение организации бесперебойного питания пк» Практическая работа №3 «Изучение типов современных процессоров и их характеристик» |
Практическая работа №1 «Изучение организации бесперебойного питания пк» Практическая работа №3 «Изучение типов современных процессоров и их характеристик» |
||
Практическая работа №1 «Изучение методов конфигурирования сетей доступа» Практическая работа №2 «Изучение методов отбора, подготовки и контроля линии под технологию adsl» |
Практическая работа №1 «Изучение принципов работы с системами счисления» Практическая работа №3 «Изучение принципов построения и работы логических узлов эвм» |
||
Практическая работа №3 Ведение документации по охране труда 77 Практическая... Рабочая тетрадь по выполнению практических и лабораторных работ по специальности 140101 Тепловые электрические станции |
Методические указания и практическая работа по дисциплине «Охрана труда» Внутреннее расследование микротравм и опасных событий. Методические указания и практическая работа по дисциплине «Охрана труда»,... |
||
Практическая работа Содержание Лабораторная работа: Оценка программно-аппаратных средств при переходе на Windows Vista 3 |
Практическая работа №1 |
||
Учебник для высшей школы Г. С. Абрамова практическая психология издательство... Ii практическая зтика и практическая психология как профессиональная деятельность 19 |
Практическая работа №1-4 «Обжаловать административное дело на юридические... |
Поиск |