Однокристальные микроконтроллеры семейства MCS-51. Команды передачи данных. Пересылка в аккумулятор прямоадресуемого байта, страница 2

MOV  A, #100        ; Загрузить в аккумулятор число 100 (в десятичном коде)

Обратите внимание на запись непосредственных данных  #0AAH. Здесь перед шестнадцатиричным числом AAH поставлен незначащий 0, чтобы отличить его от метки.

При использовании регистровой адресации операнда источника он находится в одном из регистров общего назначения Rn = R0, R1, …,R7 текущего банка, номер которого определяется битами (флагами) RS1, RS0 регистра состояния PSW. Команда имеет однобайтный формат. Номер регистра Rn определяется тремя младшими битами байта кода операции.

     Примеры:

MOV  A, R0       ; Пересылка в аккумулятор содержимого регистра R0

MOV  A, R7        ; Пересылка в аккумулятор содержимого регистра R7

При использовании прямой адресации операнд источника находится в памяти данных или в регистре специальных функций. Команды имеют длину 2 байта. 1-й байт предназначен для кода команды, 2-й байт содержит адрес ячейки памяти данных (диапазон 00H…7FH) или адрес регистра специальных функций (диапазон 80H…FFH). Условное обозначение адреса в мнемонике команды – ad.

     Примеры:

MOV  A, ad      ; Пересылка в аккумулятор содержимого ячейки памяти с адресом  ad

MOV  A, 30H   ; Пересылка в аккумулятор содержимого ячейки ПД с адресом 30H

MOV  A, 80H    ; Пересылка в аккумулятор содержимого регистра специальных

; функций с адресом 80H  – порта P0

MOV  A, 0D0H ; Пересылка в аккумулятор содержимого регистра специальных

; функций с адресом D0H  -  регистра PSW

В последних двух командах операнды источника – это регистры специальных функций. Эти регистры расположены по фиксированным адресам и имеют символические имена. Например, регистр по адресу 80H имеет имя P0 – это порт ввода/вывода, а регистр с адресом D0H имеет имя PSW – это регистр состояния PSW. Ассемблер МК51 допускает использование в мнемонике команд символических имен регистров специальных функций вместо их адресов. Это упрощает программирование, облегчает запись и чтение команд. При ассемблировании программа-транслятор подставляет вместо символических имен регистров специальных функций их действительные адреса.

     Примеры:

MOV  A, P0      ; Пересылка в аккумулятор содержимого порта P0

MOV  A, PSW  ;  Пересылка в аккумулятор содержимого регистра PSW

MOV  A, B        ; Пересылка в аккумулятор содержимого регистра B

MOV  A, ACC   ; Пересылка в аккумулятор содержимого регистра ACC

Последняя команда фактически не выполняет никаких действий, т.е. является пустой. При ее выполнении программный счетчик просто увеличивает на 2 свое содержимое: (PC) ß (PC) + 2, так как команда занимает в памяти 2 ячейки.

При использовании косвенной адресации команды имеют длину 1 байт. В этом байте расположен код операции. Адрес операнда источника – ячейки памяти данных находится в регистре R0 или R1 текущего банка. Обратите внимание, что в качестве источника адреса операнда могут использоваться только регистры R0 и R1 (общее обозначение Ri), но не могут использоваться регистры R2 – R7. Диапазон адресов ячеек ПД при использовании косвенной адресации: 00H…7FH. Обращение к регистрам специальных функций с использованием косвенной адресации невозможно.

     Пример:

MOV  A, @R0   ; Переслать в аккумулятор содержимое ячейки ПД, адрес которой

; находится в регистре R0.

Во всех рассмотренных выше примерах приемником данных выступал аккумулятор. Однако в качестве приемника могут использоваться регистры, ячейки памяти с прямой или косвенной адресацией. Команды, в которых приемником являются ячейки памяти, часто называют командами запоминания.

В командах МК51 могут использоваться и смешанные виды адресации, например, регистровая и непосредственная:

MOV  Rn, #d, прямая и косвенная:

MOV  ad, @Ri, а также другие комбинации.

Использование смешанных способов адресации делает систему команд МК51 чрезвычайно гибкой и удобной для программирования.

                                            3. Порядок выполнения работы

3.1. Исследование команд пересылки с непосредственной и регистровой адресацией

Запустите симулятор/отладчик AVSIM51,  отключите отображение меток и занесите в память программ коды команд:

MOV  A, #55H   ; Загрузить в аккумулятор число 55H

MOV  R1, A       ; Переслать в регистр R1 содержимое аккумулятора