Mov al,5 ; 5 – непосредственный операнд 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Mov al,5 ; 5 – непосредственный операнд



 

2. Адресные операнды – задают физическое расположение операнда в памяти с помощью указания двух составляющих адреса: сегмента и смещения. К примеру:

Mov ax,0000h

Mov ds,ax

mov ax,ds:0000h; записать слово в ах из области памяти по физическому адресу 0000:0000

 

2. Счётчик адреса. Обозначается знаком $. Когда транслятор ассемблера встречает в программе этот символ, то он подставляет вместо него текущее значение счётчика адреса.

0000 jmp $+3; безусловный переход на команду mov

0002 cld; длина команды cld составляет 1 байт

Mov al,1

 

Команда jmp занимает 2 байта.

3. Регистровый операнд – это имя регистра. В программе можно использовать имена всех регистров общего назначения и большинства системных регистров. Пример:

 

Mov al,4; константу 4 заносим в регистр al

Mov dl, 8

Add al,dl; команда с регистровыми операндами

4. Базовый и индексный операнды. Тип операндов используется для реализации косвенной базовой, косвенной индексной адресации или их комбинаций и расширений.

Структурные операнды используются для доступа к конкретному элементу структуры.

Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи.

Выполнение операторов ассемблера при вычислении выражений осуществляется в соответствии с их приоритетами (табл. 3.1).

 

Табл. 3.1. Операторы и их приоритет

 


Лекция №3. Команды передачи управления. Арифметические команды.

 

То, какая команда программы должна выполняться следующей, микропроцессор узнаёт по содержимому пары регистров cs:(e)ip, в которой:– cs – сегментный регистр кода, в котором находится физический (базовый) адрес текущего сегмента кода;– eip/ip – регистр указателя команд, в котором находится значение, представляющее собой смещение в памяти следующей команды, подлежащей выполнению, относительно начала текущего сегмента кода. По принципу действия команды микропроцессора, обеспечивающие организацию переходов в программе, можно разделить на три группы:4) команды безусловной передачи управления: – команда безусловного перехода;– вызов процедуры и возврата из процедуры;– вызов программных прерываний и возврат из программных прерываний; 5) команды условной передачи управления: – команды перехода по результату команды сравнения;– команды перехода по состоянию определённого флага;– команды перехода по содержимому регистра есх/сх. 6) команды управления циклом: – команда организации цикла со счётчиком есх/сх;– команда организации цикла со счётчиком есх/сх с возможностью досрочного выхода из цикла по дополнительному условию.
Метка – это символическое имя, обозначающее определённую ячейку памяти, предназначенное для использования в качестве операнда в командах передачи управления. Транслятор ассемблера присваивает метке три атрибута:– имя сегмента кода, где эта метка описана;– смещение – расстояние в байтах от начала сегмента кода, в котором описана метка; – тип метки или атрибут расстояния. Тип метки может принимать два значения:– near (ближняя метка) – переход на эту метку возможен только в пределах сегмента кода, где эта метка описана. Физически это означает, что для перехода на метку достаточно изменить только содержимое регистра eip/ip. – far (дальняя метка) – переход на эту метку возможен только в результате межсегментной передачи управления, для осуществления которой требуется изменения содержимого как регистра eip/ip так и регистра cs. Метку можно определить двумя способами:– оператором: (двоеточие);– директивой label.
Синтаксис первого способа таков: Символическое имя: Команда ассемблера С помощью данного способа можно определить метку только ближнего типа – near. Синтаксис второго способа таков: Символическое имя label тип метки При этом тип метки может принимать значения как near так и far. Пример эквивалентного описания метки ближнего типа:m1:mov ax,pole_1 и m1 label nearmov ax,pole_1

 


Безусловные переходы

Команды перехода модифицируют регистр указателя команды eip/ip и, возможно сегментный регистр кода cs. Что именно должно модифицироваться зависит:

3) от типа операнда в команде безусловного перехода (ближний или дальний);

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

Модификатор может принимать следующие значения:

– near ptr – прямой переход на метку внутри текущего сегмента кода (изменяется только содержимое регистра ip);

– far ptr – прямой переход на метку в другом сегменте кода (изменяется содержимое регистров cs и ip);

– word ptr – косвенный переход на метку внутри текущего сегмента кода (изменяется только содержимое регистра ip);

– dword ptr – косвенный переход на метку в другом сегменте кода (изменяется содержимое регистров cs и ip);

 


Безусловный переход jmp

Общий синтаксис:

Jmp [модификатор] адрес_перехода – безусловный переход без сохранения точки возврата.

 

 

Существуют несколько кодов машинных команд безусловного перехода jmp.

Дальность перехода определяется местоположением операнда адрес_перехода и бывает внутрисегментным или близким или межсегментным или дальним.

Можно выделить три варианта внутрисегментного использования команды jmp:

– прямой короткий (расстояние от команды jmp до адреса перехода не более чем -128 или +128 байтов, машинная команда безусловного перехода длиной в 2 байта);

– прямой (машинная команда безусловного перехода длиной в 3 байта);

– косвенный.

 


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

Пример 1: (формирование короткого безусловного перехода):

Jmp short ptr m1

…; не более 35-40 команд (127 байтов)

m1:

 

Пример 2: (формирование короткого безусловного перехода):

 

m1:

…; не более 35-40 команд (127 байтов)

Jmp m1

 



Поделиться:


Последнее изменение этой страницы: 2016-09-13; просмотров: 410; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.186.218 (0.011 с.)