CODE SEGMENT ORG 100H ASSUME CS:CODE,DS:CODE BEGIN: JMP START OLD_VIDEO LABEL DWORD IP_OLD DW ? CS_OLD DW ? PRO: ; НАЧАЛО РЕЗИДЕНТНОЙ ЧАСТИ CMP AH,09H ; Проверка, 9-я ли это функция: JZ A1 ; если да, то пользовательская обработка CMP AH,0AH ; Проверка, 10-я ли это функция: JZ A1 ; если да, то пользовательская обработка; JMP CS:OLD_VIDEO ; если нет, то системная обработка A1: CMP AL,32 ; Сравнить выводимый символ с пробелом JZ A2 MOV BL,0FH ; если пробел, то красный фон; JMP A3 A2: MOV BL,4FH ; если не пробел, то черный фон A3: MOV AH,09H ; Функция 09H JMP CS:OLD_VIDEO ; Системная обработка START: ; НАЧАЛО ВСПОМОГАТЕЛЬНОЙ ЧАСТИ MOV AX,3510H ; Чтение вектора 10H INT 21H MOV IP_OLD,BX ; Запись вектора 10H в метку MOV CS_OLD,ES MOV AX,2510H ; Установка вектора 10H на адрес LEA DX,PRO ; резидентной процедуры PRO INT 21H LEA DX,START ; Адрес конца резидентной части INT 27H ; KEEP CODE ENDS ; Конец сегмента кода END BEGIN ; Конец программы |