Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Задание лаб1 для симулятора

.docx
Скачиваний:
0
Добавлен:
21.03.2026
Размер:
16.48 Кб
Скачать

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

Пункт А - Загрузить в симулятор (Load) текст из файла лаб А.asm.  - Дописать программу в соответствии с выданными номерами заданий. - Ассемблировать программу.  При отсутствии синтаксических ошибок запустить программу  (Run).  - Убедиться в правильности работы по состоянию ячеек памяти и регистров. - Для отладки можно пользоваться пошаговым режимом (Step)

Пункт Б - Загрузить в симулятор текст из файла лаб Б.asm.  - Дописать программу в соответствии с выданными номерами заданий. - Ассемблировать программу.  При отсутствии синтаксических ошибок запустить программу  (Run).  - Убедиться в правильности работы по состоянию ячеек памяти и регистров. - Для отладки можно пользоваться пошаговым режимом (Step)

В отчёте привести текст программ с комментариями.

Задания лабораторной работы №1 для выполнения на программном симуляторе.

А. Создать с помощью подпрограммы MASS во внутреннем ОЗУ массив из натурального ряда чисел от 0 до 21, начиная с адреса 30Н.

Mass: MOV A,#0

MOV R7,#22 ;счетчик элементов массива

MOV R0,#30H ;указатель адреса внутреннего ОЗУ

M1: MOV @R0,A

INC R0

INC A

DJNZ R7,M1

RET

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

Отладить и запустить программу, с помощью которой:

1. Обнулить все ячейки памяти, содержащие нечетные элементы массива. Подсчитать количество оставшихся ненулевых элементов и вывести это число в ячейку внутреннего ОЗУ с адресом 10Н и в порт Р0.

2. Обработать «разреженный» массив, содержащий нулевые элементы, и переслать обнаруженные ненулевые элементы во внутреннюю память, начиная с адреса 60Н. Подсчитать количество нулевых элементов и вывести это число в ячейку внутреннего ОЗУ с адресом 10Н и в порт Р0.

Указание: перед запуском программы с помощью поля Modify RAM обнулить некоторые элементы массива.

3. Переписать элементы массива, превысившие порог, в память с адреса 50Н. Подсчитать количество превышений порога и вывести в ячейку внутреннего ОЗУ с адресом 10Н и в порт Р0. Порог считывать или из ячейки внутреннего ОЗУ или с контактов порта Р2.

Указание: перед запуском программы с помощью поля Modify RAM записать в ячейку 60Н код порога (1 ... 20). Код порога также можно задавать «извне» на контактах порта Р2, нажимая кнопки 7,6,5,4,3,2,1,0.

4. Записать в ячейки внутреннего ОЗУ, начиная с адреса 10Н, адреса ячеек памяти, содержащих элементы массива, совпадающие с эталоном, хранящимся в ячейке с адресом 50Н (или на контактах порта Р2).

Указание: перед запуском программы с помощью поля Modify RAM записать в ячейку 50Н код эталона в пределах 1 … 20. Код эталона также можно задавать «извне» на контактах порта Р2, нажимая кнопки 7,6,5,4,3,2,1,0.

5. Найти значения и адреса наибольшего и наименьшего элементов в массиве. Сохранить значения в ячейках 10Н, 11Н, адреса в ячейках 20Н и 21Н.

6. Записать во внутреннее ОЗУ, начиная с адреса 50Н элементы массива, которые укладываются в границы допуска. Количество записанных элементов вывести в ячейку внутреннего ОЗУ с адресом 20Н и в порт Р0.

Указание: перед запуском программы в ячейках 10Н и 11Н с помощью поля Modify RAM записать коды нижней и верхней допусковых границ.

7. Переслать во внутренюю память, начиная с адреса 50Н, все элементы массива, кратные 3, с адреса 60Н – кратные 4.

8. Вычислить среднее арифметическое всех элементов массива. Записать его в ячейку 50Н.

Б. Программа размещает с адреса 2000Н (#TABSIN) массив из 256 чисел, представляющих один период синусоидального колебания. Нулевому уровню соответствует код 128 (80H). Отладить и запустить программу, с помощью которой:

1. Подсчитать количество четных и нечетных элементов массива TABSIN. Сохранить результаты в ячейках 10Н, 11Н.

2. Переписать во внутреннее ОЗУ с адреса 20Н только четные элементы массива.

3. Переписать в ОЗУ с адреса 20Н элементы массива, лежащие ниже нулевого уровня (меньше числа 128). Подсчитать их количество и записать результат в ячейку 10Н.

4. Переписать элементы массива, оказавшиеся ниже порога, в память с адреса 20Н, подсчитать их количество и записать результат в ячейку 10Н. Порог считывать или из ячейки внутреннего ОЗУ или с контактов порта Р2.

Указание: перед запуском программы с помощью поля Modify RAM записать в ячейку 12Н код порога (10 ... 80). Код порога также можно задавать «извне» на контактах порта Р2, нажимая кнопки 7,6,5,4,3,2,1,0.

5. Сравнить элементы массива TABSIN с эталоном. Адреса (DPL – младший байт регистра DPTR) совпавших с эталоном элементов массива сохранить во внутреннем ОЗУ, начиная с ячейки 20Н. Эталон считывать или из ячейки внутреннего ОЗУ или с контактов порта Р2.

Указание: перед запуском программы с помощью поля Modify RAM записать в ячейку 10Н код эталона (10 … 250). Код эталона также можно задавать «извне» на контактах порта Р2, нажимая кнопки 7,6,5,4,3,2,1,0.

6. Найти значения и адреса (DPL) наибольшего и наименьшего элементов в массиве TABSIN. Сохранить значения в ячейках 10Н, 11Н, адреса в ячейках 20Н и 21Н.

7. Записать в ОЗУ с адреса 20Н все элементы массива, кратные 5. Подсчитать их количество и записать результат в ячейку 10Н.

8. Записать во внутреннее ОЗУ, начиная с адреса 30Н элементы массива, которые укладываются в границы допуска. Количество записанных элементов вывести в ячейку внутреннего ОЗУ с адресом 20Н и в порт Р0.

Указание: перед запуском программы в ячейках 10Н и 11Н с помощью поля Modify RAM записать коды нижней и верхней допусковых границ. Расстояние между нижней и верхней границей не должно превышать 30D.

9. Вычислить среднее арифметическое всех элементов массива. Записать его в ячейку 50Н.

Соседние файлы в предмете Микропроцессорные устройства