Министерство общего и профессионального образования РФ
Хабаровский Государственный Технический Университет
Кафедра ВМ
Лабораторная работа № 1
По теории проектирования ЭВМ.
Выполнили: студенты гр. ВМ-51
Лазебник В.Н. , Кириченко М.А.
Проверил: преподаватель
Бурдинский И.Н.
1999 г.
Блок-схема алгоритма
Е
Программа таймера реального времени для УМПК80
0002 0800 .ORG 800H
0003 0800 ;=================================================================
0004 0800 ;ГЛАВНАЯ ПРОГРАММА СЧЕТЧИКА-ТАЙМЕРА
0005 0800 ;=================================================================
0006 0800 MAIN:
0007 0800 16 20 MVI D,020H
0008 0802 1E 00 MVI E,0
0009 0804 BEGIN:
0010 0804 CD 55 08 CALL INC_CNT
0011 0807 3A 19 0B LDA STOP
0012 080A ;ПРОВЕРКА НА ОСТАНОВ
0013 080A 1F RAR
0014 080B DA 14 08 JC M6
0015 080E CD 66 08 CALL TO7SEG
0016 0811 C3 17 08 JMP M7
0017 0814 M6: ;ВСТАВИТЬ ПРОГРАММУ ЗАДЕРЖКИ НА ВВРЕМЯ ПЕРЕВОДА +ВРЕМЯ JMP
0018 0814 CD 3A 08 CALL DELAY1
0019 0817 AF M7: XRA A ;ОБНУЛЯЕМ АККУМУЛЯТОР
0020 0818 D3 38 OUT 38H ;ГАСИМ ИНДИКАТОРЫ
0021 081A CD 98 08 CALL KEYB
0022 081D
0023 081D 01 01 0B LXI B,IND_BUF
0024 0820 3A 1B 0B LDA SHIFT ;В АККУМУЛЯТОР СМЕЩЕНИЕ ДЛЯ ВЫВОДА
0025 0823 83 ADD E
0026 0824 4F MOV C,A ;(B,C) -НА ТЕКУЩИЙ СИМВОЛ ДЛЯ ВЫВОДА
0027 0825 AF XRA A
0028 0826 D3 28 OUT 28H ;ГАСИМ ИНДИКАТОРЫ
0029 0828 0A LDAX B
0030 0829 D3 38 OUT 38H ;ВЫВЕЛИ СИМВОЛ
0031 082B 7A MOV A,D
0032 082C D3 28 OUT 28H
0033 082E 0F RRC
0034 082F 57 MOV D,A ;СОХРАНЯЕМ НОВУЮ МАСКУ
0035 0830 1C INR E
0036 0831 CD 47 08 CALL DELAY2
0037 0834 D2 04 08 JNC BEGIN
0038 0837 C3 00 08 JMP MAIN
0039 083A
0040 083A
0041 083A
0042 083A
0043 083A
0044 083A
0045 083A
0046 083A ;==================================================================
0047 083A ;ПРОГРАММА ЗАДЕРЖКИ НА ВРЕМЯ ПЕРЕВОДА В СЕМИСЕГМЕНТЫЙ КОД
0048 083A DELAY1:
0049 083A 2E 37 MVI L,55
0050 083C 2D DELAY1_L1: DCR L
0051 083D C2 3C 08 JNZ DELAY1_L1
0052 0840 00 NOP ; -¬
0053 0841 00 NOP ; +-ДЛЯ ПОЛУЧЕНИЯ ЗАДЕРЖКИ В 17 ТАКТОВ
0054 0842 00 NOP ; -0055 0843 00 NOP
0056 0844 00 NOP
0057 0845 00 NOP
0058 0846 C9 RET
0059 0847
0060 0847
0061 0847
0062 0847
0063 0847 ;==================================================================
0064 0847 ;ПРОГРАММА ЗАДЕРЖКИ НА ВРЕМЯ ВЫРАВНИВАНИЯ ДО 1 МИЛИСЕКУНДЫ
0065 0847 DELAY2:
0066 0847 2E 1D MVI L,29
0067 0849 2D DELAY1_L2: DCR L
0068 084A C2 49 08 JNZ DELAY1_L2
0069 084D 00 NOP ; -¬
0070 084E 00 NOP ; +-ДЛЯ ПОЛУЧЕНИЯ ЗАДЕРЖКИ В 17 ТАКТОВ
0071 084F 00 NOP ; -0072 0850 00 NOP
0073 0851 C3 54 08 JMP END1
0074 0854 C9 END1: RET
0075 0855 ;==================================================================
0076 0855 ;подпрограмма увелчения счетчика таймера
0077 0855 ;использует регистры: (A), (B,C)
0078 0855 ;изменяет флаг переноса
0079 0855 INC_CNT:
0080 0855 01 0A 0B LXI B,COUNTER
0081 0858 37 STC ;УСТАНАВЛИВАЕМ ПЕРЕНОС В 1
0082 0859 26 05 MVI H,5;СЧЕТЧИК ЦИКЛА РАВЕН 5
0083 085B INC_LOOP1:
0084 085B 0A LDAX B ;ЗАГРУЖАЕМ ОЧЕРЕДНУЮ ЦИФРУ
0085 085C CE 00 ACI 0 ;УВЕЛИЧИВАЕМ С УЧЕТОМ ПЕРЕНОСА
0086 085E 27 DAA ;ПРОИЗВОДИМ ДЕС. КОРРЕКЦИЮ
0087 085F 02 STAX B ;СОХРАНЯЕМ УВЕЛИЧЕННЫЕ ЦИФРЫ
0088 0860 25 DCR H ;УМЕНЬШАЕМ СЧЕТЧИК ЦИКЛОВ
0089 0861 03 INX B ;УВЕЛИЧИВАЕМ АДРЕС
0090 0862 C2 5B 08 JNZ INC_LOOP1 ;ЕСЛИ НЕ ВЕСЬ СЧЕТЧИК УВЕЛИЧИЛИ, ТО ПРОДОЛЖАЕМ
0091 0865 C9 RET
0092 0866 ;=========================================
0093 0866 ;ПРОГРАММА ДЛЯ ПЕРЕВОДА ИЗ УПАКОВАННОГО ДВОИЧНО-ДЕСЯТИЧНОГО ФОРМАТА
0094 0866 ;В КОДЫ СЕМИСЕГМЕНТНОГО ИНДИКАТОРА
0095 0866 ;ИСПОЛЬЗУЕТ АККУМУЛЯТОР, РЕГИСТРОВУЮ ПАРУ (B,C)
0096 0866 ;ПОРТИТ ФЛАГ ПЕРЕНОСА
0097 0866 ;=========================================
0098 0866 TO7SEG:
0099 0866 D5 PUSH D
0100 0867
0101 0867 1E 05 MVI E,5
0102 0869 21 0A 0B LXI H,COUNTER
0103 086C 01 09 0B LXI B,IND_BUF+8
0104 086F
0105 086F 7E TO7SEG_L1: MOV A,M
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.