Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
prn_ 51_pr1.doc
Скачиваний:
17
Добавлен:
19.02.2016
Размер:
370.18 Кб
Скачать

Задания 1.

Составить два варианта программы без подпрограмм и с подпрограммой.

  1. Разработайте программу сортировки массива по возрастанию.

  2. Разработайте программу сортировки массива по убыванию.

  3. Реализуйте на ассемблере BASIC-программу:

10 LET A=7

20 FOR B=2 TO 9

30 IF B<4 THEN GO SUB 60

40 NEXT B

50 GO TO 80

60 LET A=A+B

70 RETURN

80 STOP

  1. Разработайте программу подсчета количества ячеек памяти со значениями, отличными от 38h.

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

  3. Разработайте программу подсчета количества отрицательных и положительных чисел, при этом считать, что ноль – положительное число.

  4. Напишите подпрограмму вычисления чисел Фибоначчи.

Алгоритм:

А1=1

А2=1

Аi =Ai-2+Ai-1.

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

Индивидуальные задания 2

1. Написать программу, вычисляющую 20 значений массива А по формуле А[i]=7*i + 5; i = 0...19.

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

2. Написать подпрограмму, копирующую в цикле 10 байт из РПД, наложенных на маску 1001100lb, начиная с адреса 50Н, во внешнюю память данных (ВПД), начиная с адреса С200Н. В программе осуществить вызов этой процедуры и возврат из нее.

3. Написать подпрограмму, сканирующую в цикле состояние регистров R0-R7 текущего регистрового банка. Если значение регистра равно нулю - соответствующий номеру регистра бит аккумулятор тоже сбрасывается. Если регистр не равен нулю - в бит аккумулятора записывается единица.

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

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

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

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

  1. В чем заключается отличие команд JB и JNB ?

  2. В чем состоит отличие команд JMP и AJMP ?

  3. В чем состоит отличие команд JC и JNC ?

  4. Какие команды перехода влияют на флаги?

  5. Какая команда проверяет флаг Z на равенство "0"?

  6. Какие команды взаимодействуют с флагом Z?

  7. Какие действия выполняет команда CJNE ?

  8. Какие действия выполняет команда DJNZ ? Можно ли командой перехода изменить флаг Z?

  9. Существует ли разница между командами ACALL и LCALL ?

  10. Каково значение над стеком, если Вы находитесь в подпрограмме?

  11. Какие команды взаимодействуют с флагом С ?

12. Какие виды переходов в МК51 вы знаете в зависимости от разрядности указываемого в команде адреса перехода или вызова. В чем отличия этих видов переходов и вызовов.

13. По каким условиям возможно организовать ветвящиеся вычислительные процессы в МК51.

14. В чем отличие команд возврата из подпрограмм RET и RETI.

15. Какие процессы и источники могут вызвать ситуации прерываний в МК51.

16. Какие условия могут вызвать блокировку прерывания и его необслуживание.

17. Каков порядок опроса флагов прерываний (приоритет обслуживания) установлен по умолчанию в МК51. Каким образом можно изменить эти приоритеты.

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