Код:7. ФОРМАТ ФАЙЛА SAV ФОРМАТ SAV ИСПОЛЬЗУЕТСЯ ДЛЯ ПРОГРАММ, КОТОРЫЕ БУДУТ РАБОТАТЬ В ФОНОВОМ РАЗДЕЛЕ. ЭТОТ ФОРМАТ СОДЕРЖИТ АБСОЛЮТНЫЕ АДРЕСА ПАМЯТИ. В НУЛЕВОМ БЛОКЕ ФАЙЛА НАХОДИТСЯ ИНФОРМАЦИЯ, СОСТАВЛЕН- НАЯ КОМПОНОВЩИКОМ ДЛЯ МОНИТОРА. ОСТАЛЬНЫЕ БЛОКИ СОДЕРЖАТ ДВОИЧНЫЕ КОДЫ ПРОГРАММЫ. В ЯЧЕЙКАХ НУЛЕВОГО БЛОКА ФАЙЛА НАХОДИТСЯ СЛЕДУЮЩАЯ ИНФОРМАЦИЯ ДЛЯ МОНИТОРА: 0 - ПЕРВЫЕ ТРИ СИМВОЛА (VIR) КЛЮЧА VIRTUAL В КОДЕ RAD50; ИСПОЛЬЗУЕТСЯ, ЕСЛИ КОМПОНОВКА ПРОИЗВОДИЛАСЬ С КЛЮЧОМ /V; 2 - ВЕРХНИЙ ВИРТУАЛЬНЫЙ АДРЕС ПАМЯТИ, ИСПОЛЬЗУЕМЫЙ ПРОГРАММОЙ; ИСПОЛЬЗУЕТСЯ, ЕСЛИ ПРИ КОМПОНОВКЕ В КОМАНДНОЙ СТРОКЕ БЫЛ УКАЗАН КЛЮЧ /V; 4 - 12 - НЕ ИСПОЛЬЗУЮТСЯ; 14, 16 - ВЕКТОР ПРЕРЫВАНИЙ ПО ИНСТРУКЦИИ BPT; УСТАНАВЛИ- ВАЕТСЯ ТОЛЬКО, ЕСЛИ ПРИ РАБОТЕ XM-МОНИТОРА В КОМАНДНОЙ СТРОКЕ КОМПОНОВЩИКА БЫЛ УКАЗАН КЛЮЧ /R; 20, 22 - ВЕКТОР ПРЕРЫВАНИЙ ПО ИНСТРУКЦИИ IOT; УСТАНАВЛИ- ВАЕТСЯ ТОЛЬКО ПРИ РАБОТЕ XM-МОНИТОРА, ЕСЛИ В КОМАНДНОЙ СТРОКЕ КОМПОНОВЩИКА УКАЗАН КЛЮЧ /R; 24 - 32 - НЕ ИСПОЛЬЗУЮТСЯ; 34, 36 - ВЕКТОР ПРЕРЫВАНИЙ ПО ИНСТРУКЦИИ TRAP; УСТАНАВЛИ- ВАЕТСЯ, ЕСЛИ ПРИ КОМПОНОВКЕ В КОМАНДНОЙ СТРОКЕ БЫЛ УКАЗАН КЛЮЧ /R; 40 - СТАРТОВЫЙ АДРЕС ПРОГРАММЫ; 42 - НАЧАЛЬНОЕ ЗНАЧЕНИЕ УКАЗАТЕЛЯ СТЕКА (ИЗМЕНЯЕТСЯ КЛЮЧОМ КОМПОНОВЩИКА /M); 44 - СЛОВО СОСТОЯНИЯ ПРОГРАММЫ (JSW); 46 - АДРЕС ЗАГРУЗКИ USR (0 ОЗНАЧАЕТ СТАНДАРТНОЕ РАЗМЕ- ЩЕНИЕ); 50 - ВЕРХНИЙ АДРЕС ПАМЯТИ, ИСПОЛЬЗУЕМЫЙ ПРОГРАММОЙ; 52 - 54 - НЕ ИСПОЛЬЗУЮТСЯ; 56 - В TS-МОНИТОРЕ ИСПОЛЬЗУЕТСЯ ДЛЯ УКАЗАНИЯ РАЗМЕРА ОБЛАСТИ В КСЛОВАХ, ТРЕБУЕМОЙ ДЛЯ РАБОТЫ ПРОГРАММЫ; 60 - 64 - НЕ ИСПОЛЬЗУЮТСЯ; 66 - АДРЕС НАЧАЛА БЛОКОВ ОПРЕДЕЛЕНИЯ ОКОН (УСТАНАВЛИ- ВАЕТСЯ, ЕСЛИ БЫЛ ЗАДАН КЛЮЧ КОМПОНОВЩИКА /V); 70 - 356 - НЕ ИСПОЛЬЗУЮТСЯ; 360 - 377 - КАРТА ЗАГРУЗКИ ПРОГРАММЫ В ПАМЯТЬ. ЯЧЕЙКА 40, СОДЕРЖАЩАЯ АДРЕС ЗАПУСКА ПРОГРАММЫ, МОЖЕТ БЫТЬ УСТАНОВЛЕНА ПРИ КОМПОНОВКЕ КЛЮЧОМ /TRANSFER. НАПРИМЕР, УКАЗАТЬ АДРЕС ЗАПУСКА ПРОГРАММЫ РАВНЫМ 2000 (ВОСЬМЕРИЧНОЕ): .LINK PROGR.OBJ/TRANSFER:2000 ПРОГРАММА PROGR.SAV, СОЗДАВАЕМАЯ КОМПОНОВЩИКОМ, БУДЕТ ЗАПУСКАТЬСЯ С 2000 АДРЕСА. ОБЫЧНО АДРЕС ЗАПУСКА ПРОГРАММЫ ОПРЕДЕЛЯЕТСЯ ИЗ ДИРЕКТИВЫ .END. ЯЧЕЙКИ 360 - 377 В НУЛЕВОМ БЛОКЕ ФАЙЛА ИСПОЛЬЗУЮТСЯ КОМПОНОВЩИКОМ ДЛЯ ПЕРЕДАЧИ ИНФОРМАЦИИ О РАСПРЕДЕЛЕНИИ ПАМЯ- ТИ KMON. КАЖДЫЙ БИТ ЯЧЕЕК СООТВЕТСТВУЕТ ОПРЕДЕЛЕННОМУ БЛОКУ ПАМЯТИ ИЗ 256 СЛОВ И УСТАНАВЛИВАЕТСЯ В ТОМ СЛУЧАЕ, ЕСЛИ ПРОГРАММА ЗАНИМАЕТ ХОТЯ БЫ ОДНО СЛОВО В ДАННОМ БЛОКЕ ПАМЯ- ТИ. ЭТА ИНФОРМАЦИЯ ИСПОЛЬЗУЕТСЯ KMON ДЛЯ ОПРЕДЕЛЕНИЯ, БУДЕТ ЛИ ПОЛЬЗОВАТЕЛЬСКАЯ ПРОГРАММА ПЕРЕКРЫВАТЬ KMON И USR. ПРИ ЗАГРУЗКЕ НУЛЕВОГО БЛОКА В KMON ПРОИЗВОДИТСЯ ПРО- ВЕРКА ЯЧЕЕК БЛОКА ОТНОСИТЕЛЬНО БИТОВОЙ СХЕМЫ ЗАЩИТЫ СИСТЕ- МЫ, КОТОРАЯ СОДЕРЖИТСЯ В RMON. В ЯЧЕЙКИ, КОТОРЫЕ ЗАЩИЩЕНЫ В СХЕМЕ, ТАКИЕ, КАК НАПРИМЕР, ВЕКТОРЫ УСТРОЙСТВ СИСТЕМЫ, ЗАПИСЬ ИНФОРМАЦИИ ИЗ НУЛЕВОГО БЛОКА НЕ ПРОИЗВОДИТСЯ. КОМАНДЫ МОНИТОРА R И RUN СЛУЖАТ ДЛЯ ЗАГРУЗКИ И ЗАПУСКА ПРОГРАММ ТИПА SAV. КОМАНДА RUN ОБ'ЕДИНЯЕТ ДВЕ КОМАНДЫ: GET И START. ПРИ ВЫПОЛНЕНИИ ЭТОЙ КОМАНДЫ KMON СЧИТЫВАЕТ НУЛЕВОЙ БЛОК ФАЙЛА ТИПА SAV ВО ВНУТРЕННИЙ БУФЕР USR, ВЫБИРАЕТ ИНФОРМАЦИЮ ИЗ ЯЧЕЕК 40-62 И 360-377. СРАВНИВАЯ БИТОВУЮ ЗАЩИТУ ПАМЯТИ (LOWMAP), НАХОДЯЩУЮСЯ В RMON, С ЯЧЕЙКАМИ В НУЛЕВОМ БЛОКЕ, KMON ЗАГРУЖАЕТ В ПАМЯТЬ (В СООТВЕТСТВУЮЩУЮ ОБЛАСТЬ RMON) ИЗ БУФЕРА USR ТЕ ЯЧЕЙКИ, КОТОРЫЕ НЕ ЗАЩИЩЕНЫ. НАПРИМЕР, ВЕКТОРЫ ПРЕРЫВАНИЙ УСТРОЙСТВ, ДРАЙВЕРЫ КОТОРЫХ ВКЛЮЧЕНЫ В СИСТЕМНЫЕ ТАБЛИЦЫ RMON, НЕ БУДУТ ИЗМЕНЕНЫ. ЗАТЕМ KMON УСТАНАВЛИВАЕТ В ЯЧЕЙКУ 50 ВЕРХНИЙ АДРЕС ИСПОЛЬЗУЕМОЙ ПАМЯТИ ИЛИ ВЕРХНИЙ АДРЕС ПРОГРАММЫ, КАКИМ БЫ БОЛЬШИМ ОН НИ БЫЛ. ПРИ ВЫПОЛНЕНИИ КОМАНДЫ RUN ИЛИ GET KMON ПРОВЕРЯЕТ ВОЗ- МОЖНОСТЬ ПЕРЕКРЫТИЯ ЕГО ЗАГРУЖАЕМОЙ ПРОГРАММОЙ. ЕСЛИ ЭТО ИМЕЕТ МЕСТО, ТО KMON ПЕРЕСЫЛАЕТ ПЕРЕКРЫВАЮЩИЕ БЛОКИ ПРОГ- РАММЫ В ФАЙЛ СВОПИНГА SWAP.SYS. ПОСЛЕ ВЫПОЛНЕНИЯ ВСЕХ НЕОБ- ХОДИМЫХ ОПЕРАЦИЙ KMON, ПЕРЕД ПЕРЕДАЧЕЙ УПРАВЛЕНИЯ RMON, ПРОИЗВОДИТ СЧИТЫВАНИЕ В ПАМЯТЬ ТЕХ БЛОКОВ ПРОГРАММЫ, КОТО- РЫЕ БЫЛИ ЗАПИСАНЫ В ФАЙЛ SWAP.SYS И ОБМЕНИВАЛИСЬ С БЛОКАМИ KMON И, ВОЗМОЖНО, USR. В СЛУЧАЕ ВЫПОЛНЕНИЯ КОМАНДЫ R, KMON НЕ ВЫБИРАЕТ КАРТУ ЗАГРУЗКИ ДЛЯ ПРОСМОТРА, КАКИЕ БЛОКИ ФАЙЛА ДОЛЖНЫ ЗАГРУЖАТЬ- СЯ. ВМЕСТО ЭТОГО ОН ОБРАЩАЕТСЯ К RMON И СЧИТЫВАЕТ ВСЮ ИНФОРМАЦИЮ В ПАМЯТЬ СВЫШЕ 1000 АДРЕСА (КОМАНДА R НЕ ИСПОЛЬ- ЗУЕТ ФАЙЛ SWAP.SYS). МОНИТОР СЧИТАЕТ, ЧТО KMON И USR БЫЛИ УЖЕ ВЫГРУЖЕНЫ, И НАЧИНАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ.





Ответить с цитированием