Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы Михайлов часть2.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
1.56 Mб
Скачать

7. Порядок занесения команды (программы).

Коды команд (программа) вводятся в память программ (program memory) следующим образом:

  1. Открыть ячейку памяти, нажав на кнопку PM.

2) Вести 16р адрес памяти (четыре шестнадцатеричных числа), используя числовые кнопки.

3) Вести 8р содержимое данной ячейки (код операции или операнд), используя числовые кнопки.

4) Записать введенное значение в ячейку памяти, нажав на кнопку «+1». При этом значение счетчика команд (PC) увеличивается на 1 - инкрементируется.

Процесс занесения можно продолжить далее: в следующую ячейку ввести новый код и записать его, нажав кнопку «+1».

Примечание. Занесение информации в память данных и регистры микропроцессора выполняется аналогично.

8. Запуск выполнения программы.

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

Запуск программы пользователя может быть выполнен в одном из двух режимов: пошаговом и автоматическом. Для запуска программы пользователя необходимо предварительно ввести адрес первой выполняемой команды в программный счетчик с помощью кнопок «PC» или «PM», т.е. после записи программы в память необходимо вернуться в начало программы (набрать адрес ячейки, в которой хранится первая исполняемая команда программы).

Запуск программы пользователя в пошаговом режиме осуществляется нажатием кнопки «ST» («Step»). При этом выполняется одна команда и на дисплей выводится новое значение программного счетчика (адрес следующей команды).

Запуск программы пользователя в автоматическом режиме осуществляется нажатием кнопки «RU» («Run»).

Выход из программы пользователя при работе в автоматическом режиме производится нажатием на любую кнопку. При этом сохраняется содержимое внутренней памяти данных и регистров контроллера и на дисплей выводится адрес останова (адреса ячейки памяти, на которой прервали команду). Это дает возможность просмотра результатов выполнения программы.

Для продолжения выполнения программы нажмите кнопку «RU» или «ST».

Примечание. В данном микропроцессоре отсутствуют команды HALT и STOP. Поэтому выход из-под программы осуществляется по запросу прерывания, который выставляет контроллер клавиатуры после нажатия любой кнопки.

Задание 2: Изучить порядок выполнения команд и программ.

1. Команды обращения к регистрам

1.1 . Запись данных в регистр.

а) Ручная запись:

- нажмите кнопку «Rg»;

  • выберите нужный регистр, нажав кнопку «+1»;

  • используя числовые кнопки «0», «1»,….. «F» занесите двухзначное число в

данный регистр;

- запомните это число, нажав кнопку «+1».

б) Программная запись. Эта операция выполняется, например, с помощью команды передачи данных из аккумулятора в регистр.

Команда

Структура

Код

MOV Rn, A

1111 1rrr

F8…FF

Здесь rrr – номер n-го регистра 0…7, F8 – код команды при обращении к нулевому регистру, FF – код команды при обращении к седьмому регистру, соответственно.

Примечание. Выбор банка регистров осуществляется с помощью разрядов RS0, RS1 слова состояния процессора ССП (PSW). После включения питания по умолчанию устанавливается нулевой банк.

Порядок выполнения:

  1. Занесите в аккумулятор (A) любое двухзначное число.

  2. Нажмите кнопку «PM».

  3. Введите значение 1000. (С этого адреса можно вводить программы пользователя).

  4. Наберите код команды.

  5. Нажмите кнопку «+1» для запоминания команды.

  6. Запустите программу с адреса 1000 в пошаговом режиме, для чего используйте кнопку «ST».

  7. Проверьте содержимое регистра, который использовался в данной команде.

в) Программное занесение константы. В этом случае в выбранный регистр заносится содержимое второго байта команды (ХХ).

.

Команда

Структура

Код

MOV Rn, #d

0111 1rrr

78…7F

#d

ХХ

Порядок выполнения:

  1. Нажмите кнопку «PM».

  2. Введите значение 1000.

  3. Введите код команды.

  4. Нажмите кнопку «+1» для запоминания команды. Адрес памяти изменился и стал 1001.

  5. Занесите значение константы по этому адресу.

  6. Нажмите кнопку «+1» для запоминания константы.

  7. Перейдите в начало программы, то есть в ячейку с адресом 1000.

  8. Нажмите кнопку «ST» для пошагового выполнения программы.

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

г) Программное занесение прямо адресуемого байта памяти (РПД) в регистр.

Команда

Структура

Код

MOV Rn, ad

1010 1rrr

A8…AF

ad

ХХ

Здесь аd - адрес байта РПД.

  1. Откройте ячейку резидентной памяти данных (кнопка «DM») в диапазоне адресов от 40 до 7F.

  2. Занесите в ячейку любое число.

  3. Запустите исполнение команды с 1000 адреса.

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

1.2. Чтение регистра

а) Перенос содержимое регистра в аккумулятор

Команда

Структура

Код

MOV A, Rn

1110 1rrr

E8…EF

Занесите код команды в память программ по адресу 1000. Выполните команду в пошаговом режиме для третьего регистра второго банка. Просмотрите содержимое регистра. Значение, лежащее в регистре «Rn», будет занесено в «А».

Примечание. Банк регистра определяется разрядами RS0, RS1 регистра флагов (FL). По умолчанию установлен нулевой банк.

б) Пересылка значения регистра по прямому адресу в РПД.

Команда

Структура

Код

MOV ad, Rn

1000 1rrr

88…8F

ad

XX

Примечание. Используйте ячейки памяти в диапазоне адресов 40Н…7FH

2.Команды обращения к памяти.

В этих командах используется косвенная адресация с помощью регистров r0 или r1.

    1. Занесение информации в резидентную память данных (РПД)

Команда

Структура

Код

MOV @Ri,A

1111 011i

F6/F7

  1. Введите в память программ код команды по 1000 адресу.

  2. Занесите в аккумулятор произвольное значение.

  3. Запишите в регистр банка памяти данных, номер которого указан в команде (b0r0 или b0r1), значение адреса РПД. Выполните команду в пошаговом режиме.

  4. Проверьте правильность выполнения команды. Результат занесите в отчет.

    1. Занесение константы.

Команда

Структура

Код

MOV @Ri,#d

0111 011i

76/77

#d

XX

Введите команду в память программ, начиная с 1000 адреса.

Во второй байт команды (адрес 1001) занесите значение константы.

Запишите в регистр, номер которого указан в команде, значение адреса РПД .

Выполните команду в пошаговом режиме.

Проверить правильность выполнения команды. Результат занесите в отчет.

    1. Чтение памяти

Команда выполняет пересылку данных из РПД в аккумулятор. Предварительно следует занести в ячейку памяти пересылаемое значение, и в соответствующий регистр - адрес ячейки

Команда

Структура

Код

MOV A,@Ri

1110 011i

E6/E7

(Ri)

XX

По команде пересылается значение ячейки РПД, адрес которой указан в регистре b0r0 или b0r1.

  1. Однооперандные команды.

Выполните приведенные команды, предварительно занеся в аккумулятор (А) и соответствующий регистр (Rn) конкретные значения. Результаты выполнения команд занесите в отчет.

Команда

Структура

Код

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

INC А

0000 0100

04

Инкремент аккумулятора

INC Rn

0000 1rrr

08…0F

Инкремент регистра

CLR A

1110 0100

E4

Сброс аккумулятора

SWAP A

1100 0100

C4

Обмен местами тетрад в аккумуляторе

4. Двухоперандные команды

Команда

Структура

Код

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

ADD A,Rn

0010 1rrr

28…2F

Сложение акк. и рег.(результат в А)

MUL A,B

1010 0100

A4

Умножение акк. на рег.В (результат в B,А)

XCH A,Rn

1100 1rrr

C8…CF

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

ANL A,Rn

0101 1rrr

58…5F

Лог. умножение акк. и рег.(результат в А)

ORL A,Rn

0100 1rrr

48…4F

Лог. сложение акк. и рег.(результат в А)

Выполните приведенные команды, предварительно занеся в аккумулятор (А) и соответствующий регистр (Rn) конкретные значения. Результаты выполнения команд занесите в отчет.

5. Команды обращения к портам ввода/вывода.

В этих командах используется прямая адресация.

    1. Запись вручную. Выполните обращение к порту 1 следующим образом:

  1. Используя движковые переключатели, установите все разряды порта 1 в единичное состояние (индикаторы светятся).

  2. Нажмите кнопку «DM».

  3. Введите по адресу 90 (адрес порта 1) произвольное число.

  4. Нажмите кнопку «+1».

  5. Проследите за изменением разрядов порта 1 (индикаторов).

  6. Повторите эту процедуру несколько раз с различными значениями данных.

5.2. Загрузка порта 1 содержимым аккумулятора.

Команда

Структура

Код

MOV ad,A

1111 0101

F5

ad

90

Установите движковые переключатели (входы порта 1) в нижнее положение (светодиодные индикаторы светятся).

Загрузите в аккумулятор произвольное число.

Выполните команду пошаговом режиме.

Проконтролируйте состояние разрядов порта 1 по световым индикаторам.

Повторите эту процедуру несколько раз с различными значениями данных.

5.3. Загрузка константы в порт 1.

Команда

Структура

Код

MOV ad,#d

0111 0101

75

ad

90

#d

Любое число.

XX

  1. Установите движковые переключатели (входы порта 1) в нижнее положение (светодиодные индикаторы светятся).

  2. Загрузите команду с 1000 адреса.

  3. Запишите в 3-й байт команды произвольное число (ХХ).

  4. Выполните команду пошаговом режиме.

  5. Проконтролируйте состояние разрядов порта 1 по световым индикаторам.

  6. Повторите эту процедуру несколько раз с различными значениями данных.

Загрузка порта 1 содержимым порта 2.

?

?

?

?

6. Команды операций с битами.

Выполните приведенные ниже команды управления разрядом переноса С (рис.1).

6.1 Установка разряда переноса

Команда

Структура

Код

SET B,C

1101 0011

D3

Проверьте наличие единицы в 7р регистра флагов (СПП).

6.2. Сброс разряда переноса.

Команда

Структура

Код

CLR C

1100 0011

C3

Проверьте наличие нуля в 7р регистра флагов (СПП).

7. Пример программы.

Введите приведенную ниже программу, занося в соответствующие ячейки памяти необходимые коды команд. Введите в аккумулятор произвольное число. Запустите программу с 1000 ячейки памяти, используя кнопку “ST”. Нажимая кнопку “ST”, проконтролируйте изменение содержимого аккумулятора с помощью индикаторов порта 1.

Команда

Структура

Код

1000

INC A

04

1001

MOV 90,A

F5

1002

90

1003

LJMP 1000

02

1004

10

1005

00