|
Главная -> Появление первого микропроцессора 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 [96] 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 которая передает управление на начало пусковой последовательности. После ввода первого параметра выполняется цикл ввода второго и третьего параметров. Так как эти параметры могут быть опушены, то для подсчета введенных параметров в регистре (D) организуется специальный счетчик. Второй счетчик в регистре (Е) служит для ограничения числа итераций цикла до двух (количество допустимых точек разрыва). На каждой итерации этого цикла через программу ВЫВС1 производится вывод символа «-», а затем с помощью программы ВВ2БН вводится значение параметра и записывается в стек. После этого соответствующим образом модифицируются оба счетчика. Если обнаруживается, что допустимое число параметров исчерпано, управление передается на вход ВОП программы диспетчера. Выход из данного цикла производится в том случае, если после очередного параметра введен символ. ВК, что фиксируется установкой в единицу флага CY после возврата из подпрограммы ВВ2БН. В момент выхода из цикла введенные параметры размещаются в вершине стека, а их количество- в регистре (D). Следующий цикл обеспечивает формирование точек останова в программе пользователя. На каждой итерации этого цикла значение параметра извлекается из стека и записывается в область сохранения. Затем байт, который адресует данный параметр, также записывается в область сохранения, а вместо него записывается код команды рестарта RST О (0С7Н). Количество итераций цикла определяется содержимым регистра (D). Заключительный фрагмент программы вьшолняет возврат, перед которым с помощью программы КОНС производится переход на новую строку консоли, что информирует пользователя о запуске его программы. 6.6.9. ОБРАБОТКА ТОЧЕК РАЗРЫВА При достижении программой пользователя адреса останова, по которому записан код команды RST О, управление передается программе HRST О, обеспечивающей запись содержимого регистров в область сохранения и восстановление содержимого точек разрыва:
i ПОЛПРОГРАНМА ОБРАБОТКИ ТОЧЕК РАЗРЫВА. ;xxxxhxxxxxxx«xxxxxhxhxxxxhxxhxhxxxxxxxhxxxxxhxxxxxhxxxj( 5 СОХРАНЕНИЕ РЕГИСТРОВ В СТЕКЕ ПРЕРВАННОЙ ПРОГРАННЫ
; ЕСЛИ НЕ СОВПАДАЕТ ; (D) - КОЛИЧЕСТВО ТОЧЕК ТОЧКА РАЗРЫВА НЕ УСТАНОВЛЕНА ЕСЛИ НЕ ВСЕ ТОЧКИ ВОССТАНОВЛЕНЫ Первоначально все регистры процессора сохраняются в стеке программы пользователя, из которого затем переписываются в область сохранения. При этом содержимое регистровых пар (PSW), (И, L), (D, Е) и (В, С) переписывается с помогцью итеративного цикла, а запись регистровых пар (И, L), (PC) и (SP) выполняется в отдельных фрагментах программы. Значение PC формируется из значения адреса возврата путем декрементирования его, так как при выполнении команды RST О адрес возврата указывает на следующую за ней команду. Содержимое указателя стека SP получается с помощью команды DAD SP при предварительно обнуленной регистровой паре (И, L). После записи регистров в область сохранения в регистр (SP) загружается адрес начала стека монитора. Затем определяется, какая из двух точек разрыва «сработала». Для этого значения полученного адреса останова сравниваются с соответствующими элементами области сохранения, заполнение которых производилось при обработке директивы G. Если оба сравнения проходят безуспешно, это интерпретируется как сбой, и управление передается на вход инициализации монитора. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 [96] 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 0.0177 |
|