Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПР 12.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
122 Кб
Скачать
☆

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

При разработке программ часто возникает необходимость в пересылке данных между регистрами общего назначения. К сожалению, такие команды в МК51 отсутствуют. Выполнить пересылку между регистрами можно двумя основными способами.

8.1. Первый способ основан на использовании аккумулятора в качестве регистра временного хранения данных. Например, необходимо переслать данные из регистра R3 в регистр R7 текущего банка РОН.

Запишите в память симулятора коды программы, выполняющую пересылку из R3 в R7:

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

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

NOP

Выполните программу пересылки в пошаговом режиме, предварительно занеся в регистр R3 исходные данные, например, число 33H.

Программа пересылки по 1-му варианту занимает в памяти только 2 ячейки. Недостатком ее является потеря данных в аккумуляторе, для сохранения которых требуются дополнительные команды.

8.2. Второй способ основан на том, что регистры общего назначения располагаются в памяти данных МК, т.е. являются обычными ячейками ПД с определенными адресами в диапазоне 00H…1FH. Для пересылки между регистрами можно использовать команды вида

MOV add, ads ,

где обозначено ads – адрес ячейки ПД источника, add – адрес ячейки ПД приемника. Пересылка выполняется без использования аккумулятора.

Пусть, например, надо переслать данные из регистра R3 в регистр R7 банка 0. Адрес регистра R3 в 0-м банке РОН будет 03H, а регистра R7 – 07H.

Запишите в память симулятора команды

MOV 07H, 03H ; Пересылка содержимого ячейки ПД с адресом 03H (регистр R3)

 в ячейку ПД с адресом 07H (регистр R7)

NOP

Выполните команду в пошаговом режиме, предварительно занеся в регистр R3 число 03H.

Этот способ позволяет пересылать данные между регистрами, находящимися в разных регистровых банках. Пусть, например, требуется переслать данные из регистра R3 0-го банка РОН в регистр R7 3-го банка. Адрес регистра R3 в 0-м банке будет 03H, адрес регистра R7 в 3-м банке РОН будет 1FH.

Занесите в память программ симулятора команды

MOV 1FH, 03H ; Пересылка содержимого ячейки 03H в ячейку 1FH

NOP

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

Достоинствами второго способа пересылки являются то, что не используется аккумулятор, а также не требуется переключать банки РОН при пересылке. Недостатки – команда пересылки занимает в памяти 3 ячейки, требуется знать адреса регистров в каждом банке РОН.

9. Задания для самостоятельной работы

  1. Напишите программу, которая обнуляет содержимое регистров R5, R6, R7 0-го банка регистров. Разработайте 4 варианта программы. В первом варианте используйте команды с непосредственной адресацией. Во 2-м варианте используйте команды с прямой адресацией. В 3-м варианте используйте команды с косвенной адресацией. В 4-м варианте используйте аккумулятор и команды пересылки. Определите длину каждой программы, т.е. количество ячеек памяти, которая она занимает. Проверьте правильность работы программ с помощью симулятора AVSIM51.

  2. Напишите программу загрузки регистров 0-го банка из памяти данных в соответствии с табл. 12.1. Разработайте 2 варианта программы с использованием прямой и косвенной адресации.

Таблица 12.1

Адрес

30H

40H

Данные

22H

44H

Регистр

R2

R4

Проверьте правильность работы программы.

  1. Напишите программу перезаписи из одних ячеек ПД в другие в соответствии с табл. 12.2. Разработайте 2 варианта программы с прямой и косвенной адресацией.

Таблица 12.2

Адрес исходной ячейки

22H

28H

Адрес записываемой ячейки

32H

38H

Проверьте правильность работы программы, предварительно записав по указанным адресам произвольные данные.

  1. Напишите программу запоминания содержимого регистров 0-го банка РОН в памяти данных в соответствии с табл. 12.3. Разработайте 2 варианта программы с прямой и косвенной адресацией.

Таблица 12.3

Регистр

R3

R6

Данные

33H

66H

Адрес ячейки

28H

32H

Проверьте правильность работы программы.

  1. Напишите программу записи данных в две области памяти, используя для адресации 1-й области регистр R0, а для 2-й области – регистр R1, в соответствии с табл. 12.4.

Таблица 12.4

Адреса 1-й области

25H

27H

Адреса 2-й области

35H

37H

Данные

11H

22H

Проверьте правильность работы программы.

  1. Напишите программу перезаписи из одной области памяти данных (адресуясь через регистр R0) в другую область (адресуясь через регистр R1) в соответствии с табл. 12.5.

Таблица 12.5

Адреса исходной области

22H

24H

Адреса записываемой области

32H

34H

Проверьте правильность работы программы, предварительно записав по указанным адресам произвольные данные

  1. Напишите программу, которая заносит в ячейку внешней памяти данных с адресом 10H данные из порта P1.

  2. Напишите программу, которая пересылает содержимое ячейки внешней памяти данных с адресом 001BH в порт P2. Указание. Для адресации ячейки ВПД используйте регистр DPTR.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]