Способы адресации Способом, или режимом адресации, называют процедуру нахождения операнда для выполняемой команды


Download 81.61 Kb.
bet6/6
Sana17.10.2023
Hajmi81.61 Kb.
#1705336
1   2   3   4   5   6
Bog'liq
Способы адресации

Базово-индексная адресация
Адресуется память (байт или слово): относительный адрес операнда определяется, как сумма содержимого следующих пар регистров:
[ВХ][SI] (подразумевается DS:[BX][SI])
[ВХ][DI] (подразумевается DS:[BX][DI])
[ВР][SI] (подразумевается SS:[BP][SI])
[ВР][DI] (подразумевается SS:[BP][DI])
Это чрезвычайно распространенный способ адресации, особенно при работе с массивами. В нем используются два регистра, при этом один из них должен быть базовым (ВХ или ВР), а другой - индексным (SI или DI). Как правило, в одном из регистров находится адрес массива, а в другом - индекс в нем, при этом совершенно безразлично, в каком что. Трансформируем предыдущий пример, введя в него более эффективную базово-индексную адресацию.
;Сегмент данных
array dw 10000 ;Резервирование 10000 слов
;Сегмент команд
mov BX,offset array ;Адрес массива в базовом регистре BX
mov SI,0 ;Начальное значение индекса элемента в массиве
mov АХ,0 ;Первое число-заполнитель
mov СХ,10000 ;Число шагов в цикле (всегда в СХ)
;Цикл заполнения массива значениями натуральных чисел
fill: mov [BX][SI],AX ;Занесение числа в элемент массива
inc AX ;Инкремент числа-заполнителя
add SI,2 ;Смещение в массиве к следующему слову
loop fill ;Переход на метку fill (CX раз)
Повышение эффективности достигается за счет того, что команда занесения числа в элемент массива оказывается короче (так как в нее не входит адрес массива) и выполняется быстрее, так как этот адрес не надо каждый раз считывать из памяти.
Базово-индексная адресация со смещением
Адресуется память (байт или слово): относительный адрес операнда определяется как сумма содержимого двух регистров и смещения.
Это способ адресации является развитием предыдущего. В нем используются те же пары регистров, но полученный с их помощью результирующий адрес можно еще сместить на значение указанной в команде константы. Как и в случае базово-индексной адресации, константа может представлять собой индекс (и тогда в одном из регистров должен содержаться базовый адрес памяти), но может быть и базовым адресом. В последнем случае регистры могут использоваться для хранения составляющих индекса. Приведем формальный пример рассматриваемого режима адресации.
Пусть в сегменте данных определен массив из 24 байтов, в котором записаны коды латинских и русских символов верхнего ряда клавиатуры:
sym db 'QWERTYUIOP{}' ;Символы английской раскладки
db 'ЙЦУКЕНГШЩЗХЪ' ;Символы русской раскладки
Последовательность команд
mov BX,12 ;Число байтов в строке
mov SI,6
mov DL,sym[BX][SI]
загрузит в регистр DL элемент с индексом 6 из второго ряда, т.е. код ASCII буквы Г. Тот же результат можно получить, загрузив в один из регистров не индекс, а адрес массива:
mov BX,offset sym
mov SI,6
mov DL,12[BX][SI]
Download 81.61 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling