Описание реализуемой программы на языке ассемблера

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

Перейти на страницу: 1 2 

Читайте также

Проектирование мобильного включателя
В данном курсовом проекте разрабатывается мобильный включатель, который предназначен для дистанционного заблаговременного включения подогрева моторного отсека автомобиля, при хранении ав ...

Обучающая подсистема для лабораторного исследования характеристик замкнутых САУ в среде интернет
В последние десятилетия в зарубежных системах образования произошли существенные изменения, обусловленные бурным развитием научно-технического прогресса и его воздейст ...

Проектирование передатчика телевизионной системы на печатной плате
Телевизионный передатчик: совокупность специализированных технических средств, применяемых в процессе телевещания (кроме источника сигнала и его тракта, источника электропитания и энерго ...

Основные разделы

Все права защищены! (с)2019 - www.generallytech.ru