КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ. Команда LEA (LoadEffectiveAddress) относится к командам пересылки адресов
Команда LEA (LoadEffectiveAddress) относится к командам пересылки адресов. Предназначена для загрузки эффективного (исполнительного) адреса. Формат команды: lea регистр, память При работе с 16- разрядными регистрами (режим адресации use16) команда выполняет пересылку смещения ячейки памяти в любой 16-битовый регистр общего назначения. В отличие от операции offset, команда lea допускает индексацию операнда память, что позволяет выполнять более гибкую адресацию. Пример: ….. mas db 10 dup (0); определение массива из 10 байт ….. mov di, 4; загрузка индексного регистра di lea bx, mas [ di ]; загрузка в bx эффективного ; адреса 5-го элемента массива mas Команды XLAT/XLATB (transLATeBytefromtable) извлечения элемента последовательности (таблицы) байтов относится к командам пересылки данных общего назначения. Команды осуществляют выбор значения из таблицы байтов и загрузку его в регистр al. Формат команды: xlat таблица-источник xlatb где таблица-источник – имя просматриваемой таблицы. Перед исполнением команды начальный адрес таблицы байтов следует загрузить в регистр bx, а номер извлекаемого байта – в регистр al. Пример: ….. table db ‘abcdefgh’ …. mov al, 5; загрузка номера извлекаемого байта в al lea bx, table; загрузка эффективного адреса таблицы байтов в; регистр bx xlat table; извлечение значения 5-го байта ; из таблицы в регистр al ….. Команды XLAT/XLATB удобно использовать для выполнения преобразований, требующих многочисленных действий, например, для поиска ASCII-кода шестнадцатеричной цифры. Эти команды можно применять для выполнения различного рода перекодировок символов. Команды LDS/LES/LFS/LGS/LSS (Loadpointerinto ds/es/fs/gs/ss segmentregister) относятся к командам пересылки адресов. Они предназначены для загрузки сегментного регистра ds/es/fs/gs/ss указателем из памяти. Формат команды: lds регистр, память где регистр – это любой регистр общего назначения, память – ячейка памяти с соответствующим атрибутом, например, DOUBLEWORD (dd). Формат остальных команд этой группы аналогичен. При работе с 16-ти разрядными регистрами (режим адресации use16) команды выполняют считывание из памяти 32-битового слова и загружают первые 16 битов в заданный регистр общего назначения, а следующие 16 битов – в регистр соответствующего сегмента данных. Пример: ….. dat dd data; определение данных (указателя) ….. lds bx, dat; загрузка полного адреса ячейки памяти dat в ; пару регистров ds и bx. ….. К командам пересылки общего назначения относится также команда XCHG, имеющая формат xchg операнд1, операнд2 Она используется для двунаправленной пересылки данных. Операнды команды должны иметь один тип. Не допускается (как и для всех команд ассемблера) обменивать между собой содержимое двух ячеек памяти. Например, xchg ax, bx; обменять содержимое регистров ax и bx xchg ax, wordptr [ si ]; обменять содержимое регистра ax ; и слова в памяти по адресу в [ si ] Выполнение описанных команд не влияет на состояние флагов.
|