1.6 Базово-индексный режим

Адресуется память (байт или слово). Относительный адрес операнда определяется, как сумма содержимого следующих пар регистров:

смещение [BX] [SI]

 (подразумевается DS: смещение [BX] [SI])

смещение [BX] [DI]

 (подразумевается DS: смещение [BX] [DI])

смещение [BP] [SI]

 (подразумевается SS: смещение [BP] [SI])

смещение [BP] [DI]

 (подразумевается SS: смещение [BP] [DI])

Во всех этих случаях можно также писать:

смещение [BX+SI]

 [смещение +BX+SI]

 [BX+SI] +смещение

Это чрезвычайно распространенный способ адресации, особенно, при работе с массивами. В нем используются два регистра, при этом одним из них должен быть базовый (ВХ или ВР), а другим - индексный (SI или DI). Как правило, в одном из регистров находится адрес массива, а в другом - индекс в нем, при этом совершенно безразлично, в каком что.

1.7 Базово-индексная адресация со смещением.

Адресуется память (байт или слово). Относительный адрес операнда определяется как сумма содержимого двух регистров и смещения.

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

Приведем формальный пример рассматриваемого режима адресации.

Пусть в сегменте данных определен массив из 24 байт

syms db 'ЙЦУКЕНГШЩЗХЪ'

db 'йцукенгшщзхъ'

Последовательность команд

mov BX,12mov SI,6

mov DL,syms [BX] [SI] ; загрузит в регистр DL элемент с индексом 6 из второго ряда, то есть код ASCII буквы г

Тот же результат будет получен и в таком варианте:

mov BX,offset syms

mov SI,6

mov DL,12 [BX] [SI]

2. Порядок выполнения работы:

1. С помощью редактора эмулятора EMU 8086 напишите программу, исходный текст которой приводится в листинге №1:

2. Создайте исполняемый файл типа MZ.

3. Изучите структуру программы, также изучите структуру сегмента данных программы: найдите в нем все переменные, определенные в тексте программы.

4. Переделайте программу с использованием упрощенных директив сегментации так, чтобы получить исполняемый файл типа.com и сравните размеры программ.

5. Выполните первые 5 шагов программы, анализируя и записывая состояние регистров на каждом шаге.

6. Занесите в СХ 00FFh. Определите по способу адресации ячейку памяти в сегменте, где произойдут изменения, записать ее адрес.

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

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

9. В отчете должны содержаться ответы на следующие вопросы.

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

Как переслать содержимое X в Y?

Чем отличаются команды

MOV [si], cx

и

MOV si, cx?

К какому способу адресации относится команда MOV dx, offset message?

Какие сегменты используются при следующих вариантах адресации: [BX] [SI], [BX] [DI], [BP] [SI], [BP] [DI] ?

5. Что произойдет при выполнении инструкции

MOV AL, DS: 17h?

Чем эта команда отличается от следующей:

MOV AL, DS: [17h] ?

6. Пусть в сегменте данных определен массив

Array db 0,15,22,31,44,45,62,67,76,99

Что окажется в регистре AL после выполнения команд:

MOV BX, 5

MOV AL, array [BX] ?

7. Какой это способ адресации (пример вопроса 6)?

8. Укажите, какие инструкции в программе (листинг №1), созданной в данной лабораторной работе, относятся к инструкциям:

с непосредственным;

косвенным режимом адресации?

9. Укажите способ записи обращения напрямую к ячейке памяти по известному абсолютному адресу?

10. Префиксы, Виды префиксов. Префиксы замены сегмента?

11. Перечислите регистры косвенной и базовой адресации. Опишите отличия?

12. Сущность эффективности базовой адресации в сравнении с прямой?

Листинг №1.

TITLE MOVE2 MOVE2 SEGMENT 'CODE' ASSUME CS: MOVE2, DS: DATA MYPROC PROC OUTPROC:

MOV AX,DATA MOV DS,AX MOV AH,BH MOV AH,X MOV CH,3 MOV AX,3 MOV AX,Y MOV [SI],CX MOV [BP],CX MOV [SI],258 MOV [BP+516],1027 MOV BYTE PTR X,255 MOV BYTE PTR [DI+515],4 MOV WORD PTR [DI+515],4 MOV [DI+BP+515],258 MOV AX, [SI+BX+258] MOV AH,4CH INT 21H MYPROC ENDP MOVE2 ENDS DATA SEGMENT X DB 1 Y DW 2 DATA ENDS END MYPROC

ЛАБОРАТОРНАЯ РАБОТА № 5,6

ВЫВОД НА ЭКРАН В ТЕКСТОВОМ РЕЖИМЕ

Цель работы: Ознакомится с основными средствами вывода текстовых данных на экран посредством средств операционной системы DOS, средствами BIOS и средствами непосредственного (прямого) отображением в видеобуфер.

Средства DOS.


Информация о работе «Разработка виртуальных лабораторных работ средствами эмулятора Emu8086»
Раздел: Информатика, программирование
Количество знаков с пробелами: 193894
Количество таблиц: 73
Количество изображений: 12

0 комментариев


Наверх