Примеры программ с использованием косвенной адресации.




Пример 4. Установить 0 в область ОЗУ, начиная с адреса 1200H, содержащую 16 байт и остановить процессор.

 

Программа имеет вид.

Адрес OBJ Метка КОП Операнды Комментарий:
1000H     LXI H, 1200H : HL <= 1200H
1001H         : адрес 1-й ячейки
1002H          
1003H     MVI B, 0FH : B <= 16D число байт
1004H 0F        
1005H   CLR: MVI M, 00H : M(HL) <= 0
1006H          
1007H     INX H : HL <= HL + 1
1008H     DCR B : B <= B - 1
1009H C2   JNZ CLR : переход если Z = 0
100AH          
100BH          
100CH     MVI M, 00H : M(HL) <= 0 обнуление
100DH         : 16-й ячейки
100EH     HLT   : остановка процессора.

После выполнения программы и остановки процессора в крайней левой позиции дисплея высветится E. После нажатия клавиши Reset следует проверить ячейки памяти с адресами от 1200H до 120FH, в них должен быть записан 0.

 

Пример 5. Инвертировать старшие тетрады регистров В и С, результат поместить в ячейку памяти по адресу 1111Н, после чего в регистровой паре HL получить содержимое программного счётчика и остановить процессор.

 

Адрес OBJ Метка КОП Операнды Комментарий:
1000H     LXI H, 1111H : HL <= 1111H
1001H         : адрес 1-й ячейки
1002H          
1003H     MOV A, C : A <= C
1004H EE   XRI 0F0H : A <= A xor F0H
1005H 0E       : 0FH - маска
1006H     MOV M, A : M(HL) <= A
1007H     INX H : HL <= HL + 1
1008H     MOV A, B : A <= B
1009H EE   XRI 0FOH : A <= A xor F0H
100AH 0F       : 0FH - маска
100BH     MOV M, A : M(HL) <= A
100CH CD   CALL MET 1 : -(SP) <= MET 1
100DH 0F       : PC <= MET 1
100EH          
100FH E3 MET 1: XTHL   : HL <=> (SP)
1010H     HLT   : остановка процессора

Перед запуском программ в регистры В и С необходимо загрузить два HEX числа, например, 0025Н и FFABH.

После выполнения программы в ячейки памяти по адресу 1111Н будет находиться число FF25H, а по адресу 1112Н – число 00АВН, в регистровой паре HL – число 100FH.

 

Варианты заданий

1. В 100 ячеек, начиная с адреса 1100, записать числа от 1 до 100.

2. В ячейки памяти с адреса 1100 записать четные числа от 2 до 200.

3. С адреса 1200 по 1300 подсчитать количество четных чисел.

4. С адреса 1100 по 1200 подсчитать количество нечетных чисел.

5. Записать число 0F в аккумулятор, подсчитать количество единиц и записать в адреса с 1300 по 1500.

6. Записать число 3F в аккумулятор, подсчитать количество нулей и записать с адреса 1300 по 1400.

7. Число F5 сбросить старшую тетраду и записать в адреса с 1700 по 1800.

8. Число 0F записать в адреса 1233, 1243 и т.д. до 50 ячеек памяти.

9. Число 55 записать по адресам 1200, 1205, 120А … до 50 ячеек.

10. Число 44 записать с адреса 1200, 120А … в 50 ячеек.

11. Записать число от 0 до 9 в адрес с 1200 и перевернуть.

12. Записать число от 0 до 100 в адрес с 1100, установить третий бит в единицу.

13. Установить вершину стека 1200, записать число от 0 до 9F.

14. Установить вершину стека 1300, записать числа 1234, 5678….

15. Перейти на подпрограмму по адресу 1300, сложить в 100 раз два числа 05 и 50 и записать по адресам с 1500 сто раз.

16. С адреса 1200 записать число от 0 до 100 через 2 байта (1202, 1204…).

17. С адреса 1200 записать числа 0, 3, 6 и т.д. в адреса 1203, 1206…..

18. Записать 100 чисел в адреса с 1100, потом переслать их в адреса с 1200.

19. Переслать содержимое четных ячеек памяти с адреса 1100 в адреса 1200 50 чисел.

20. Переслать числа с нечетных адресов с 1101 в адреса 1200 и т.д.

21. Сдвинуть массив из 50 чисел с адреса 1100 влево на одно число.

22. Сдвинуть массив из 50 чисел вправо на 3 ячейки c адреса 1200.

23. Содержимое 50 ячеек памяти с адреса 1200 записать в стек.

24. Подсчитать количество единиц в 50 ячейках памяти с адреса 1100 и записать по адресу 1200, 1201 и т.д.

25. Подсчитать количество 0-й в 50 ячейках памяти с адреса 1200 и записать по адресу 1300, 1301 и т.д.

26. Подсчитать количество четных чисел в 50 ячейках памяти и записать их по адресу 1600.

27. Подсчитать количество нечетных чисел в 50 ячейках памяти с адреса 1200 и записать по адресу 1300.

 

ЛАБОРАТОРНАЯ РАБОТА № 3.

ОРГАНИЗАЦИЯ ВВОДА-ВЫВОДА В МИКРОПРОЦЕССОРНУЮ СИСТЕМУ (ПРОГРАММНО-УПРАВЛЯЕМЫЙ ОБМЕН. ОБМЕН ПО ПРЕРЫВАНИЮ. ПРЯМОЙ ДОСТУП К ПАМЯТИ.

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

Организация различных видов обмена для микро-ЭВМ «Энерго».

Программы составлены для ППА КР 580 ВВ 55, подключенного по схеме на рис.3.1. На схеме показаны только те выводы ППА, которые рассматриваются в программах.

Канал А используется для вывода информации на дисплей. Наличие логического нуля в разряде канала А приводит к свечению соответствующего сегмента a, b, c … g индикатора (рис.3.2). При кодировании символов значение разряда РА7 безразлично, но для определённости можно принять его равным 1.

Младшие разряды канала С осуществляют подключение через дешифратор DC индикаторов и клавиатуры, в данном случае при нулевых значениях младших разрядов канала С подключается через 0 – выход дешифратора индикатор нулевой позиции дисплея и вся вертикаль матрицы клавиатуры, в которой находится клавиша «0».

Через старшие разряды канала С осуществляется ввод кода нажатой клавиши при опросе клавиатуры.

Настройка ППА на соответствующий режим работы производится записью управляющего слова 88Н в регистр управляющего слова ППА по адресу FBH. Адрес порта – F8H, адрес порта – FAH.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-07-22 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: