Mov ax, seg mas


Codeseg segment

Dataseg end

Mas dw 0

Dataseg segment

Jmp m1

Code

Mov si,2

Mas dw 48, 56, 67

……………………

mov ax, mas[SI] ;Пересылка слова 56 по адресу mas+(si) в регистр ax

 

v Оператор переопределения типа, ptr.

Тип может принимать значения:

байт (byte), word (слово), dword (двойное слово), qword (8 байт), tbyte (10 байт).

near и far – определяет близкий или дальний переход.

 

Форат оператора

<Тип> ptr <Выражение>

Пример.

var dd 0abcd1234h ; двойное слово в сегменте данных

mov al, byte ptr var+1 ;в регистр al загрузить байт (число cdh)

 

v Оператор переопределения сегмента (двоеточие).

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

 

Фрагмент программы:

…….

ind db 5 ; поле данных в сегменте команд

 

m1:

mov al, cs:ind ;адрес начала сегмента кода в регистре cs

;в регистр al загрузить число 5.

 

v Оператор получения сегментной составляющей адреса - seg.

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

Пример:

mov ds, ax ;в ds загружается адрес начала сегмента данных

 

v Оператор получения смещения в сегменте памяти некоторого выражения – offset.

Смещение – это адрес операнда относительно начала сегмента.

 

Пример

.data ; начало сегмента данных

mas dw 5 ; в сегменте данных число 5

 

.code ; начало сегмента кода

mov ax, seg mas ; запись в ax начало сегмента данных