Разделы презентаций


Системное программирование Лекция №5 Способы адресации памяти

Содержание

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

Слайды и текст этой презентации

Слайд 1Системное программирование
Лекция №5



Способы адресации памяти




Системное программированиеЛекция №5Способы адресации памяти

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

выполняемой команды. Если команда использует два операнда, то для каждого

из них должен быть задан способ адресации, причем режим адресации первого и второго операнда могут как совпадать, так и различаться. Операнды команды могут находиться в разных местах: непосредственно в составе кода команды, в каком-либо регистре, в ячейке памяти; в последнем случае существует несколько возможностей указания его адреса. Способы адресации являются элементом архитектуры процессора, отражая заложенные в нем возможности поискa операндов.
Способы адресацииСпособом, или режимом адресации называют процедуру нахождения операнда для выполняемой команды. Если команда использует два операнда,

Слайд 3Регистровая адресация

Операнд (байт или слово) находится в регистре. Этот способ

адресации применим ко всем программно-адресуемым регистрам процессора (кроме IP).

inc CH ;Плюс 1

к содержимому СН
push DS ;DS сохраняется в стеке
xchg ВХ,ВР ;ВХ и ВР обмениваются содержимым
mov ES,AX ;Содержимое AX пересылается в ES
mov AL,BH ;8-разрядный режим
mov AХ,BХ ;16-разрядный режим
mov ЕAХ,ЕBХ ;32-разрядный режим

Регистровая адресацияОперанд (байт или слово) находится в регистре. Этот способ адресации применим ко всем программно-адресуемым регистрам процессора

Слайд 4Непосредственная адресация
Операнд (байт или слово) указывается в команде и после

трансляции поступает в код команды; он может иметь любой смысл

(число, адрес, код ASCII), а также быть представлен в виде символического обозначения.

mov АН,40h ;Число 40h загружается в АН
mov АL,’*’ ;Код ASCII символа ‘*’ загружается в AL
int 21h ;Команда прерывания с аргументом 21h
limit = 528 ;Число 528 получает обозначение limit
mov СХ,limit ;Число, обозначенное limit, загружается
;в CX
Пересылка относительных адресов (смещений):
; Сегмент данных
mes db "Урок 1” ;Строка символов
;Сегмент команд
mov DX,offset mes ;Адрес строки засылается в DX
Непосредственная адресацияОперанд (байт или слово) указывается в команде и после трансляции поступает в код команды; он может

Слайд 5Прямая адресация памяти
Адресуется память; адрес ячейки памяти (слова или байта)

указывается в команде (обычно в символической форме) и поступает в

код команды:
;Сегмент данных
mem1 dw 0 ;Слово памяти содержит 0
mem2 db 230 ;Байт памяти содержит 230
; Сегмент команд
inc mem1 ;Содержимое слова mem1 увеличивается на 1
mov DX,mem1 ;Содержимое слова mem1 загружается в DX
mov AL,mem2 ;Содержимое байта mem2 загружается в AL
Команды процессора, обращающиеся к памяти, могут в качестве первого байта своего кода содержать префикс замены сегмента, с помощью которого процессор определяет, из какого сегментного регистра взять сегментный адрес. Если префикс отсутствует, сегментный адрес берется из регистра DS (хотя для него тоже предусмотрен свой префикс). В ряде случаев префикс замены сегмента должен указываться в программе в явной форме. Такая ситуация возникает, например, если данные расположены в сегменте команд, что типично для резидентных обработчиков прерываний:
mov АХ, СS : mem
Прямая адресация памятиАдресуется память; адрес ячейки памяти (слова или байта) указывается в команде (обычно в символической форме)

Слайд 6Вывод символов в левый верхний угол экрана
mov АХ,0В800h ;Сегментный адрес видеобуфера
mov ЕS,АХ ;Отправим

его в ЕS
mov byte ptr ES:0,’!’ ;Символ на 1-е знакоместо экрана
mov byte ptr ES:2,’!’ ;Символ на 2-е знакоместо

экрана
Настроив регистр Е5 на сегментный адрес видеобуфера В800h, мы пересылаем код знака «!» сначала по относительному адресу 0 (в самое начало видеобуфера, в байт со смещением 0), а затем на следующее знакоместо, имеющее смещение 2 (в нечетных байтах видеобуфера хранятся атрибуты символов, т.е. цвет символов и фона под ними). В обеих командах необходимо с помощью обозначения ЕS: указать сегментный регистр, который используется для адресации памяти. Встретившись с этим обозначением, транслятор включит в код команды префикс замены сегмента, в данном случае код 26h.
Что будет, если использовать word ptr?
mov AL,’!’
mov ES:0,AL
Вывод символов в левый верхний угол экрана mov	АХ,0В800h			;Сегментный адрес видеобуфераmov	ЕS,АХ					;Отправим его в ЕSmov	byte	ptr	ES:0,’!’		;Символ на 1-е знакоместо экранаmov	byte	ptr	ES:2,’!’		;Символ

Слайд 7Регистровая косвенная адресация памяти
Адресуется память (байт или слово). Относительный адрес

ячейки памяти находится в регистре, обозначение которого заключается в прямые

скобки. В МП 86 косвенная адресация допустима только через регистры ВХ, ВР, SI и DI. При использовании регистров ВХ или ВР адресацию называют базовой, при использовании регистров DI или SI — индексной.
mov AX,0B800h ;Сегментный адрес
mov ЕS,АХ ;видеобуфера в ЕS
mov ВХ,2000 ;Смещение к середине экрана
mov byte ptr ЕS:[ВХ],'!' ;Символ на экран
Если косвенная адресация осуществляется через один из регистров ВХ, SI или DI, то подразумевается сегмент, адресуемый через DS, поэтому при адресации через этот регистр обозначение DS: можно опустить:
mov AX,0B800h ;Сегментный адрес
mov DS,АХ ;видеобуфера в DS
mov ВХ,2000 ;Смещение к середине экрана
mov byte ptr [ВХ],'!' ;Символ на экран
Регистровая косвенная адресация памятиАдресуется память (байт или слово). Относительный адрес ячейки памяти находится в регистре, обозначение которого

Слайд 8Регистровая косвенная адресация памяти
Регистры ВХ, SI и DI в данном

применении совершенно равнозначны, и с одинаковым успехом можно воспользоваться любим

из них:

mov DI,2000 ;Смещение к середине экрана
mov byte ptr [DI],'!' ;Символ на экран

Регистр же ВР специально предназначен для работы со стеком, и при адресации через этот регистр в режимах косвенной адресации подразумевается сегмент стека; другими словами, в качестве сегментного регистра по умолчанию используется регистр SS.
Обычно косвенная адресация к стеку используется в тех случаях, когда необходимо обратиться к данным, содержащимся в стеке, без изъятия их оттуда (например, если эти данные приходится считывать неоднократно).

Регистровая косвенная адресация памятиРегистры ВХ, SI и DI в данном применении совершенно равнозначны, и с одинаковым успехом

Слайд 9Регистровая косвенная адресация со смещением
Адресуется память (байт или слово); относительный

адрес операнда определяется, как сумма содержимого регистра ВХ, ВР, SI

или DI и указанной в команде константы, иногда называемой смещением. Смещение может быть числом или адресом.
mov AX,0B800h ;Сегментный адрес
mov ЕS, АХ ;видеобуфера в ЕS
mov DI,80*2*24 ;Смещение к нижней строке экрана
mov byte ptr ES:[DI], ‘O’ ;Символ на экран
mov byte ptr ES:2[DI], ‘K’ ;Символ в следующую позицию
mov byte ptr ES:4[DI], ‘!’ ;Символ в следующую позицию
Иногда можно встретиться с альтернативными обозначениями того же способа адресации, которые допускает ассемблер. Вместо, например, 4[ВХ] можно с таким же успехом написать [ВХ+4], 4+[ВХ] или [ВХ]+4.

Регистровая косвенная адресация со смещениемАдресуется память (байт или слово); относительный адрес операнда определяется, как сумма содержимого регистра

Слайд 10Пример использования базовой адресации со смещением при обращении к стеку
;Основная

программа
push DS ;В стек загружаются значения
push ES ;трех регистров,
push SI ;передаваемых подпрограмме
call mysub ;Вызов подпрограммы mysub
;использующей эти

параметры
;Подпрограмма mysub
mov BP,SP ;Поместим в ВР текущий адрес вершины стека
mov AX,2[ВР] ;Читаем в АХ последний параметр (SІ)
mov ВХ,4[ВР] ;Читаем в ВХ предыдущий параметр (ЕS)
mov CX,6[ВР] ;Читаем в СХ первый параметр (DS)

Если бы подпрограмма просто сняла со стека находящиеся там параметры, она первым делом изъяла бы из стека адрес возврата, и лишила бы себя возможности вернуться в основную программу

Пример использования базовой адресации со смещением при обращении к стеку;Основная программаpush	DS			;В стек загружаются значенияpush	ES			;трех регистров,push	SI			;передаваемых подпрограммеcall mysub		;Вызов

Слайд 11Пример заполнения массива из 10000 слов натуральным рядом чисел
;Сегмент данных
аггау dw 10000

dup (?)
;Сегмент команд
mov SI,0 ;Начальное значение индекса элемента в массиве
mov AX,0 ;Первое число-заполнитель
mov CX,10000 ;Число

шагов в цикле (всегда в СХ)
fill: mov array[SI],АХ ;3анесение числа в элемент массива
inc АХ ;Инкремент числа-заполнителя
add SI,2 ;Смещение в массиве к следующему слову
loop fill ;Возврат на метку fill (СХ раз)


Пример заполнения массива из 10000 слов натуральным рядом чисел;Сегмент данныхаггау		dw	10000 dup (?);Сегмент команд				mov	SI,0	 ;Начальное значение индекса элемента

Слайд 12Базово-индексная адресация
Адресуется память (байт или слово). Относительный адрес операнда определяется,

как сумма содержимого следующих пар регистров:

[ВХ] [SІ] (подразумевается DS:[ВХ][SI])
[ВХ] [DІ] (подразумевается DS:[ВХ][DІ])
[ВР][SI] (подразумевается

SS:[ВР][SI])
[ВР][DІ] (подразумевается SS:[ВР][DІ])

Это чрезвычайно распространенный способ адресации, особенно, при работе с массивами. В нем используются два регистра, при этом одним из них должен быть базовый (ВХ или ВР), а другим — индексный (SI или DI). Как правило, в одном из регистров находится адрес массива, а в другом — индекс в нем, при этом совершенно безразлично, в каком что.

Базово-индексная адресацияАдресуется память (байт или слово). Относительный адрес операнда определяется, как сумма содержимого следующих пар регистров:[ВХ] [SІ]		(подразумевается

Слайд 13Базово-индексная адресация
;Сегмент данных
аггау dw 10000 dup (?)
;Сегмент команд
mov ВХ,offset аггау ;Базовый адрес массива в

базовом регистре
mov SI,0 ;Начальное значение индекса элемента в массиве
mov АХ, 0 ;Первое число-заполнитель
mov СХ,10000 ;Число шагов

в цикле
fill: mov [ВХ] [SI] ,АХ ;Отправим число в массив
inc АХ ;Инкремент числа-заполнителя
add SI,2 ;Смещение в массиве к следующему слову
lоор fill ;На метку fill (СХ раз)

Повышение эффективности достигается за счет того, что команда занесения числа в элемент массива оказывается короче (так как в нее не входит адрес массива) и выполняется быстрее, так как этот адрес не надо каждый раз считывать из памяти.

Базово-индексная адресация;Сегмент данныхаггау		dw	10000 dup (?);Сегмент командmov	ВХ,offset аггау	;Базовый адрес массива в базовом регистреmov	SI,0			;Начальное значение индекса элемента в массивеmov	АХ,

Слайд 14Базово-индексная адресация со смещением
Адресуется память (байт или слово). Относительный адрес

операнда определяется как сумма содержимого двух регистров и смещения.

Sims db ‘QWERTUIOP{}’
db ‘ЙЦУКЕНГШЩЗХЪ’
Последовательность команд
mov ВХ,12 ;Число

байтов в строке
mov SI,6
mov DL,Sims[ВХ] [SI]
загрузит в регистр DL элемент с индексом 6 из второго ряда, т.е. код АSСІІ буквы Г. Тог же результат можно получить, загрузив в один из регистров не индекс, а адрес массива:

mov ВХ,offset Sims
mov SI,6
mov DL,12[ВХ][SI]
Базово-индексная адресация со смещениемАдресуется память (байт или слово). Относительный адрес операнда определяется как сумма содержимого двух регистров

Слайд 15Адресация по базе с индексированием и масштабированием
Это самая полная возможная

схема адресации, в которую входят все случаи, рассмотренные ранее, как

частные. Полный адрес операнда можно записать как выражение, представленное на рисунке.
Адресация по базе с индексированием и масштабированиемЭто самая полная возможная схема адресации, в которую входят все случаи,

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика