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
Читайте также
Проект организации широкополосного доступа в коттеджном микрорайоне Чистопрудный г. Ижевска
Возможность в любое время в любом месте при любых условиях
иметь доступ к неограниченным информационным ресурсам становится для
современного человека одним из самых важных аспектов жизни ...
Проектирование цифрового устройства для реализации типовых микроопераций
Разработать функциональную и принципиальную схему операционного
устройства исходя из основных параметров по вариантам.
Также требуется предоставить блок схемы алгоритмов выполнения опе ...
Проектирование устройства автоматической компенсации доплеровской частоты для СДЦ РЛС 5Н84А
Широкое
применение радиолокационной техники в военных целях (воздушная и наземная
разведки, навигация, вывод на траекторию ракет различного назначения) вызвало в
последние годы бурное р ...