- •Практическая работа № 7.
- •2) Lds и les (Load ds и Load es) — команды загрузки адреса, состоящего из двух слов, в пару регистров (сегментный регистр и, чаще всего, базовый).
- •2) Loope (loopz) — выполнять цикл пока нуль, выход по «не нулю».
- •3) Loopne (loopnz) — выполнять цикл пока не 0, выход по «нулю»
- •Пример программы Таблица 3.5
- •Контрольные вопросы
- •Практические задания
Пример программы Таблица 3.5
Символическая запись |
Коммен- тарий |
IP |
Машинное представление |
|||||
|
|
|
2-й код |
16-й код |
||||
MOV CX,[31A4h]; |
CX = k |
0100 |
10001011 00001110 10100100 00110001 |
8B 0E A4 31 |
||||
SUB AX,AX; |
S = 0 |
0104 |
00101001 11000000 |
29 C0 |
||||
MOV SI,AX; |
i = 0 |
0106 |
10001011 11110000 |
8B F0 |
||||
CYC: ADD AX,[SI+31A6h]; |
S = S+a[i] |
0108 |
00000011 10000100 10100110 00110001 |
03 84 A6 31 |
||||
ADD SI,2; |
i = i+1 |
010C |
10000011 11000110 00000010 |
83 C6 02 |
||||
DEC CX; |
l = l+1 |
010F |
01001001 |
49 |
||||
JNZ CYC; |
перейти, если l = 0 |
0110 |
01110101 11110110 |
75 F6 |
||||
MOV [3000h],AX; |
SUM = S |
0112 |
10100001 00000000 00110000 |
A1 00 30 |
Контрольные вопросы
Какая структура представления данных является массивом?
Что определяет упорядоченность элементов массива?
Как располагается в памяти одномерный массив? Двумерный?
Какая структура хранения соответствует одномерному массиву?
Какие локализовать i-тый элемент одномерного массива (общая формула)?
Какие локализовать i-тый элемент двумерного массива (общая формула)?
Какие режимы адресации можно использовать для обращения к i-му элементу массива?
В чем отличие размещения в памяти одномерного и двумерного массивов?
Что определяет начальный адрес массива в памяти?
Напишите команды, составляющие тело цикла для инкремента массива слов array1 с использованием косвенной адресации без смещения.
Напишите команды, образующие тело цикла для декремента каждого четвертого байта последовательности данных array2, с использованием косвенной адресации со смещением и без смещения.
Каким образом можно загрузить в регистр исполнительный адрес операнда?
Практические задания
Задание 1.
Описать одномерный массив для нечетных вариантов как MAS1 dw (перечислить 10 элементов),
для четных вариантов – как MAS2 db (перечислить 20 элементов).
Составить последовательность команд процессора для выполнения следующих действий:
определить среднее арифметическое элементов одномерного массива;
подсчитать количество четных элементов одномерного массива;
подсчитать количество положительных элементов в одномерном массиве;
заменить нулевые элементы одномерного массива единицами;
найти сумму нечетных элементов одномерного массива;
переставить в обратном порядке элементы одномерного массива;
найти среднее арифметическое четных элементов одномерного массива;
заменить первый четный элемент одномерного массива числом три;
заменить нечетные элементы одномерного массива числом два;
найти сумму четных элементов одномерного массива;
подсчитать количество отрицательных элементов в одномерном массиве;
найти последний нечетный элемент одномерного массива;
подсчитать количество нулевых элементов одномерного массива;
определить индекс первого отрицательного элемента одномерного массива;
найти среднее арифметическое нечетных элементов одномерного массива.
Задание 2.
Получить машинные коды используемых команд LEA и LOOPx.