Косвенная базовая индексная адресация со смещением
Адрес операнда вычисляется как сумма содержимого одного из базовых регистров BX или BP, одного из индексных регистров SI или DI и 8- или 16-разрядного смещения.
Примеры:
mov al,[bp][di+5]
mov bl,[array2+bx+si]
E[BX+5][SI-2]; DATA[BX][SI]; [BX+2][SI]
Примеры решения задач:
;программа, использующая косвенную индексную адресацию
;программа обнуления ячеек массива
s_s segment stack "stack"
dw 12 dup(?)
s_s ends
d_s segment
aa db 11,1,2,3,4,5,6,7,8,9 ;массив чисел
d_s ends
c_s segment
assume ss:s_s,ds:d_s,cs:c_s;
begin: mov ax,d_s
mov ds,ax;
mov cx, 10 ;задание количества ячеек массива
mov si,0 ;задание номера первого элемента массива
L1: mov aa[si],0 ; обнуление si-того элемента массива
inc si ; переход к следующему элементу массива
loop L1 ; команда зацикливания
mov ah,4ch
int 21h
c_s ends
end begin
Задание на практическую работу:
1. Реализация программы, использующей различные режимы адресации:
- Составить программу согласно условию:
В сегменте данных задана последовательность чисел X: 0, 1, 2, 3, 5, 6, 10. Скопировать ее в последовательность Y, при этом увеличив каждый из элементов на 2.
- Транслировать ассемблерный код. В случае нахождения ошибок – устранить их и повторить трансляцию.
- Скомпоновать программу редактором связей.
- Запустить программу в отладчике, в случае обнаружения ошибок в работе программы исправить их, повторить п.п.2, 3
- Показать работу программы преподавателю.
2. Реализация программы, использующей различные режимы адресации:
- Узнать у преподавателя вариант работы.
- Составить программу согласно условию и варианту (таблица 6.1):
В сегменте данных определен массив символов (строка). Выполнить заданное действие согласно заданному условию. Вывести на экран исходный и преобразованный массив.
Символы содержатся в памяти как числа (см. приложение «ASCII коды»). Таким образом, к символам применимы все те операнды и условия, что и для чисел.
Для определения нижней границы массива (или количества элементов массива) можно использовать команду LEA для определения адреса следующей переменной сегмента данных.
- Транслировать ассемблерный код. В случае нахождения ошибок – устранить их и повторить трансляцию.
- Скомпоновать программу редактором связей.
- Запустить программу в консольном режиме, в случае обнаружения ошибок в работе программы исправить их, повторить п.п.2,3
- Показать работу программы преподавателю
Таблица 6.1 - данные для реализации согласно варианту
Вариант | Исходная сторока | Условие | Действие |
I like read this book! | = « » | заменить на «_» | |
I like read this book! | > “i” | заменить на «*» | |
I like read this book! | >= “i“ | заменить на «!» | |
I like read this book! | < “p” | увеличить код символа на 5 | |
My favorite film is … | <= “m” | увеличить код символа на 2 | |
My favorite film is … | ≠ “i” | увеличить код символа на 1 | |
My favorite film is … | = «i» | уменьшить код символа на 5 | |
My favorite film is … | > “o” | уменьшить код символа на 3 | |
I understand this problem. | >= “ “ | уменьшить код символа на 1 | |
I understand this problem. | < “e” | заменить на «_» |
3. Реализация программы, использующей различные режимы адресации:
- Составить программу согласно условию:
Задан массив чисел. Определить есть ли в нём число 10.
Массив заполнить произвольными данными.
- Транслировать ассемблерный код. В случае нахождения ошибок – устранить их и повторить трансляцию.
- Скомпоновать программу редактором связей.
- Запустить программу в отладчике, в случае обнаружения ошибок в работе программы исправить их, повторить п.п.2, 3
- Показать работу программы преподавателю.
4. Реализация программы, использующей различные режимы адресации:
- Составить программу согласно условию:
Задана строка символов, содержащая также символы «!». Вывести её на экран исходную строку и ее же, но без знаков «!»
- Транслировать ассемблерный код. В случае нахождения ошибок – устранить их и повторить трансляцию.
- Скомпоновать программу редактором связей.
- Запустить программу в консольном режиме, в случае обнаружения ошибок в работе программы исправить их, повторить п.п.2,3
- Показать работу программы преподавателю
Содержание отчета по практической работе:
1. Титульный лист
2. Цель работы
3. Краткие теоретические сведения
4. Описание реализованных программ
5. Исходный ассемблерный код реализованных программ
6. Входные и выходные данные по программе.
7. Выводы по практической работе.