Работа №4 способы адресации
Цель работы: изучение способов адресации данных в МП-86 и микропрограммирование команд с различными режимами адресации.
РЕЖИМЫ АДРЕСАЦИИ
Различают следующие режимы адресации:
регистровый -данное содержится в регистре AX, BX, CX, DX или ВР;
непосредственный - данное длиной 8 или 16 бит является частью команды;
прямой -16-битный эффективный адрес ЕА является частью команды.
регистровый косвенный - ЕА находится в регистре BX, SI или DI;
регистровый относительный. ЕА вычисляется как сумма смещения D8 или D16 и регистра BX, BP, SI или DI;
базово-индексный - ЕА вычисляется как сумма базового (ВХ или ВР) и индексного (SI или DI) регистров;
относительный базово-индексный - ЕА вычисляется как сумма смещения (D8 или D16) и базово-индексного адреса.
Регистровая и непосредственная адресация уже были рассмотрены. Остальные способы определяются полями второго байта команды mod (если mod11) и r/m в соответствии с таблицей 1. В столбце SR записан используемый сегментный регистр. Особый случай представляет собой комбинация mod=00 и r/m=110 (прямая адресация), когда ЕА=D16 и SR=DS (а не SS, как для остальных столбцов).
В более поздних процессорах Intel кроме вышеописанной 16-разрядной используется также 32-разрядная адресация с возможным использованием дополнительного байта команды SIB (Scale Index Base). Наличие этого байта задается во втором байте значением поля r/m=100b. Байт SIB состоит из 2-битного поля S (масштаб) и 3-битных полей I (индекс) и В (база). Поле S кодирует множитель, на который умножается индекс:
1 (S=00b), 2 (S=01b), 4 (S=10b), 8 (S=11b). В качестве индексных могут использоваться регистры AX (000b), CX (001b), DX (010b), BP (101b), SI (110b), DI (111b). В качестве базовых могут использоваться все выше перечисленные регистры, а также регистр SP (100b).
Режимы адресации для различных комбинаций mod и r/m |
Таблица 1 | ||||
mod r/m |
00 |
01 |
10 |
SR | |
000 |
BX+SI |
BX+SI+D8 |
BX+SI+D16 |
DS | |
001 |
BX+DI |
BX+DI+D8 |
BX+DI+D16 |
DS | |
010 |
BP+SI |
BP+SI+D8 |
BP+SI+D16 |
SS | |
011 |
BP+DI |
BP+DI+D8 |
BP+DI+D16 |
SS | |
100 |
SI |
SI+D8 |
SI+D16 |
DS | |
101 |
DI |
DI+D8 |
DI+D16 |
DS | |
110 |
D16 |
BP+D8 |
BP+D16 |
DS (SS при mod=00) | |
111 |
BX |
BX+D8 |
BX+D16 |
DS |
В лабораторных работах 32-битная адресация не предусмотрена, но байт SIB может быть использован и при 16-битной адресации. Для этого байт SIB должен быть извлечен из памяти и помещен во второй байт RGK.
МИКРОПРОГРАММИРОВАНИЕ ФОРМИРОВАНИЯ АДРЕСОВ
Процедуры формирования адресов для режимов, используемых в программе, целесообразно оформить в виде подпрограмм, чтобы не дублировать их для всех команд с одинаковыми способами адресации. Также имеет смысл оформить в виде вложенных подпрограмм выборку смещений D8 и D16.
Рассмотрим последовательность формирования адреса для случая mod=10 и r/m=010 (относительный базово-индексный режим), предполагая, что смещение D16 выравнено по границе слова (IP четно).
Микропрограмма формирования адреса приведена в таблице 2.
Для сокращения затрат памяти подпрограммы формирования адресов можно сделать с несколькими входами. На рисунке 1 показана схема вычисления адресов для нескольких значений полей mod, r/m.
Рис. 2. Схема вычисления адреса
Формирование адреса операнда |
Таблица 2 | |||
Содержание МК |
Поле |
Значение |
Функция | |
ARAM:=IP+CS |
A B ALU WM |
C 8 3 2 |
IP CS Сложение Запись в ARAM | |
IP:=IP+2 |
B SRC CONST |
C 5 2 |
IP CONST, RGB Приращение IP | |
ЧтОП RD:=RGR |
MEM DST B |
5 1 ? |
Чтение слова RGRРЗУ Выбор регистра | |
RD:=RD+SI |
A B ALU |
6 ? 3 |
SI RD Cложение | |
RD:=RD+BP |
A B ALU |
6 ? 3 |
BP RD Сложение | |
ARAM:=RD+SS |
A B ALU WM |
A ? 3 2 |
SS RD Сложение Запись в ARAM |
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Ознакомиться с режимами адресации и микропрограммированием формирования исполнительных адресов.
Закодировать программу, указанную в задании (табл.3).
Разработать микропрограммы операций с учетом используемых способов адресации и произвести их отладку.
Ввести программу, исходные данные и таблицу преобразования кодов операций в начальные адреса микропрограмм.
Отладить и выполнить программу в режимах КОМАНДА и АВТОМАТ.
СОДЕРЖАНИЕ ОТЧЕТА
В отчет входят программы, микропрограммы операций, таблица преобразования адресов, результаты вычислений, протокол выполнения программы в режиме КОМАНДА, протокол формирования адреса для наиболее сложного способа адресации в режиме МИКРОКОМАНДА.
КОНТРОЛЬНЫЕ ВОПРОСЫ
Опишите режимы адресации, используемые в МП-86.
Составьте микропрограмму вычисления адреса для режима, указанного преподавателем.
Сравните затраты микропрограммной памяти при использовании раздельных подпрограмм для каждого режима адресации и общих подпрограмм для каждого режима адресации и общих подпрограмм с неколькими входами.
-
Варианты заданий
Таблица 3
Mov AX, 127
L: Cmp AX,DX
Add DX, 25[BP][SI]
Jmp L
Hlt
Mov CX,14
L: Add DX, BX
Loop L
Mov AX, 200H [BP][DI]
Hlt
3.
Mov AX, 100
L: Add AX, 12H [BX][SI]
Dec SI
Jnz L
Hlt
4.
Mov AX, [200H]
L: Add 100 [BX][SI], 180H
JS L
Mov [180H], AX
Hlt
Таблица 3 (окончание)
5.
Mov CX,18
L: Mov DX, [BX][SI]
Inc SI
Cmp AX, DX
Jnz L
Mov [200H], AX
Hlt
6.
Mov AX, [300]
L: Mov DI, [BX][SI]
Inc SI
Test DI, 0
Jnl L
Hlt
7.
Mov AX, 20H
L: Inc AX
Add DX, 100[BP][DI]
Jl L
Mov [20H], AX
Hlt
8.
Mov CX, 8
L: Sub 100[BP][DI], 8
Dec DI
Loop L
Mov [100], AX
Hlt
9.
XCNG AX, 300H[BX][SI]
Mov CX, 10
L: ADD [BX], DX
Loop L
Mov [100H], AX
Hlt
10.
Add AX, 25
Sub DX, CX
L: Add 25[BP][SI], AX
Inc SI
Jl L
Hlt
Оглавление
Работа №1. Структура процессора и микропрограммирование алгоритмов |
|
Работа №2. Работа с памятью. подпрограммы и циклы |
|
Работа №3. Эмуляция команд микропроцессора i8086 |
|
Работа №4. Способы адресации |
|