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 начало сегмента данных