Косвенная базовая индексная адресация со смещением

Адрес операнда вычисляется как сумма содержимого одного из базовых регистров BX или BP, одного из индексных регистров SI или DI и 8- или 16-разрядного смещения.

Косвенная базовая индексная адресация со смещением - student2.ru

Примеры:

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. Реализация программы, использующей различные режимы адресации:

  1. Составить программу согласно условию:

В сегменте данных задана последовательность чисел X: 0, 1, 2, 3, 5, 6, 10. Скопировать ее в последовательность Y, при этом увеличив каждый из элементов на 2.

  1. Транслировать ассемблерный код. В случае нахождения ошибок – устранить их и повторить трансляцию.
  2. Скомпоновать программу редактором связей.
  3. Запустить программу в отладчике, в случае обнаружения ошибок в работе программы исправить их, повторить п.п.2, 3
  4. Показать работу программы преподавателю.

2. Реализация программы, использующей различные режимы адресации:

  1. Узнать у преподавателя вариант работы.
  2. Составить программу согласно условию и варианту (таблица 6.1):

В сегменте данных определен массив символов (строка). Выполнить заданное действие согласно заданному условию. Вывести на экран исходный и преобразованный массив.

Символы содержатся в памяти как числа (см. приложение «ASCII коды»). Таким образом, к символам применимы все те операнды и условия, что и для чисел.

Для определения нижней границы массива (или количества элементов массива) можно использовать команду LEA для определения адреса следующей переменной сегмента данных.

  1. Транслировать ассемблерный код. В случае нахождения ошибок – устранить их и повторить трансляцию.
  2. Скомпоновать программу редактором связей.
  3. Запустить программу в консольном режиме, в случае обнаружения ошибок в работе программы исправить их, повторить п.п.2,3
  4. Показать работу программы преподавателю

Таблица 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. Реализация программы, использующей различные режимы адресации:

  1. Составить программу согласно условию:

Задан массив чисел. Определить есть ли в нём число 10.

Массив заполнить произвольными данными.

  1. Транслировать ассемблерный код. В случае нахождения ошибок – устранить их и повторить трансляцию.
  2. Скомпоновать программу редактором связей.
  3. Запустить программу в отладчике, в случае обнаружения ошибок в работе программы исправить их, повторить п.п.2, 3
  4. Показать работу программы преподавателю.

4. Реализация программы, использующей различные режимы адресации:

  1. Составить программу согласно условию:

Задана строка символов, содержащая также символы «!». Вывести её на экран исходную строку и ее же, но без знаков «!»

  1. Транслировать ассемблерный код. В случае нахождения ошибок – устранить их и повторить трансляцию.
  2. Скомпоновать программу редактором связей.
  3. Запустить программу в консольном режиме, в случае обнаружения ошибок в работе программы исправить их, повторить п.п.2,3
  4. Показать работу программы преподавателю

Содержание отчета по практической работе:

1. Титульный лист

2. Цель работы

3. Краткие теоретические сведения

4. Описание реализованных программ

5. Исходный ассемблерный код реализованных программ

6. Входные и выходные данные по программе.

7. Выводы по практической работе.

Наши рекомендации