Читайте также:
|
|
1. Петер Харрисон (Peter Harrison)/ «Linux Wireless Networking»/
Команда работы с адресами и указателями памяти
Загрузка эффективного адреса
Lea приемника, источника
R16 имя переменной, метки
Константы
Load Effective Address
Получение эффективного адреса (смешения) источника.
Алгоритм работы:
Вычисляется эффективный адрес источника и записывает его в регистр.
Не влияет на флаги
Команда является альтернативной оператору ассемблера offset. В отличие от offset команда lea допускает индексацию операнда, что позволяет более гибко организовывать адресацию операндов
Пример:
; загрузить в регистр bx адрес пятого элемента массива mas
Mas db 10 dup (0)
…
Mov dl,4
Lea bx, mas[di]
Загрузка сегментного регистра ds/es/fs/gs/ss указателем из памяти
Ids приемник, источнки
Les приёмник, источник
Lfs приемник, источник
lgs приёмник, источник
lss приёмник, источник
Получение полного указателя в виде сегментной составляющей и смешения.
Алгоритм работы:
Загрузить первые два байта из ячейки памяти источник в 16-разрядный регистр, указанный операндом приемник.
Следующие два байта в области источник должны содержать сегментную составляющую некоторого адреса; они загружаются в регистр ds/es/fs/gs/ss;
Не влияет на флаги.
Например
Str_1 db ‘ ассемблер – базвый фзык компьютера’
Str_2 db 50 dup (‘ ‘)
Full_pnt dd str_1
…
Lea sl, str_1
Lea dl, str_2
Les bx, full pnt; полный указатель на str1 в пару es:bx
Команда преобразования байта
XLAT
Замена значения в регистре AL байтом из таблицы байтов из памяти
Алгоритм работы:
Вычислить адрес, равный ds: [bx+al];
Выполнить замену байта в регистре al байтом и памяти по вычисленному адресу.
Адрес последовательности байтов, из которой будет осуществлятся выборка байтов для подмены в регистре al, должн быть предварительно загружен в пару ds:bx.
Не влияет на флаги.
Особенности:
Таблица – это строка байта. Адрес байта в строке, которым будет производиться замещение содержимого регстра al, определяется суммой (bx)+(al), то есть содержимое ak выполняет роль индекса в байтовом массиве.
Адрес таблицы должен быть предварительно загружен (например, с помощью команды lea) в регистр bx.
Режимы адресации операндов
Режимом адресации является способ определения операнда. Существуют следующие режимы адресации:
· Регистровая – имя операнда является именем регистра. Например: PUSH AX
· Непосредственная – операнд моет быть в виде числа (mov ax, 4c00h), в виде части адреса, в виде ASCII кода., в виде символьного обозначения.
· Прямая адресация в памяти – в команде указывается имя ячейки памяти, над содержимом которой выполнятся действие.
A db -50
…
Mov al, a
Если нужно обратиться к конкретному физ адресу, то этот адрес необходимо разбить на сегмент и смещение, сегмент записать в сегментный регистр, смещение указать в скобках.
ФА=408h
40^8
Mov ax, 40h
Mov es, ax
Mov dx, es: [8]
(ES:[8]- прямая адресация в памяти)
· Косвенная адресация в памяти
Дата добавления: 2014-12-19; просмотров: 95 | Поможем написать вашу работу | Нарушение авторских прав |