Доставка цветов в Севастополе: SevCvety.ru
Главная -> Появление первого микропроцессора

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 О, обеспечивающей запись содержимого регистров в область сохранения и восстановление содержимого точек разрыва:



FA02 F3

FA03 Е5

PUSH

FA04 В5

PUSH

FA05 С5

PUSH

FA06 F5

PUSH

СОХРАНЕНИЕ РЕГИСТРОВ AiF.D,E,B И С В ОСР

FA07 0603

FA09 2А0300

LI«.D

FA0C 2ЕЕВ

L.OEBH

FA0E 2В

ЦИКЛ15: вех

FAOF В1

FA10 72

FA11 2В

FA12 73

FA13 05

FA14 C20EFA

ЦИКЛ15

! ЗАПИСЬ В ОСР

(HfL)

FA17 Bl

FA18 2EF5

L,0F5H

FAIA 72

н>в

FAIB 2В

FAIC 73

; ЗАПИСЬ Б ОСР

РЕГИСТРА PC (АДРЕСА ТОЧКИ ОСТАНОВА)

FAIB CI

FAIE OB

В ; (В,С) - АДРЕС ТОЧКИ ОСТАНОВА

FAIF 2EF9

L,0F9H

FA21 70

Н>В

FA22 2Б

FA23 71

; ЗАПИСЬ в ОСР

РЕГИСТРА SP

FA24 EB

XCH6

FA25 210000

FA28 39

FA29 EB

XCHG

FA2A 2EEC

L,0ECH

FA2C 72

FA2D 2B

FA2E 73

; ИНИЦИАЛИЗАЦИЯ СТЕКА НОНЙТОРА

FA2F 7FF4

L»0E4H

FA31 F9

SPHL

; СРАВНЕНИЕ ТОЧКИ ОСТАНОВА С ПЕРВОЙ ТОЧКОЙ РАЗРЫВА

FA32 2EFA

LrOFAH

FA34 7E

А»Н

FA35 91

FA36 23

FA37 7E

А>Н

FA38 98

FA39 CA46FA

ПЕР12 ; ЕСЛИ СОВПАДАЕТ

; СРАВНЕНИЕ точки ОСТАНОВА СО ВТОРОЙ ТОЧКОЙ РАЗРЫВА

FA3C 23

FA3B 23

Н ? (H»L> - АДРЕС СОХРАНЕНИЯ

FA3E 7E

А>Н

FA3F 91

i ПОЛПРОГРАНМА ОБРАБОТКИ ТОЧЕК РАЗРЫВА.

;xxxxhxxxxxxx«xxxxxhxhxxxxhxxhxhxxxxxxxhxxxxxhxxxxxhxxxj(

5 СОХРАНЕНИЕ РЕГИСТРОВ В СТЕКЕ ПРЕРВАННОЙ ПРОГРАННЫ



FA40 23

FMl 7E

A>M

FA42 90

FA43 C200F8

ИНМОН

; ВОССТАНОВЛЕНИЕ СОДЕРИ

ОЕЛАСТИ ИХ

СОХРАНЕНИЯ

ГЙ46 2EFA

11ЕГ121 hVI

L.OFAH

FA48 1602

D»02

ЕЙ4Й АГ

11ИКЛ16: XRA

ГА4Г-1 4E

FA4C 77

FA4D 23

FA4E 46

FA4F 77

FA50 23

FA51 79

FA52 ВО

FA53 CA58FA

IIEP13

FA56 7Е

FA57 02

STAX

FAS3 23

ПЕПЗ: INX

FA59 15

FA5A C24AFA

«ИКЛ16

FA5D C373F8

; ЕСЛИ НЕ СОВПАДАЕТ

; (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
Яндекс.Метрика