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

Задания 1.

  1. Написать программу сложения или вычитания двух n-байтовых чисел, где число n будет являться параметром.

  2. Написать программу, вычисляющую сумму чисел от 1 до n с помощью цикла.

  3. Написать программу, вычисляющую первые n чисел Фибоначчи. (Т.е. последовательность, в которой каждый последующий член является суммой двух предыдущих: 0,1,1,2,3,...)

  4. Написать программу нахождения наибольшего общего делителя по алгоритму Евклида. (Берется исходная пара чисел. Из большего числа вычитается меньшее, потом меньшее число из первой пары и разность первой пары становятся следующей парой, и алгоритм повторяется снова до тех пор, пока в паре не окажутся одинаковые числа. Это и будет наибольшим общим делителем.)

  5. Написать программы умножения и деления, используя команды сложения и вычитания.

  6. Написать программу поиска максимального элемента в массиве.

  7. Перемножить два беззнаковых 16-разрядных числа, используя команду 8-разрядного умножения.

13

  1. Написать программы для вычисления приведенных ниже выражений, где переменные являются 8-разрядными положительными числами. Частное и остаток результата отдельно записать в память: Y=12/(14*A+(B-C+35))

  2. Y=(A*B-78)/(27*C+78)

  3. Y=((4*A+B)-(2*A-45))/C

  4. Y=(A+2*B-165)^2/(C+124)

  5. Y=A^2/(25*B-C+119)

  6. Y=A/(B-15*C+37).

Задания 2

Составить программу на основе команд арифметических операций для вычисления следующего выражения согласно своему варианту:

1. Y = (А + В) / С

2. Y = (А - В) * (С - В)

3. Y = А - С / В

4. Y = (А + В - С) * В

5. Y = А * В + С

6. Y = А - В + С

7. Y = (А - С) / В

8. Y=A + C-B*C

Принять значения А равным 14, В равным 2, С равным 4.

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

  1. Объясните логику работы команд сложения и вычитания с учетом флагов С и OV.

  2. Опишите способы адресации команд ADD, ADDC, SUBB.

  3. Опишите способы адресации команд MUL, DIV.

  4. Опишите способы адресации команд INC, DEC.

  5. Как работает команда DA .

  6. Для чего чаще всего используются команды INC и DEC .

7. В чем различие команд арифметических операций без учета и с учетом переноса.

8. Для каких целей применяются команды инкрементирования и декрементирования содержимого отдельных регистров.

9. Каким образом и с какой целью осуществляется десятичная коррекция аккумулятора.

10. В чем особенности команд умножения и деления MUL и DIV. В каком случае при их выполнении взводится флаг переполнения OV.

Лабораторная работа №4 логические команды. Команды сдвига и работы с битами Практическая часть.

1. Маскирование при вводе.

Ввести в регистр R7 информацию из линий 0,1,3,4 и 7:

MOV A,P1 ; Ввод байта из порта 1

ANL A,#10011011B ; Маскирование

MOV R7,A ; Передача

14

;Выполнение подпрограммы

ORG LOC ; Восстановление счетчика адреса SERV:

PUSH PSW ; Запоминание регистра PSW

PUSH AСС

PUSH В

PUSH DPI

PUSH DPH

MOV PSW,#1000B ; Выбор регистрового банка 1

;..................;Тело подпрограммы

POP DPH ; Восстановление регистров

POP DPL ; в обратном порядке

POP В

POP AСС

POP PSW

RETI ; Возврат к основной программе

2. Все биты, которые вызывают прерывания (IE0, IE1, TF0, TF1, RI, TI), могут быть программно установлены или сброшены с тем же результатом, что и в случае их аппаратной установки или сброса. Т. е. прерывания могут программно вызываться или ожидающие обслуживания прерывания могут программно ликвидироваться. Кроме того, прерывания по ~INT0, ~INT1 могут вызываться программной установкой Р3.2=0 и РЗ.З=0, как показано в приведенном ниже примере:

EA EQU IE.7

MAIN: MOV IE, #00000101b

MOV IP, #04H

SETB EA

MOV P3,#11110011B

В предложенном примере запросы прерывания ~INT0 и ~INT1, имеющие различный приоритет, поступают одновременно. При этом обслуживается прерывание с высшим приоритетом.

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

В этой программе с помощью директивы Ассемблера А51 ORG задаются векторы процедур обслуживания прерывания INT0, которое возникает по срезу сигнала на входе РЗ.2, и прерывания по переполнению таймера Т0. В основной программе производится разрешение и настройка этих прерываний. При пошаговом запуске программы в отладчике DS51 можно контролировать состояния системы прерываний и таймера, вызывая соответствующие команды мз меню Peripheral. Чтобы вызвать прерывание необходимо установить соответствующие флаги в регистре TCON: TF0 - TCON.5 или IE0 - TCON.1. Сделать это можно с помощью команды >ТСОN.1 = 1 в окне выполнения Ехе (смотри Приложение).

23

бит аккумулятора записывается единица.

4. Написать подпрограмму, определяющую четность числа единиц в аккумуляторе без использования флага паритета Р.

6. Написать программу, вычисляющую 12 значений массива А по формуле А[i]=(3 * (i + 4)) and 0FEH; i = 1...12.

Полученный массив записать в ВПД, начиная с адреса С200Н.

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