Курсовой - Стробоскопический АЦП / program
.doc
Пример подпрограммы обмена по прерыванию
TITLE CTRNAM (EXE)
STCKSG SEGMENT PARA ‘Stack’ ; Инициализация сегмента стека
DW 32 DUP (?)
STCKSG ENDS
;----------------------------------------------------
DATASG SEGMENT PARA ‘Data’ ; Инициализация сегмента данных
VECT5 EQU 5H ; Задание векторов
VECT10 EQU 10H ; прерываний
VECT11 EQU 11H
ACPSTRT EQU 14300H ; Адрес запуска АЦП
ACPREAD EQU 14301H ; Адрес чтения из модуля
ACPWRITЕ EQU 14302H ; Адрес записи в модуль
ACPFLAG EQU 14303H ; Адрес маски
KBSAVE DWORD ? ; Переменная вектора прерывания
ENDFLAG DB 0 ; Флаг окончания обмена
DATASG ENDS
;----------------------------------------------------
INTTAB SEGMENT AT 0H ; Получаем доступ к таблице векторов
ORG VECT5*4H
KBADDR LABEL DWORD
INTTAB ENDS
;----------------------------------------------------
CODESG SEGMENT PARA ‘Code’
BEGIN PROC FAR
ASSUME CS:CODESG, DS:INTTAB, SS:STCKSG, ES:DATASC
PUSH DS
SUB AX, AX ; Проводим
PUSH AX ; начальную
MOV AX, DATASC ; инициализацию
MOV ES, AX ; сегментов
MOV AX, INTTAB
MOV DS, AX
CLI ; Запрет прерываний
MOV AX, WORD PTR KBADDR
; Устанавливаем новый
MOV WORD PTR KBSAVE, AX
; вектор прерывания
MOV AX, WORD PTR KBADDR + 2
; и сохраняем старый
MOV WORD PTR KBSAVE + 2, AX
MOV WORD PTR KBADDR, OFFSET CALC
MOV WORD PTR KBADDR + 2, CS