Режимы адресации.

Режимы адресации в assembler — это различные способы указания местоположения операндов. Эти режимы позволяют организовать работу с массивами, структурами, локальными переменными и указателями. Сегодня мы рассмотрим все режимы адресации.

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

Регистровая адресация

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

push  DS	;Сохранение  DS  в  стеке
mov	BP,SP	;Пересылка  содержимого  SP  в  ВР

Непосредственная адресация

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

mov	AX, 4C00h	    ;Операнд  -   16-ричное  число
mov	DX,offset  mas  ;Смещение  массива  mas   заносится  в  DX
mov	DL,'!'	        /Операнд  -   код  ASCII   символа   '!'
num=9	            /Число   9  получает  обозначение  num
mov	CX,num	        ;Число,   обозначенное  num,   загружается  в  СХ

Прямая адресация памяти

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

mov DL,meml	  ;Содержимое  байта  памяти с  символическим именем meml
                  ; пересылается  в  DL 

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

mov	AX, 0	        ;Настроим сегментный регистр ES на
mov	ES,AX	        ;самое начало памяти (адрес 0)
mov	AX,ES:[0]	;АХ=содержимое слова с адресом 0000h:0000h
mov	DX,ES:[2]	;ОХ=содержимое слова с адресом 0000h:0002h

Неявная адресация

Местоположение операнда фиксировано и определяется кодом операции. Например:

cbw
mul al

Команда CBW всегда работает с регистрами AX и AL, а у команды MUL фиксировано положение первого множителя и результата. Такой режим адресации делает машинную команду короткой, так как в ней отсутствует указание одного или нескольких операндов.

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Команды работы с битами.

Команды работы с битами.

Работать с отдельными битами операндов можно, используя логические операции и сдвиги. Также в системе команд x86 существуют специальные команды для работы с битами: это команды

 
Основы создания макросов в Assembler.

Основы создания макросов в Assembler.

Макросы — это шаблоны для генерации кода. Один раз создав макрос, можно использовать его во многих местах в коде программы. Макросы делают процесс программирования на

 
Синтаксис объявления меток.

Синтаксис объявления меток.

Метка в ассемблере – это символьное имя, обозначающее ячейку памяти, которая содержит некоторую команду. Метка может содержать следующие символы: Буквы (от A до Z и

 
Локальные переменные.

Локальные переменные.

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

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: