out PIC_ICW1, al al, 01000000b ; Запись ICW2 в КП (номер вектора прерывания)
out PIC_ICW2, al al, 00000000b ; Запись OCW1 в КП (маскирование прерываний)
out PIC _ICW1, al ; Разрешение аппаратных прерываний
;-
; - Начало основной программы -
;-:
ProgramKlavIn ProgramCalculateY1SetY1SetInd ProgramStart
;-
; - Подпрограмма обработки прерывания -
;-: ax ProgramCalculateY2SetPIT ax
;-
; - Подпрограмма опроса клавиатуры (порта А ППА) -
;-: ax dx bx
; Принять и сохранить значение Х
in ax, PPA_A
mov ds: Data_X, ax
; Принять и сохранить значение К
in ax, PPA_B ds: Data_K, ax
bx dx ax
;-
; - Подпрограмма рассчитывает У1 и выводит его в порт С -
;-SetY1SetInd: ax dx bx
; расчет У1
mov ax, ds: Data_X ; Перемещение переменной X в ax
cmp ax, ds: Data_K ; Сравнивание X и K
jl xmin ; Если X меньше К, то переход на метку xminax, ds: Data_K ; Перемещение переменной K в ax
xmin: add ax, ds: Data_x ; MIN (X, K)+X
mov ds: Data_Y1, ax ; Cохранение результата
; Вывод в порт С
mov bx, ax
and ax, 0000000000001111b ; выделение младшей тетрады в ax
and bx, 0000000011110000b ; выделение старшей тетрады в bx ax, bx ; младшая и старшая тетрады в общий регистр ax
out PPA_C, al
bx dx ax
;-
; - Подпрограмма расчета Y2 и программирования ПИТ -
;-SetPIT: ax dx
; расчет У2 ax, ds: Data_X ; Перемещение переменной X в ax
cmp ax, ds: Data_K ; Сравнивание X и K
jg xmax ; Если X меньше К, то переход на метку xminax, ds: Data_K ; Перемещение переменной K в ax
xmax: add ax, 4d ; MAX (X, K)+4
mov ds: Data_Y2, ax
; программирование ПИТ по значению У2 ax, 0000000000011110b ; записать младший байт в счетчик 0
; и установить режим 3
out Adr_PIT_U, al
out Adr_PIT_0, dl ax, 0000000000101110b ; записать старший байт
out Adr_PIT_U, al Adr_PIT_0, dh ax, 0000000000001110b ; защелкнуть Adr_PIT_U, al dx ax
;-
; - Подпрограмма расчета Y3 -
;-SetPIT: ax dx
; расчет У3
mov ax, ds: Data_X ; Перемещение переменной X в ax
cmp ax, ds: Data_K ; Сравнивание X и K
jg xmax2 ; Если X меньше К, то переход на метку xminax, ds: Data_K ; Перемещение переменной K в ax
xmax2:ax, 2d ; MAX (X, K)*2 ds: Data_Y3, ax
; Программирование ПИТ для У3 ax, 0000000001010000b ; записать младший байт в счетчик 0
; и установить режим 3
out PIT_U, al
out PIT_1, dl ax, 0000000001100000b ; записать старший байт
out PIT_U, al PIT_1, dh ax, 0000000001000000b ; защелкнуть PIT_U, al dx
pop ax
ret
; - После сброса процессор выполняет команду из адреса CS:FFF0h
ORG 0FFF0hProgramBegin
ProgramBegin
Читайте также
Разработка лабораторного стенда Измерение опасных акустических сигналов
Для
человека слух является вторым по информативности после зрения. Поэтому одним из
довольно распространенных каналов утечки информации является акустический
канал. В акустическом канал ...
Одномодовые оптические волокна
В одномодовых оптических волокнах (SM ОВ) диаметр сердцевины соизмерим с длиной волны, и за счет
этого в нем существует только одна основная направляемая мода LP01.
Рис. 1. Р ...
Применение пространственной фильтрации для улучшения радиоголографических изображений объектов, находящихся за препятствиями
В настоящее время активно развивается раздел науки, посвященный
радиовидению. Это связано с тем, что радиовидение может найти свое применение в
широкой сфере деятельности человека для об ...