Сегментация памяти и формирование адреса

Вычисление физического адреса (адреса памяти, выдаваемого на шину адреса процессора) можно выразить так:

ФА=[SR]*16+EA16.

Пр.:

Особенности машинных команд

Возможны следующие сочетания операндов в команде:

а) регистр - регистр;

б) регистр - память;

в) память – регистр;

г) регистр - непосредственный операнд;

д) память - непосредственный операнд.

Для команд характерно, что при наличии двух операндов первый из них является приемником, а второй – источником. Результат операции сохраняется по первому адресу.

Основные команды МП

1. Команды пересылки данных

1.1 Пересылка (move):

MOV op1,op2

op1:=op2

В команде MOV допустимы следующие комбинации операндов:

Op1 op2

r8 i8, r8, m8 пересылка байтов

m8 i8, r8

r16 i16, r16, sr, m16 пересылка слов

sr (кроме CS) r16, m16

m16 i16, r16, sr

Запрещены пересылки:

· из одной ячейки памяти в другую;

· из одного сегментного регистра в другой;

· запись непосредственного операнда в сегментный регистр.

· Командой MOV нельзя менять содержимое сегментного регистра CS.

Пример.

Записать число 100 в сегментный регистр DS:

MOV AX,100

MOV DS,AX; DS:=100

1.2 Перестановка (exchange):

XCHG op1,op2

В команде XCHG допустимы следующие комбинации операндов:

Op1 op2

r8 r8, m8 перестановка байтов

m8 r8

r16 r16, m16 перестановка слов

m16 r16

Не допускается:

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

Пример.

MOV AX,62; AX=62

MOV SI,135; SI=135

XCHG AX,SI; AX=135, SI=62

1.3 Загрузка исполнительного адреса (load effective address):

LEA r16,A

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

Пример.

LEA BX,A; BX:=адрес А

MOV BX,A; BX:=содержимое А

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

Пример.

LEA BX,88; ошибка

LEA BX,АХ; ошибка

2. Команды сложения и вычитания


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: