Способы адресации Способом, или режимом адресации, называют процедуру нахождения операнда для выполняемой команды
Download 81.61 Kb.
|
Способы адресации
- Bu sahifa navigatsiya:
- Базово-индексная адресация со смещением
Базово-индексная адресация
Адресуется память (байт или слово): относительный адрес операнда определяется, как сумма содержимого следующих пар регистров: [ВХ][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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling