Адресация.ppt
- Количество слайдов: 14
Адресация
Адресация Уточним понятие "адресация". Адресация (по Э. Таненбауму) – процесс определения местоположения операндов команды МП (их адреса). Адрес может задаваться с помощью 5 элементов или их различных допустимых комбинаций.
ЭЛЕМЕНТЫ REG IMMED DISP BASE INDEX
Допустимые комбинации элементов n n n REG → ax IMMED → 4 DISP → var или[4] BASE → [bx] INDEX → [si] DISP+IMMED → var[4] DISP+BASE → var[bx] DISP+INDEX → var[si] BASE+IMMED → [bx+4] BASE+INDEX → [bx][si] INDEX+IMMED → [si+4] n n n DISP+BASE+IMMED → var[bx+4] DISP+BASE+INDEX → var[bx+si] DISP+INDEX+IMMED → var[si+4] BASE+INDEX+IMMED → [bx][si+4] DISP+BASE+INDEX+IMMED → var[bx][si+4]
Регистровая адресация . inc СН; Плюс 1 к содержимому СН push DS; DS сохраняется в стеке xchg ВХ, ВР; ВХ и ВР обмениваются содержимым mov ES, АХ; Содержимое АХ пересылается в ES Непосредственная адресация MOV AX, 5 ; загружает значение 5 в РОН AX MOV AL, '*'; Код ASCII символа "*' загружается в AL . . . K EQU 1024 MOV CX, K ; загружает в РОН СХ константу 1024, определенную идентификатором К.
Прямая адресация памяти. Сегмент данных meml dw 0 ; Слово памяти содержит 0 mem 2 db 230 ; Байт памяти содержит 230 ; Сегмент команд ……. inc meml ; Содержимое слова meml увеличивается на 1 mov DX, meml ; Содержимое слова с именем mem 1 загружается в DX mov AL, mem 2 ; Содержимое байта с именем mem 2 загружается в АL
Регистровая косвенная (базовая и индексная). При использовании регистров ВХ или ВР адресацию называют базовой, при использовании регистров SI или DI - индексной. Косвенные регистровые операнды необходимо заключать в квадратные скобки Пример (косвенной базовой адресации). mov [bx], al ; Пересылка байта из регистра AL по адресу, ; определяемому регистрами DS: BX mov dx, [bp] ; Пересылка слова из ячейки памяти, определяемой ; регистрами SS: BP в регистр DX Пример (косвенной индексной адресации). mov dx, [si] ; Пересылка слова из ячейки памяти, определяемой ; регистрами DS: SI в регистр DX mov [si], cx ; Пересылка слова из регистра CX по адресу, ; содержащемуся в регистре DS: SI
Регистровая косвенная адресация со смещением (базовая и индексная). MOV AХ, [ВР]+4 ; 3 то стандартная форма записи, MOV AХ, 4[ВР] ; но сдвиг можно указать на первом месте MOV AХ, [ВР+4] ; или внутри скобок
Базово-индексная адресация. Пример (адресации по базе с индексированием). mov ax, [bx][di] ; Адрес второго операнда: (BX)+(DI) mov ax, [bx+di] Базово-индексная адресация со смещением. <Базовый регистр>+<Индексный регистр>+<Константа> Пример (косвенной базовой индексной адресации со смещением). mov ax, [si+5 h][dx] mov ax, [bx+di+5]
1. В следующей команде найдите ошибку и предложите способ ее исправления: MOV[SI], [BX] 2. Объясните, почему ассемблер выдает ошибку в команде MOV[BX], 25? Исправьте ошибку. 3. В нижеприведенной таблице укажите в пустом столбце, какой режим адресации используется в командах. Команда Режим адресации LEA BX, TABL MOV DI, 4 MOV CL, [BX] MOV DL, [BX+3] MOV AL, [BX+DI] MOV CH, 2[BX+DI] 4. Какой смысл имеют квадратные скобки в командах ассемблера? 5. В чем отличие команд mov ax, [bx+2] и mov ax [bx] + 2? 6. В чем отличие команд mov ax, [bx][si] и mov ax, [si][bx]? 7. В сегменте данных описан вектор TABL DB 12, 15, 16, 10, 8, 2, 5, 0. Напишите команды занесения значения четвертого байта (значение 10) в регистр AL а) с использованием прямой адресации; б) с использованием косвенной адресации; в) с использованием прямой адресации с индексированием.
Операции, связанные с адресацией
Специальные операции Операции для работы с сегментами и адресами Получение сегментной составляющей адреса Получение смещения / исполнительного адреса Индексная (считается арифметической) Переопределения сегмента seg
Дополнительные операции Арифметические операции для формирования IMMED Унарные Бинарные + [7] * [8] + [9] - [7] / [8] - [9] mod [8]
Пример Простая программа, иллюстрирующая различные режимы адресации и применение адресных операций.


