Дудко алексей львович захаров валерий николаевич




НазваниеДудко алексей львович захаров валерий николаевич
страница14/22
Дата26.12.2012
Размер3.11 Mb.
ТипДокументы
1   ...   10   11   12   13   14   15   16   17   ...   22

7.4. ПРОГРАММА-МОНИТОР


Программа-монитор (или просто монитор) — это программа, которая управляет работой микро-ЭВМ. Монитор выполняет следующие функции: подготовку к работе устройств микро-ЭВМ после включения питания и по­вторных перезапусков, обслуживание индикаторов и клавиатуры, выполнение указаний пользователя по реализации програм­мы. Микро-ЭВМ выполняет программу-монитор все то время, когда она не выполняет какую-либо программу пользователя.

Ниже приведен полный текст программы-монитор. При пер­вом прочтении можно пропустить дальнейший текст данного параграфа, но при отладке ПМ-ЭВМ и работе с нею необходимо четкое понимание функционирования монитора, для чего и при­водится ее детальное описание.

Текст программы состоит из трех столбцов. Первый столбец содержит адреса ячеек памяти, второй столбец - содержимое этих ячеек в восьмеричном коде, а третий столбец — ассемблер­ную запись программы.

После подачи всех необходимых напряжений на микросхемы и микропроцессор микро-ЭВМ начинает работать. При этом со­держимое всех регистров микропроцессора и ячеек ОЗУ уста­навливается случайным образом. Поэтому в микро-ЭВМ проис­ходит в этот момент неуправляемый и непредсказуемый про­цесс. Для того чтобы остановить его и пустить по вполне опре­деленному руслу, в микропроцессоре КР580ИК80А имеется вход RESET (вывод 72). На этот вход подается высокий уро­вень, который вырабатывается при помощи специальной схемы сразу после включения питания (см. гл. 6) или при нажатии на кнопку СБРОС. По этому сигналу микропроцессор заносит в счетчик команд (PC) во все разряды нули. Это означает, что следующая команда будет считываться из ячеек с нулевым адре­сом. По этому адресу размещается первая команда монитора. Для того чтобы монитор уже находился в памяти микро-ЭВМ после ее включения, он помещается в ПЗУ. Кроме того что мони­тор занимает память ПЗУ, он, как и всякая программа, при своей работе использует ячейки ОЗУ и регистры микропроцес­сора. Какие ячейки ОЗУ и как он использует, будет ясно после разбора самой программы.

Итак, первая команда монитора, расположенная по адресу 000000Q, - команда безусловного перехода JMP Ml, которая передает управление команде, расположенной по адресу 000070Q. Команда JMP Ml занимает три байта. Байты с 000 003 Q по 000 067 Q не используются. Эту область ПЗУ следует оставить незапрограммированной, так как она может понадо­биться для расширения возможностей микро-ЭВМ по работе с прерываниями. Под меткой Ml (по адресу 000070Q) находит­ся команда LXI SP, 010000Q. Эта команда загружает константу 010000Q в указатель стека (SP), чтобы он указывал на первую несуществующую ячейку ОЗУ. Тогда при первом занесении данных в стек (ячейки которого располагаются в ОЗУ) SP будет увеличен на единицу и будет указывать последнюю ячей­ку физически существующего ОЗУ, куда и поместятся данные. При дальнейших обращениях стек будет "расти" от старших адресов памяти к младшим при записи в него и "уменьшаться" при считывании. Если пользователь далее будет правильно ис­пользовать команды записи и считывания (их число должно быть одинаковым), никогда не произойдет ошибки обращения к стеку. Обратим здесь внимание на то, что восьмеричная кон­станта, записанная в ассемблерной строке под меткой Ml, при­обрела другую кодировку при записи в память в ячейки 000071Q и 000 072 Q. Чтобы понять, что произошло при пере­ходе от записи на ассемблере к реальному расположению кон­станты в памяти, запишем сначала эту константу в двоичном коде: 010000Q равняется 0001000000000000В. Если теперь разбить это 16-разрядное двоичное число на два байта, то полу­чится 00010000В и 00000000В, или в восьмеричной системе 020Q и OOOQ. Эти числа и записаны в ячейки с адресами 000 072 Q и 000071Q соответственно. Этот перевод константы от той формы, в которой она записана на ассемблере, к реаль­ному расположению в памяти будет встречаться еще во многих командах монитора.

Следующая команда LXI Н, 006 000 Q загружает пару регист­ров H-L константой 006 000Q. Эта константа является адресом первой ячейки ОЗУ. Загрузка SP и H-L начальными значениями выполняется только один раз при входе в монитор (после сиг­нала RESET). В дальнейшем эта пара регистров будет использо­ваться для хранения адреса ячейки памяти, с которой в данный момент работает программист.

Итак, SP установлен таким образом, что поле стека будет находиться в старших адресах ОЗУ, а в H-L находится адрес первой ячейки ОЗУ. Следующие семь команд, занимающие ячейки с 000076Q по 000110Q, служат для того, чтобы вы­светить на индикаторах адрес ячейки памяти, с которой в на­стоящее время работает программист, и ее содержимое. Коман­да М2: MOV С, М (адрес 000 076 Q) переписывает данные из ячейки, адрес которой хранится в H-L (при первом проходе данного места программы это адрес первой ячейки ОЗУ), в ре­гистр С. Далее команда MOV A, H переписывает данные из регистра Н в аккумулятор, чтобы с помощью следующей команды OUT 001Q вывести ее на индикаторы с адресом 001Q. Данные переписываются в аккумулятор перед их выводом этой командой (в двух последующих аналогичных случаях применяется команда OUT OOOQ и OUT 002Q), потому что команда OUT может переслать в устройство вывода только содержимое аккумулятора. После выполнения команды OUT 001 Q на соответствующих индикаторах высветится содер­жимое регистра Н. Каждый светодиод, которому соответствует единица в каком-либо разряде регистра Н, загорится, а каждый светодиод, которому соответствует нуль в каком-либо разря-пе Н погаснет. Аналогично на светодиодах порта OOOQ высве­тится содержимое регистра L (команды MOV A, L и OUT OOOQ) и порта 002 Q - регистра С (команды МЗ: MOV А, С и OU 1 00?Q) После этого выполняется команда М4: CALL SKL, кото­рая вызывает подпрограмму SKL, обслуживающую клавиатуру. Прежде чем переходить к описанию этой подпрограммы, опишем еще одну подпрограмму DL, которая вызывается из подпро-граммы SKL.

Подпрограмма DL служит для задержки выполнения про­граммы на 10 мс. Такие задержки часто необходимы при рабо­те с внешними устройствами, быстродействие которых значи­тельно меньше, чем у микро-ЭВМ. Поэтому эта подпрограмма, находящаяся и используемая в мониторе, написана таким обра­зом что сохраняет значение всех регистров и ячеек памяти во время своей работы. Она может быть вызвана из других про­грамм пользователя. Подпрограмма DL начинается с ячейки 000 277 Q Команды PUSH PSW и PUSH D переписывают в стек содержимое аккумулятора, регистра состояний и пары ре­гистров D-E для того, чтобы освободить эти регистры и исполь­зовать далее для своей работы, а перед выходом из подпрограм­мы восстановить их старое содержание. Затем пара регистров D-E загружается с помощью команды LXI D, 001 016Q констан­той 001016Q. Следующие пять команд образуют цикл. Коман­да N:DCX D уменьшает содержимое пары регистров D-E, вычи­тая из хранящегося в них двоичного числа единицу. Затем стар­ший байт пары D-E командой MOV A, D переписывается в акку­мулятор Далее команда ORA E выполняет поразрядно логиче­скую операцию ИЛИ над содержимым аккумулятора и регист­ра Е и результат этой операции записывается в аккумулятор, при этом если содержимое А и Е (или D и Е) не равно нулю, сбрасывается флаг признака нуля результата Z. Это приводит к тому что следующая команда JNZ N (адрес 000 307 Q) осу­ществляет переход к метке N (адрес 000304Q) и фрагмент программы от метки N до команды JNZ N (или, что то же са­мое, от адреса 000304Q до 000311Q) будет повторяться до тех пор пока в обоих регистрах D и Е не образуются нули. Следова­тельно этот фрагмент программы выполняется 001016Q раз. Обозначим буквой N с соответствующим индексом число машинных тактов определенной команды. Тогда число тактов при однократном выполнении этого фрагмента N0 =Ndcxd + + Nmova,d+Norae+Njnzn = 5 + 5 + 4+10= 19.

Так как длительность одного такта при использовании квар­цевого резонатора на частоту 9 МГц равняется 1 мкс (см. гл. 6), время выполнения этого фрагмента 19 мкс, а чтобы выполнить его 001 016Q раз, нужно 9994 мкс. Следовательно, выполнение этой программы задерживает выполнение программы, вызвав­шей ее, примерно на 10 мс. После того как выполнено 001 016 Q циклов и содержимое D и Е равно нулю, флаг Z не устанавлива­ется командой ОКА Е и командой JNZ N не передает управление к метке N. Тогда выполняются команды POP D и POP PSW, которые восстанавливают содержимое пары регистров D-E, аккумулятора и слова состояний. Затем команда RET передает управление команде, следующей за той командой CALL DL, которая вызвала эту подпрограмму.

Рассмотрим теперь подпрограмму SKL. Эта подпрограмма обеспечивает работу клавиатуры микро-ЭВМ. Она располагается в области ПЗУ с адресами 000 177Q - 000 276Q. При ее вызове командой CALL SKL управление передается команде, распола­гаемой по адресу 000177Q. Команда SKL: MVI А, 000Q загру­жает в аккумулятор OOOQ, а следующая команда OUT 003Q записывает содержимое младших четырех битов аккумулятора, т. е. 0000В, в четыре триггера микросхем К155ТМ7 (см. микро­схему D22 на рис. 7.7). Следовательно, на выходах триггеров этой микросхемы (выводы 16, 15, 10, 9) устанавливаются ну­ли. При этом если нажать хотя бы одну из кнопок К1 — К16, то на соответствующем входе микросхемы К589АП16 (D23) установится также нуль. Далее следующая команда М5: IN 003Q переписывает в четыре младших бита аккумулятора те логиче­ские состояния, которые в момент выполнения этой команды присутствуют на входах микросхемы D23. Затем команда ANI 017Q путем выполнения логической операции И записы­вает в старшие четыре разряда аккумулятора нули, а младшие четыре разряда оставляет такими, какие они были. После этого команда CPI 017Q сравнивает содержимое аккумулятора с кон­стантой 017Q (00001111В). В результате этого сравнения в ре­гистре состояний процессора будет установлен флаг нулевого результата, если при выполнении команды М5: IN 003Q на входах микросхемы D23 (выводы 4, 7, 9, 12) были единицы, т. е. ни одна кнопка К1-К16 не была нажата. Если хотя бы одна из кнопок была нажата, то флаг нулевого результата после сравнения с 017 Q не будет установлен и следующая команда условного перехода JNZ М5 вызовет переход к метке М5. Таким образом, фрагмент программы, начиная с метки М5 и кончая командой JNZ M5, будет выполняться до тех пор, пока все кнопки не будут отпущены. Этот фрагмент программы нужен потому, что после нажатия кнопки монитор выполняет все не­обходимые операции столь быстро, что пользователь еще не успевает отпустить кнопку, а программа уже готова обработать следующее нажатие кнопки. Поэтому если бы не было этого фрагмента, одно нажатие кнопки воспринималось бы как не­сколько нажатий, что приводило бы к неправильной работе монитора.

Прежде чем рассматривать дальше работу подпрограммы, обратим внимание на тот факт, что при нажатии кнопок К1-К16 происходит дребезг контактов, рассмотренный в гл. 6. Там же приводилась специальная схема, позволяющая устра­нить это явление. Дребезг контактов (см. рис. 6.14) приводит к тому, что на входе D23 вместо идеального перехода из нуля в единицу при размыкании контактов кнопки и из единицы в нуль при замыкании контактов кнопки имеется серия пере­ходов. Каждый такой переход может быть воспринят как но­вое нажатие на кнопку, поэтому необходимо принять специаль­ные меры, чтобы этого не произошло. Можно было бы снаб­дить каждую кнопку электронной схемой для подавления дре­безга контактов (см. рис. 6.13), но можно воспользоваться программным методом, описываемым ниже. В подпрограмме для этого после команды JNZ M5 идет команда CALL DL, которая вызывает подпрограмму временной задержки. Выпол­нение программы задерживается на 10 мс. За это время дре­безг контактов заканчивается.

Следующий фрагмент программы "ожидает" нажатия кноп­ки и вводит код нажатой кнопки в аккумулятор. В качестве рабочих регистров будут использоваться пара D-E и аккумуля­тор, поэтому командой PUSH D содержимое пары регистров D-E сохраняется в стеке. Следующие две команды М8: MVI D, 003Q и MVI Е, 376Q загружают в регистры D и Е коды 003 Q и 376Q соответственно. Затем команда М7: MOV A, E переписывает содержимое регистра Е в аккумулятор, а команда OUT 003Q переписывает четыре младших разряда аккумулятора в триг­геры микросхемы D22. После этого команда RLC сдвигает содержимое аккумулятора на один бит влево, а команда MOV Е, А переписывает его в регистр Е. Содержимое регистров и состояние выходов триггеров микросхемы D22 в двоичном коде в этот момент представлено в первой строке табл. 7.5.

Та б л и ц а 7.5

Номер строки, номер проход.

Содержимое регистров

Состояние выходов триггеров D22



D

Е

9

10

15

16

1

00 000 01 1

11

111

101

1

1

1

0

2

00 000 010

11

111

011

1

1

0

1

3

00 000 001

11

110

111

1

0

1

1

4

00 000 000

11

101

111

0

1

1

1


Далее команда IN 003Q вводит в аккумулятор состояния входов микросхемы D23, команда ANI 017Q устанавливает в старших четырех разрядах аккумулятора нули, а команда CPI 017Q сравнивает его содержимое с константой 017Q и уста­навливает флаг нуля результата, если содержимое равно 017Q. Это произойдет в том случае, если ни одна из кнопок К4, К8, К12, К16 не нажата. Рассмотрим этот вариант. Тогда следую­щая команда JNZ Мб не осуществляет условный переход (так как установлен флаг нуля) и выполняется команда OCR D, которая уменьшает содержимое регистра D на единицу. Затем содержимое регистра D пересылается в аккумулятор командой MOV A, D и сравнивается командой CPI 377Q с константой 377 Q, и поскольку равенства нет (так как в регистре D код 002Q), команда JNZ М7 осуществляет переход к команде М7: MOV А, Е и фрагмент программы от М7: MOV A, E до JNZ M7 повторяется. Этот фрагмент будет выполняться 4 раза (при условии, что ни одна кнопка не нажата). Состояния выходов триггеров микросхемы D22 и содержимое регистров D и Е после выполнения команды MOV E, А (адрес 000230Q) ука­заны в табл. 7.5 для каждого прохода.

Во время четвертого прохода содержимое регистра станет равным 377Q и команда JNZ M7 (адрес 000 246Q) не осущест­вит переход к М7, а будет выполняться следующая за ней -команда безусловного перехода JMP M8, в результате чего команды М8: MVI D, 003Q и MVI E, 376Q загрузят регистры D и Е и фрагмент от М7: MOV A, E до JNZ M7 повторится опять 4 раза. Этот процесс будет повторяться до тех пор, пока не на­жата ни одна кнопка и на входах 4, 7, 9, 12 микросхемы D23 находятся высокие уровни, а следовательно, в аккумуляторе после выполнения команды ANI 017Q (адрес 000 233 Q) нахо­дится код 017Q. Если какая-либо кнопка нажата, то код в акку­муляторе не равен 017Q и команда JNZ Мб осуществляет переход к команде Мб: CALL DL, которая вызывает подпрограмму временной задержки для того, чтобы переждать дребезг контак­тов после нажатия кнопки. Значения кода в аккумуляторе после выполнения команды ANI 017Q в зависимости от кода на выходах триггеров микросхемы D22 и от того, какая нажата кнопка, приведены в табл. 7.6.


Таблица 7.6



Выход



Вход мик-



Номер строки

триггера микро- Код в ре-схемы гистре D В22,на

Нажатая кнопка

росхемы D23, на котором низкий

Код в аккуму­ляторе



котором



уровень





низкий









уровень







1

9 00 000 000

К1

4

00001 ПО





К5

7

00001 101





К9

9

00001 011





К13

12

00000 111

2

10 00000001

К2

4

00001 ПО





Кб

7

00 001 101





К10

9

00001 011





К14

12

00 000 1 1 1

3

15 00000010

КЗ

4

00001 110





К7

7

00 001 101





К11

9

00001 011





К15

12

00 000 1 1 1

4

16 00000011

К4

4

00001 110





К8

7

00 001 101





К12

9

00001 011





К16

12

00000 111


После выполнения подпрограммы DL команда М10: RRC сдвигает содержимое аккумулятора на один бит вправо, а са­мый младший бит при этом попадает в флаг переноса. Следую­щая команда JNC M9 осуществляет условный переход, если флаг переноса не установлен (перенос С раве« нулю). Рассмот­рим вариант, когда перенос не равен нулю (строки 2 — 4 табл. 7.5) и перехода к М9 не происходит. Тогда следующая команда PUSH PSW сохраняет содержимое аккумулятора и сло­во состояний микропроцессора в стеке для того, чтобы можно было дальше использовать аккумулятор. Команда MOV A, D переписывает содержимое регистра D в аккумулятор, а команда ADI 004Q прибавляет к содержимому аккумулятора константу 004Q. После этого команда MOV D, А переписывает результат сложения в регистр D, а команда POP PSW восстанавливает со­держимое аккумулятора и слово состояний микропроцессора, считывая их из стека. Далее команда безусловного перехода JMP M1C осуществляет переход к команде М10: RRC, т. е. повторяет фрагмент программы, начиная с М10. Теперь ясно, что в зависимости от кода в аккумуляторе (табл. 7.6) фрагмент программы от команды JNC M9 (адрес 000 260Q) до командь: JMP M10 (адрес 000 271Q) будет выполняться нуль раз для пер­вой строки таблицы, 1 раз — для второй. 2 раза — для третьей и 3 раза — для четвертой. Это значит, что к коду в регистре (см, табл. 7.6} соответствующее число раз прибавится констан­та 004Q. Следовательно, в регистре D после выполнения коман­ды JNC M9 будет содержаться код, зависящий от нажатой кноп­ки. Все возможные коды перечислены в табл. 7.7

Таблица 7.7

Нажатая кнопка

Код в регистре D в двоичной системе

Код в регистре D в восьмеричной системе

Мнемоническое название кноп­ки

К1

00 000 000

000

0

К2

00 000 001

001

i

КЗ

00000010

002

2

К4

00000011

003

3

К5

00000 100

004

4

Кб

00 000 101

005

5

К7

00 000 110

006

6

К8

00 000 111

007

7

К9

00 001 000

010

СБ

К10

00 001 001

011

МБ

К11

00001 010

012

К

К 12

00001 011

013

П

К13

00 001 100

014

-

К14

00001 101

015

=

К15

00001 110

016

=

К16

00 001 111

ОП

=


После перехода в результате выполнения команды JNC Мс-выполняется команда М9: MOV A, D, которая переписывав-: содержимое регистра D в аккумулятор. Затем командой POP Г восстанавливается то содержание регистра D, которое было до начала работы подпрограммы SKL. На этом работа подпро­граммы заканчивается и команда RET загружает в счетчик команд адрес команды, следующей за той, которая вызвала переход к подпрограмме. Заметим, что подпрограммы SKL и DL не портят при своей работе содержимое каких-либо регистров. Результат своей работы — код, соответствующий нажатой кнопке, — подпрограмма SKL возвращает в аккумулятор. Итак, была нажата кнопка, подпрограмма SKL выработала код, соответствующий этой кнопке, и поместила его в аккуму­лятор. Работа монитора продолжается с команды CPI 010Q (адрес 000113Q). Эта команда сравнивает содержимое акку­мулятора с константой 010Q. Это сравнение происходит путем вычитания из кода, хранящегося в аккумуляторе, кода 010Q (по правилам двоичного вычитания), хотя содержимое акку­мулятора не портится. При этом если значение двоичного числа, которое выражено кодом, содержащимся в аккумуляторе, меньше 010Q (или 8D), то по правилам двоичного вычитания происходит заем и устанавливается флаг переноса С, если боль­ше или равно 010Q - то флаг не устанавливается. Затем коман­да JNCM11 осуществляет переход к метке МП (адрес 000134Q), если код нажатой кнопки больше или равен 010Q, если нет, то выполняются команды, следующие за JNC МП. Коды, меньшие 010Q, соответствуют кнопкам К1-К8 и обра­батываются МОНИТОРОМ ПО-ОСОбому, потому что эти кнопки кодируют восьмеричные цифры от 0 до 7 (см. табл. 7.7) для ввода в микро-ЭВМ. Остальным кнопкам присвоены специаль­ные функции, которые выполняются монитором (см. ниже).

Рассмотрим, как происходит ввод восьмеричного числа в микро-ЭВМ. Напомним, что регистр С используется для вре­менного хранения введенного числа до того момента, как онс будет переписано в память по адресу, хранящемуся в паре регистров H-L. После того как была нажата одна из кнопок К1-К8, программа переходит к команде MOV В, А (адрес 000 120Q), которая переписывает код нажатой кнопки из акку­мулятора в регистр В. Затем код, содержащийся в регистре С (этот код был высвечен на индикаторах порта OOOQ), перепи­сывается в аккумулятор командой MOV А, С и сдвигается тремя командами RAL на три бита влево. После этого с по­мощью команды ANI 3 70Q очищаются три младших бита, а с по­мощью команды ORA В на эти места записываются новые трк разряда кода нажатой кнопки. В результате в аккумуляторе готов новый код для индикации на индикаторах порта OOOQ, Далее содержимое аккумулятора переписывается в регистр С командой MOV С5 А, а затем команда JMP M3 осуществляет переход к фрагменту программы, реализующему индикацию.

На индикаторе порта OOOQ пользователь видит следующее. Если до нажатия кнопки состояния индикаторов были ХО — Х7 (рис. 7.10,д), то после нажатия эти состояния сдвигаются на три индикатора влево (причем Х5 — XV пропадают), а на месте ХО, XI, Х2 высвечивается код вновь нажатой кнопки (рис. 7.10,6, табл. 7.8).



Рис. 7.10. Состояния индикаторов порта вывода с адресом OOOQ:

а - до нажатия какой-либо из кнопок 0-7; б - после нажатия какой-либо из кнопок 0 — 7

Следовательно, нажав три необходимые кнопки из кнопок К1-К8, пользователь может набрать на восьми индикаторах порта OOOQ любое нужное ему двоичное число длиной 1 байт.

Рассмотрим теперь, какие специальные функции и как выпол­няются монитором.


Таблица 7.8

Кнопка



Код в разрядах



Y2

Y1

YO

К1

0

0

0

К2

0

0

1

КЗ

0

1

0

К4

0

1

1

К5

1

0

0

Кб

1

0

1

К7

1

1

0

К8

1

1

1


Коды всех кнопок, вызывающих выполнение специальных функций, больше или равны 010Q. Поэтому команда JNC М11 (адрес 000115Q) будет осуществлять переход к команде МИ: CPI 010Q, которая сравнивает код нажатой кнопки с констан­той 010Q. Если код не равен 010Q, то команда JNZ M12 вызовет переход к Ml2, если равен, то это значит, что нажата кнопка К9 (СБ) и произойдет следующее: команда MOV H, С перепишет содержимое регистра С в регистр Н, а затем команда JMP M2 вызовет безусловный переход к М2. Смысл этих действий в том, что байт, хранящийся в регистре С, станет старшим бай­том адреса той ячейки, с которой работает пользователь. Этот новый старший байт адреса высветится на индикаторах порта 002Q, а содержимое ячейки памяти с новым адресом, составлен­ным из нового старшего байта и старого младшего байта адреса, высветится на индикаторах порта OOOQ. Таким образом, функ­ция, выполняемая монитором при нажатии на кнопку К9 (СБ — старший байт), — это формирование старшего байта нового адре­са. Его значение может быть предварительно введено с помощью кнопок К1 - К8 (цифры 0 — 7) в регистр С и высвечено на инди­каторах порта OOOQ. На индикаторах пользователь видит следую­щее (рис. 7.11). Показания индикаторов порта OOOQ после нажа­тия СБ перемещаются на индикаторы порта 002Q (рис. 7.11,6), на индикаторах порта OOOQ после нажатия СБ высвечивается содержимое ячейки памяти с адресом, старший байт которого высвечен на индикаторах порта 002Q, а младший — порта 001Q.

Аналогичную функцию, только по формированию младшего байта адреса, выполняют кнопка К10 {МБ — младший байт) и связанный с ней фрагмент программы от команды М12: CPI 011Q до JMP M2. При нажатии на эту кнопку содержимое регистра С, высвеченное на индикаторах порта OOOQ, переписы­вается в регистр L, становясь младшим байтом адреса той ячей­ки, с которой работает пользователь, и высвечивается на инди­каторах порта 001Q (рис. 7.12). На индикаторах порта OOOQ при этом высвечивается содержимое ячейки памяти с адресом, составленным из нового младшего байта и старого старшего байта.

Следующая кнопка К11 (И — индикация содержимого ячейки памяти и его изменение) выполняет две функции: просмотр содержимого ячеек памяти и изменение содержимого на новое в случае необходимости. При нажатии на эту кнопку подпро­грамма SKL вырабатывает код 012Q, поэтому срабатывают команды условного перехода JNZ M12 и JNZ M13. После этого команда М13: CPI 012Q устанавливает флаг равенства нулю и команда JNZ M14 не осуществляет переход к М14. Затем коман­да MOV M, С переписывает содержимое регистра С (это содер­жимое пользователь видит на индикаторах порта OOOQ) в ячейку памяти, адрес которой содержится в паре регистров H-L (этот адрес пользователь видит на индикаторах портов 002Q и 001Q). Следующая команда INX Н увеличивает содержимое Н-Ьна еди­ницу, а затем происходит безусловный переход (команда JMP М2) на фрагмент программы, который высвечивает на индикаторах адрес и содержимое следующей по порядку возрастания двоичных адресов ячейки памяти. Теперь ясно, что если нажи­мать только кнопку К11, то можно последовательно просматри­вать содержимое ячеек памяти в порядке возрастания их адре­сов (адрес высвечивается на индикаторах порта 002Q и 001Q, а содержимое — на OOOQ) ; но если между нажатием на кнопку К11 с помощью кнопок К1-К8 ввести в регистр С и на инди­каторы порта OOOQ какое-либо двоичное число, то последую­щим нажатием на К11 можно переписать это число в текущую ячейку памяти и перейти к индикации адреса и содержимого следующей ячейки памяти.




Рис. 7.11. Состояния индикаторов портов вывода:

а - до нажатия кнопки СБ; б - после нажатия кнопки СБ


Кнопка К12 (П — пуск программы) выполняет функцию запуска программы, записанной пользователем в ОЗУ с адреса, который содержится в паре регистров H-L и высвечен на инди­каторах портов 002Q и 001Q. При нажатии этой кнопки про­грамма вырабатывает код 013Q и команды JNZ Ml2, JNZ M13, JNZ M14 осуществляют переход к М14: CPI 013Q. Эта команда устанавливает флаг равенства нулю, команда JNZ M4 не осу­ществляет переход к М4, и следующая команда PCHL загру­жает в счетчик команд содержимое пары регистров H-L, что вызывает переход к выполнению команды, расположенной по этому адресу.



Рис. 7.12. Состояния индикаторов портов вывода:

а - до нажатия кнопки МБ; б - после нажатия кнопки МБ

Кнопки К13-К16 не задействованы, и монитор не выполняет никаких функций при нажатии на них. Эти кнопки оставлены для дальнейшего расширения функций монитора.

1   ...   10   11   12   13   14   15   16   17   ...   22

Похожие:

Дудко алексей львович захаров валерий николаевич iconРазвитие высших форм запоминания 1 Леонтьев Алексей Николаевич
Леонтьев Алексей Николаевич (5 февраля 1903 — 21 января 1979) — советский психолог, доктор психологических наук, профессор, академик...
Дудко алексей львович захаров валерий николаевич iconСвидетельство о государственной регистрации программы для ЭВМ регистрационный номер: 2011618 693 ( 08. 1 2011) Заявка: 2011616 954 ( 19. 0 2011)
Алексеевич, Липов Денис Игоревич, Петрик Алексей Николаевич, Лобанов Павел Сергеевич, Семенов Роман Александрович, Киселев Алексей...
Дудко алексей львович захаров валерий николаевич iconРеферат Авторы: Захаров Михаил Юрьевич, Виноградов Кирилл Евгеньевич, Кренев Александр Николаевич
Образования "Ярославский государственный университет имени П. Г. Демидова" 150000, г. Ярославль, ул. Советская, 14
Дудко алексей львович захаров валерий николаевич iconАлексей Николаевич Толстой Гиперболоид инженера Гарина
Этот роман написан в 1926–1927 годах. Переработан, со включением новых глав, в 1937 году
Дудко алексей львович захаров валерий николаевич iconЛекции по общей психологии
Алексей Николаевич Леонтьев (1903-1979) выдающийся советский психолог, действительный член апн рсфср, доктор педагогических наук,...
Дудко алексей львович захаров валерий николаевич iconРазработка принципов однопроходной прокатки изделий из волокнистых композиционных материалов
Мануйлов Виталий Федорович, Соколов Алексей Викторович, Нуждин Виталий Николаевич, Преображенский Евгений Владимирович
Дудко алексей львович захаров валерий николаевич iconВасилий Александрович Токарев П. Михайлов Игорь Львович Андреев Вячеслав Николаевич Козляков День народного единства: биография праздника
Книга посвящена драматичным событиям российской истории XVII в. – Смутному времени. На основе широкого круга источников и литературы...
Дудко алексей львович захаров валерий николаевич iconКонтрольная работа по литературе в 7 классе
Мать, Надежда Осиповна, была правнучкой Ганнибала. Александр Львович литературой не увлекался, а вот его брат, Сергей Львович,- был...
Дудко алексей львович захаров валерий николаевич iconПроисхождение Александра Сергеевича Пушкина
Сергей Львович (1767—1848), светский острослов и поэт-любитель, дядя по отцу, Василий Львович (1766—1830), был известным поэтом круга...
Дудко алексей львович захаров валерий николаевич iconАлексей Николаевич Толстой Гиперболоид инженера Гарина
«Аэлита. Гиперболоид инженера Гарина»: Гос уч пед из во Министерства просвещения бсср; Минск; 1959
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница