Подробнаяструктурная схема.
NAME S | название модуля программы для сборки |
CSEG AT 0H | задание сегмента памяти программ с адреса 0Н |
ORG 9000H | задание адреса начала программы с 9000Н |
MOV P1,#10101010B | запись двоичного числа 10101010 в порт P1 |
CALL 87bdh | |
MOV P3,#11001101B | запись двоичного числа 11001101 в порт P3 |
CALL 87bdh | |
MOV A,P1 | запись данных из P1 в аккумулятор |
CALL 87bdh | |
CPL A | инвертирование данных в аккумуляторе |
CALL 87bdh | |
MOV P1,A | запись данных из аккумулятора в порт Р1 |
CALL 87bdh | |
MOV A,P3 | запись данных из порта P3 в аккумулятор |
CALL 87bdh | |
CPL A | инвертирование данных в аккумуляторе |
CALL 87bdh | |
MOV P3,A | запись данных из аккумулятора в порт Р3 |
CALL 87bdh | |
MOV 21H,P1 | запись данных из порта P1 в ячейку памяти с адресом 21H |
CALL 87bdh | |
MOV 23H,P3 | запись данных из порта P3 в ячейку памяти с адресом 21H |
CALL 87bdh | |
MOV P1,#01010101B | запись двоичного числа 01010101 в порт P1 |
CALL 87bdh | |
MOV A,P1 | запись данных из порта P1 в аккумулятор |
CALL 87bdh | |
CPL A | инвертирование данных в аккумуляторе |
CALL 87bdh | |
MOV P1,A | запись данных из аккумулятора в порт P1 |
CALL 87bdh | |
MOV 20H,P1 | запись данных из порта P1 в ячейку памяти с адресом 20H |
CALL 87bdh | |
MOV P3,#11001100B | запись двоичного числа 11001100 в порт P3 |
CALL 87bdh | |
MOV A,P3 | запись данных из порта P1 в аккумулятор |
CALL 87bdh | |
CPL A | инвертирование данных в аккумуляторе |
CALL 87bdh | |
MOV P3,A | запись данных из аккумулятора в порт P3 |
CALL 87bdh | |
MOV 22H,P3 | запись данных из порта P3 в ячейку памяти с адресом 20H |
CALL 87bdh | |
MOV R0,#20H | в регистр R0 заносится операнд 20H |
CALL 87bdh | |
MOV DPTR,#0 | адресация внешней памяти |
CALL 87bdh | |
MOV R5, #10 | загрузка счетчика |
CALL 87bdh | |
M1: MOV A,@R0 | пересылка в аккумулятор содержимого внутренней памяти |
CALL 87bdh | |
MOVX @DPTR,A | пересылка из аккумулятора во внешнюю память, адресуемую регистром DPTR |
CALL 87bdh | |
INC R0 | увеличение адреса внутренней памяти на 1; |
CALL 87bdh | |
INC DPTR | увеличение адреса внешней памяти на 1; |
CALL 87bdh | |
DJNZ R5,M1 | уменьшение счетчика на 1 и проверка его на 0, если его значение не равно 0, то переход на M1 |
CALL 87bdh | |
NOP | |
END |
Контрольныйпример.
В порты быливведены числа в двоичном формате: в P0 - 01010101; в P1-10101010; в P2 - 11001100; в P3 – 11001101. На дисплее платы эти числа были отображены вшестнадцатеричном виде: 55, AA, CC,CD соответственно. После выполнения программы этизначения были инвертированы: AA, 55, 33, 32 соответственнои записаны в ячейки внешней памяти. Результаты совпали с расчетными.