4 Программа.
;-----------------инициализация и программирование ВУ----------------------------------------------00000000h: MOV AL, 00h ;инициализация контроллера клавиатуры и
OUT 09h, AL ;дисплея
MOV AL, 28h ;установка тактовой частоты ft контроллера клавиатуры
OUT 09h, AL ;и дисплея
;программирование таймера
MOV AL, 34h ;загрузка УС (34h) в нулевой канал таймера
OUT 07h, AL ;
MOV AL, 70h ;загрузка УС (70h) в первый канал таймера
OUT 07h, AL ;
MOV AL, b0h ;загрузка УС (b0) во второй канал таймера
OUT 07h, AL
MOV AL, 04h ;загрузка константы в нулевой канал таймера
OUT 04h, AL ;(младший байт)
MOV AL, 1fh ;
OUT 04h, AL ;(старший байт)
MOV AL, 04h ;загрузка константы в первый канал таймера
OUT 05h, AL ;(младший байт)
MOV AL, 1fh ;
OUT 05h, AL ; (старший байт)
MOV AL, b0h ;загрузка константы во второй канал таймера
OUT 06h, AL ;(младший байт)
MOV AL, 4eh ;
OUT 06h, AL ;(старший байт)
;----------------определение количества квантующих импульсов------------------------------------IN 06h ;чтение младшего байта счётчика 2 канала таймера
MOV CL, AL ;
IN 06h ;чтение старшего байта счётчика 2 канала таймера
MOV CH, AL ;
;(рез-т в СХ)
MOV BX, 4e20h ;
SUB ВX, CX ;определяем количество импульсов, вошедших в
;измеряемый сигнал (рез-т в ВХ)
STI ;разрешение прерывания
HLT ;ожидание прерывания
;----------------вывод значения на индикатор-------------------------------------------------------------;-----------------определение и вывод на индикатор старшего разряда------------------------------MOV AX, BX ;
MOV DX, 2710h ;определение старшего разряда (крайн. левый)
MOV CX, 0h ;помещаем в СХ ноль
CMP AX, DX ;определяем есть ли старший разряд в AХ
;()
JNAE met_2 ;если рез-т меньше 10000dec то переходим на met_2
met_1: SUB AX, 2710h ;вычитаем 10000dec
INC CX ;CX=CX+1
CMP AX, DX ;определяем есть ли ещё старший разряд в AХ
JNBE met_1 ;определяем чему равен старший разряд (СХ=?)
met_2 MOV AL, 70h ;
OUT 09h, AL ;передача на ККД команды на прием данных
MOV AL, CX
OUT 08h, AL ;вывод на индикатор первой цифры (самый левый
;разряд)
;-----------------определение и вывод на индикатор следующего разряда--------------------------MOV DX, 3e8h ;определение второго разряда (расположен правее)
MOV CX, 0h ;помещаем в СХ ноль
CMP AX, DX ;определяем есть ли этот разряд в AХ
;()
JNAE met_4 ;если рез-т меньше 1000dec то переходим на met_4
met_3: SUB AX, 3e8h ;вычитаем 1000dec
INC CX ;CX=CX+1
CMP AX, DX ;определяем есть ли ещё старший разряд в AХ
JNBE met_3 ;определяем чему равен старший разряд (СХ=?)
met_4 MOV AL, 70h ;
OUT 09h, AL ;передача на ККД команды на прием данных
MOV AL, CX ;
OUT 08h, AL ;вывод на индикатор второй цифры
;-----------------определение и вывод на индикатор третьего разряда--------------------------MOV AX, BX ;
MOV DX, 64h ;определение третьего разряда
MOV CX, 0h ;помещаем в СХ ноль
CMP AX, DX ;определяем есть ли этот разряд в AХ
;()
JNAE met_6 ;если рез-т меньше 100d то переходим на met_6
met_5: SUB AX, 64h ;вычитаем 100d
INC CX ;CX=CX+1
CMP AX, DX ;определяем есть ли ещё старший разряд в AХ
JNBE met_5 ;определяем чему равен старший разряд (СХ=?)
met_6 MOV AL, 70h ;
OUT 09h, AL ;передача на ККД команды на прием данных
MOV AL, CX ;
OUT 08h, AL ;вывод на индикатор третьей цифры
;-----------------определение и вывод на индикатор четвертого разряда--------------------------MOV AX, BX ;
MOV DX, 0аh ;определение четвёртого разряда (крайний правый)
MOV CX, 0h ;помещаем в СХ ноль
CMP AX, DX ;определяем есть ли этот разряд в AХ
;()
JNAE met_8 ;если рез-т меньше 10d то переходим на met_8
met_7: SUB AX, 0аh ;вычитаем 10d
INC CX ;CX=CX+1
CMP AX, DX ;определяем есть ли ещё старший разряд в AХ
JNBE met_7 ;определяем чему равен старший разряд (СХ=?)
met_8 MOV AL, 70h ;
OUT 09h, AL ;передача на ККД команды на прием данных
MOV AL, CX ;
OUT 08h, AL ;вывод на индикатор четвертой цифры
HLT ; ожидание сигнала “сброс”
1F0h: CLI ; запрещение прерывания
JMP 00000000h ; и переход на основную программу
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.