Материалы сайта
Это интересно
Стробоскопический аналого-цифровой преобразователь
Пример подпрограммы обмена по прерыванию 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 ----------------------- Лит. Утв. Н. Контр Пров. Разраб. Лист Листов Изм Лист № докум. Подп Дата