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.
0 комментариев