[assembler]доработка программы с индикаторами

  • Автор темы Rydj
  • Дата начала
R

Rydj

Доброго времени суток имеется задание: имеется 16 бинарных датчиков, формирующих сигналы с уровнями логических 0 или 1. Необходимо с периодичностью в 1 секунду производить опрос всех датчиков, подсчитывать сумму единиц результата опроса и выводить ее на двухразрядный семисегментный индикатор в виде десятичного числа.

На практике разбирали немного похожую программу:
Написать программу, постоянно опрашивающую порт ввода 1, на четыре младших разряда которого поступает двоично-десятичный код, и выводящую соответствующую этому коду десятичную цифру на семисегментый индикатор, подключенный к порту вывода 2.
Решил взять её за основу
Код:
START:	IN	01h;ввести байт данных из порта ввода 1.
ANI	00001111b		  ;обнулить не интересующие нас четыре старших				  разряда введенного байта.
LXI	DE,0000h		  ;обнулить регистровую пару DE.
MOV	E,A					;переслать двоичный код индицируемой цифры в младший регистр E регистровой пары DE.
LXI	HL,TABL		  ;записать в регистровую пару HL адрес, соответствующий метке TABL.
DAD	DE				  ;сложить содержимое регистровых пар DE и HL, результат занести в HL, т.е. в HL сформировался адрес ячейки памяти с индицируемым семисегментным кодом.
MOV	A,M				 ;переслать семисегментный код из адресованной ячейки памяти в аккумулятор.
OUT	02h			 ;Вывести семисегменый код в порт вывода 2.
JMP	START;перейти в начало программы.
TABL:	DB	3Fh;занести в последо-вательные ячейки памяти таблицу семисегментных кодов, начиная с ячейки с адресом, соответствую-щим метке TABL*.

DB	06h	
DB	5Bh	
DB	4Fh	
DB	66h	
DB	6Dh	
DB	7Dh	
DB	07h	
DB	7Fh	
DB	6Fh

Я так понял что мне нужно 2 порта каждый порт опрашивает по 8 датчиков, ток как реализовать это я не понимаю
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!