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

Задание

  1. Составить программу, которая демонстрирует основные способы сложения однобайтовых чисел. Слагаемые разместить во внутренней памяти данных, а результат разместить в ячейках внешней памяти данных.

  2. Составить программу для перевода 8-разрядного двоичного числа (109 в десятичном представлении) в трехзначное – в двоично-десятичном формате. Число сотен этого числа записать в переменную hund, десятков –ten, единиц – ed. Присвоение имен hund, ten, ed ячейкам внутренней памяти данных с адресами 21h, 22h, 23h произвести с помощью директив EQU. Например, hund equ 21h.

  3. Составить программу сложения двух двухбайтовых чисел (01FFh и 0110h) с размещением результата во внутренней памяти данных.

  4. Составить программу вычитания двух однобайтовых чисел. Программа должна определять знак результата и размещать положительный результат в ячейке РПД 20h, а модуль отрицательного числа размещать в ячейке 21h. Для определения модуля отрицательного числа использовать последовательность команд cpl A и inc A.

  5. С оставить программу вычисления булевой функции трех переменных Y=XVW(XV). Переменные X, V, W поступают на линии 2, 1, 0 порта P1 соответственно. Результат Y необходимо вывести на линию 3 порта 1. Для присвоения имен переменных битам порта использовать директиву EQU. Например, X EQU P1.2. Перед выполнением программы произвольно установить значения битов порта.

  6. Составить программу вычисления с использованием табличной функции, расположенной в памяти программ. Для обращения к таблице использовать подпрограмму, в состав которой входят команда inc A, команда movc A,@A+PC и команда RET (выход из подпрограммы). Значения функции расположить за подпрограммой с помощью директивы db (определить байт), например

db 0

db 2

db 4

....

db 10

Обращение к подпрограмме производится командой acall metka (абсолютный вызов по 11-битному адресу) или lcall metka (дальний вызов по 16-битному адресу).

Извлечь значения функции (Y) из табл. 5 для аргументов (X) 3, 5 и 8, разместить их во внутренней памяти данных, начиная с адреса 10h, а их сумму поместить в ячейку с адресом 15h.

Таблица 5

X

0

1

2

3

4

5

6

7

8

9

10

Y

1

2

4

6

8

10

9

7

5

3

1

Контрольные вопросы

  1. В каком случае при сложении устанавливается бит переноса?

  2. Когда необходимо производить сложение с учётом переноса?

  3. Когда используется сложение с десятичной коррекцией результата?

  4. Как организовать цикл с условием в программе?

  5. Каким образом определить, что результат вычитания отрицательное число?

  6. Какой командой можно инвертировать бит порта?

  7. Поясните алгоритм извлечения значения функции, расположенной в памяти программ. В каких случаях целесообразно использование таблиц значений функции? Какие есть альтернативные способы получения значений функции по значению аргумента?

  8. Когда и зачем при извлечении числа из таблицы в памяти программ используется команда inc A?

  9. Чем будет отличаться программа, если из таблицы извлекать данные с помощью команды movc A,@A+DPTR вместо movc A,@A+PC?

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

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