Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к цифрам.doc
Скачиваний:
28
Добавлен:
06.05.2019
Размер:
2.08 Mб
Скачать

3.6. Группа команд пересылки данных

Несмотря на пересылку данных в неизменном виде, эти команды осуществляют один из способов обработки информации, В качестве примера такой обработки можно привести сортировку. В командах пересыл­ки используется все разнообразие способов адресации данных. Пересылка данных может осуществляться в форматах байта, половины байта, двух байтов и бита.

Команда MOV (MOVe по-английски означает «передвинуть»; далее в аналогичных случаях мы не будем указывать специально, что дается перевод с английского) копирует содержимое источника в приемник (при выполнении этой команды первоначальное содержимое приемника теряется). Перечень возможных команд MOV приведен в табл. 1.

Табл. 1

Содержание команды

Тип адресации

Мнемоника

Операция

Пересылка в Акк. байтовой конст.

прямая

MOV A,#dat8

(A)←#dat8

Пересылка в рег. Rn байтовой конст.

прямая

MOV Rn,#dat8

(Rn)←#dat8

Пересылка в Акк. содержимого рег. Rn

прямая

MOV A,Rn

(A) ←(Rn)

Пересылка в рег. Rn содержимого Акк.

прямая

MOV Rn,A

(Rn) ← (A)

Пересылка в Акк. содержимого ОЗУ по адресу, содерж в рег. Ri (i=0,1)

косвенная

MOV A,@Ri

(A) ←{(Ri)}

Пересылка в ОЗУ содержимого Акк. по адресу, содерж в рег. Ri (i=0,1)

косвенная

MOV @Ri,A

{(Ri)} ←(A)

Пересылка в ОЗУ байтовой конст. по адресу, содерж. в рег. Ri (i=0,1)

косвенная

MOV @Ri, #dat8

{(Ri)} ←#dat8

Пересылка в ОЗУ содержимого, содержащегося по адр. dat8 в ячейку с адр., содерж. в рег. Ri (i=0,1)

косвенная

MOV @Ri, dat8

{(Ri)} ←{dat8}

Пересылка в ОЗУ содержимого ОЗУ с адр. содерж. в рег. Ri (i=0,1), в ячейку с адресом dat8

косвенная

MOV dat8,@Ri

{dat8} ←{(Ri)}

Пересылка в Rn содержимого ОЗУ по адресу dat8

прямая

MOV Rn,dat8

(Rn) ←{dat8}

Пересылка в Акк. содержимого ОЗУ по адресу dat8

прямая

MOV A,dat8

(A) ←{dat8}

Пересылка из Акк. в ОЗУ по адресу dat8

прямая

MOV dat8,A

{dat8} ←(A)

Пересылка содерж. Rn в ОЗУ по адресу dat8

прямая

MOV dat8,Rn

{dat8} ←(Rn)

Пересылка содерж. из ячейки ОЗУ с адр. 1dat8 в ОЗУ по адресу 2dat8

прямая

MOV 2dat8,1dat8

{2dat8}←{1dat8}

Пересылка в ОЗУ по адр. dat8 конст. # 1dat8

прямая

MOV dat8,#1dat8

{dat8} ←#1dat8

Пересылка в указатель данных DPTR двухбайтовой конст.

прямая

MOV DPTR,#dat16

DPTR ←#dat16

Для засылки нуля в аккумулятор проще использовать команду очистки CLR (CleaR означает очистить):

CLR A

Чтение и запись данных байтового формата при обращений к внешнему ОЗУ осуществляется при помощи команд MOVX, где буква X, по-видимому, означает eXternal (внешняя память):

Табл. 2

Содержание команды

Тип адресации

Мнемоника

Операция

Пересылка в акк. байта из вн. ОЗУ из адреса, содерж. в Ri (i=1,2)

косвенная

MOVX A,@Ri

A ←{(Ri)}

Пересылка в акк. байта из вн. ОЗУ из расширенного двухбайтового адреса, содерж. в DPTR

косвенная

MOVX A,@DPTR

A ←{(DPTR)}

Пересылка байта во вн. ОЗУ по адресу, содерж. в Ri (i=1,2) из акк.

косвенная

MOVX @Ri,A

{(Ri)} ←A

Пересылка из акк. байта во вн. ОЗУ по расширенному двухбайтовому адресу, содерж. в DPTR

косвенная

MOVX @DPTR,A

{(DPTR)} ← A

Перед выполнением этой команды в соответствующий регистр нужно записать адрес.

Чтение данных из ПЗУ программ осуществляется при помощи команды MOVC, притом буква С скорее всего означает Code (программа):

Табл. 3.

Содержание команды

Тип адресации

Мнемоника

Операция

Пересылка в акк. байта из памяти программ, содержащегося по адресу, представляющего сумму указателя DPTR и акк.

косвенная

MOVC A,@A+DPTR

A ←{(A)+(DPTR)}

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

косвенная

MOVC A,@A+PC

A ←{(A)+(PC)}

Эти команды очень удобны для чтения из таблиц, записываемых в ПЗУ.

Запись в ОЗУ и чтение из него при помощи стекового способа адресации производятся командами:

Табл. 4

Содержание команды

Тип адресации

Мнемоника

Операция

Пересылка содержимого ОЗУ с адр. dat8 в стек

Прямая

PUSH dat8

(SP) ←(dat8)

Пересылка содержимого стека в ОЗУ с адр. dat8

Прямая

POP dat8

(dat8) ←(SP)

Мнемокоды стековых команд соответствуют английским глаголам «затолкнуть» и «вытолкнуть». Применяются стековые способы в основном при обработке прерываний, переходов в подпрограммы, когда необходимо запомнить текущие состояния регистров.

Существует еще одна команда копирования ХСН (eXCHange означает «обменять»), которая осуществляет обмен содержимого источника и приемника. В принципе обмен можно произвести при помощи трех команд пересылки. Следующие команды делают это за то же время, но занимают меньше места в ПЗУ и не требуют использования дополнительной ячейки ОЗУ:

Табл. 5

Содержание команды

Тип адресации

Мнемоника

Операция

Обмен акк. с регистром

Прямая

XCH A,Rn

(A)↔(Rn)

Обмен акк. с байтом, содерж. в ОЗУ по адресу dat8

Прямая

XCH A,dat8

(A)↔{dat8}

Обмен акк. c байтом, содерж. в ОЗУ по адресу находящемуся в рег. Ri (i=1,2)

Косвенная

XCH A,@Ri

(A)↔{(Ri)}

Обмен мл. тетрады акк. c мл. тетадой, содерж. в ОЗУ по адресу находящемуся в рег. Ri (i=1,2)

Косвенная

XCHD A,@Ri

(A0…A3)↔{(Ri)0…(Ri)3}

Несколько команд пересылки информации работают в битовом фор­мате, при этом в команде MOV источником или приемником должен быть бит

переноса С, например:

MOV C, Rn.j

MOV Rn.j,C

Для записи констант 0 и 1 используются команды очистки CLR и уста­новки SETB (SETB(it) означает «установить бит»):

CLR C

CLR Rn.j

SETB C

SETB Rn.j

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