MOV TEMP, BL           ;Байт, регистр-память



         МOV [ DI], BX                ;Слово, регистр-память

         MOV DX, [ BP][ SI]        ;Слово, память-регистр

 

Примечание. Для лучшего усвоения кодирования команд рекомендуется самостоятельно построить машинные команды, реализующие приведенные выше операторы языка ассемблера. Символическим именам, например, GAMMA, TEMP, можно присваивать произвольные 16-битные значения. Такие же упражнения целесообразно выполнять для всех ассемблерных операторов, которые приводятся в качестве примеров.

Команда MOV mem / reg , data позволяетпередатьв регистр или ячейку памяти непосредственные данные. Она также допускает большинство режимов адресации и передачу байт или слов.

Длина команды в зависимости от режима адресации варьирует от 3 до 6 байт, а выполняется за (10+.ЕА) тактов синхронизации.

Пример 3.

(DI)=1000                           MOV [DI], 8400H ([A4450])=8400

( DS)= A345

Примеры записи на языке ассемблера приведены ниже.

MOV [ BX], 3450 H             ;Слово в память

MOV [ BP][ SI], 2 CH          ;Байт (или слово) в память

MOV CX, 1000 H               ;Слово и регистр

В этой команде нельзя определять сегментные регистры. Отсутствие команды загрузки непосредственных данных в сегментные регистры считается недостатком системы команд МП К1810, т. к. при инициализации системы в сегментные регистры приходится загружать константы. Решение этой проблемы приведено ниже.

Команда MOV reg , data представляет собой более короткий вариант предыдущей команды и осуществляет загрузку констант в общие регистры МП. Длина этой команды составляет 2 или 3 байта, а время выполнения равно 4 тактам синхронизации. Она эквивалентна командам MVI r, data и LXI rp, МП К580.

Примечание. Выше в примерах записи команды MOV mem / reg , data, на языке ассемблера была приведена команда MOV CX, 1000 H. Возможно, естественно, закодировать ее 4 байтами в формате команды MOV mem / reg , data, однако программа-ассемблер выберет более короткий 3-байтный вариант команды и формате MOV reg, data.

Команды MOV ac, mem и MOV MEM, ac предназначены для загрузки и запоминания содержимого аккумуляторов. Например, команда MOVAL, BETA передаст и аккумулятор AL байт с адресом BETA,  а команда MOV  ALPHA, AX запоминает содержимое аккумулятора AX в слове памяти с адресом ALPHA. При выполнении последней команды содержимое регистра AL оказывается в байте с адресом ALPHA, а содержимое регистра AH – в байте с адресом ALPHA+1. Напомним, что оба байта находятся в текущем сегменте данных (если специально не определен другой сегмент) и указанные адреса представляют собой смещения в этом сегменте. Обе команды имеют длину 3 байта и выполняются за десять тактов синхронизации.

Команды MOV sreg , mem / reg и MOV mem / rrg , sreg осуществляют передачи между сегментными регистрами и регистрами/памятью. В них передаются только слова, а ячейка памяти может быть определена с помощью любого допустимого режима адресации. Отметим, что в команде MOV sreg , mem / reg нельзя указывать сегментный регистр кода CS, т. к. при этом результат операции не определен.

Обе команды имеют длину 2-4 байта в зависимости от режима адресации. Время выполнения в формате регистр-регистр составляет два такта синхронизации: при задании памяти первая команда выполняется за (84-EA), а вторая – за (9+EA) тактов синхронизации.

Команда MOV sreg, mem/reg применяется для инициализации сегментных регистров, т.е. для определения сегментов. Если, например, в сегментный регистр DS необходимо загрузить F000, то потребуются команды

MOV AX, 0 F000 H            ; Инициализация

MOV DS, AX                     ; регистра DS на F000

 

При такой инициализации почти всегда как промежуточный используется регистр AX, т.к. команда MOV ac, data короче более общей команды MOV mem/reg, data.

Первый формат позволяет обменять содержимое любого общего регистра и ячейки памяти, а также любой пары общих регистров. Память адресуется в любом допустимом режиме адресации. Однобайтная команда XCHG предназначена для обмена любого общего регистра и аккумулятора AX. Первая команда имеет длину 2-4 байта и выполняется за четыре (регистр-регистр) или (17+EA) (регистр-память) тактов синхронизации.

Примеры использования команд обмена в ассемблерных операторах приведены ниже.


Дата добавления: 2022-12-03; просмотров: 24; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!