Главная страница » Электрика в театре » Мультиплексоры демультиплексоры в последовательностных схемах

1 ... 23 24 25 26 27 28 29 ... 39

Поскольку операции со стеком выполняются автоматически как при возникновении прерываний, так и под управлением программы^, взаимное исключение одновременного наступления этих событий, а следовательно, и корректная работа со стеком обеспечиваются соблюдением следующих правил:

1) Перед выполнением любой операции со стеком следует замаскировать прерывания и разрешать их только после выполнения операции. Команды управления прерываниями описываются в разд. 11.6.6.

2) В начале любой программы, использующей прерывания, следует установить указатель стека в положение, соответствующее адресу вершины стека в памяти. Следует помнить, что перед манипуляциями с указателем стека требования п. 1 должны быть выполнены.

Эти правила легко забываются, однако пренебрежение ими может привести к тому, что при возврате из программы обработки прерываний произойдут непредсказуемые действия. П

Щ Набор команд микро-ЭВМ фирмы Intel, выполняющих операции, связанные со стеком, приведен в табл. Г.9 приложения Г. При выполнении этих команд значения битов' признака результата не изменяются. Читатель вновь отсылается к группе команд передачи данных, и в частности к командам, приведенным в табл. Г.З и Г.5 приложения Г. Эти команды имеют двойное назначение;

1) изменение содержимого ячеек памяти и регистров, в которых размещаются данные;

2) изменение содержимого указателей.

Запись SP-f-2 означает добавление 2 к содержимому указателя стека SP, запись M(SP-b2) - содержимое ячейки памяти, адрес которой превышает на 2 содержимое указателя стека SP.

Команды работы со стеком микро-ЭВМ фирмы Intel обеспечивают наиболее быструю передачу содержимого пары регистров и памяти, в которой размещаются данные. Это достигается за счет следующих факторов:

1) передачи данных словами;

2) использования косвенной адресации, при которой происходит автоматическое увеличение или уменьшение адреса до требуемой величины.

Команды работы со стеком являются наиболее подходящими для записи содержимого аккумуляторов и указателей в память перед обработкой прерывания и извлечения этого содержимого из памяти и загрузки в аккумуляторы и указатели после обработки прерывания. Последнее обеспечивает восстановление рабочих регистров ЦПУ в исходное состояние (то, в котором они были перед прерыванием), что необходимо для продолжения нормального выполнения программы.



, подпрограмма обработки прерывания

POP PSW -

возврат из подпрограммы обработки прерывания В

11.6.5. Команды условного перехода и безусловной передачи управления

По существу программа - это набор последовательно выполняемых команд, размещенных в ПЗУ, если программа не должна меняться, или в ОЗУ, если программа находится в стадии, разработки и отладки. Обычно содержимое счетчика команд; получает приращения, обеспечивающие последовательное выполнение команд программы. Однако должен быть предусмотрен механизм загрузки счетчика команд для обеспечения возможности организации основных и вспомогательных циклов, необходимых для управления любым процессом. В этом разделе описываются команды модификации счетчика команд.

□ Набор команд условного перехода и безусловной пере дачи управления микро-ЭВМ фирмы Motorola приведен в табл. В.5 приложения В.

Команды перехода используют относительную адресацию., при которой указанная в операнде команды величина представляет собой смещение адреса относительно содержимого счетчика команд PC. Однако, как было показано в гл. 10, содержимое счетчика команд изменяется при выполнении каждого ма-щинного цикла. Выполнение команды перехода занимает два машинных цикла, что приводит к увеличению содержимого счет-

В табл. Г. 10 приложения Г приведена команда извлечения из стека значения слова состояния процессора (PSW). Команда изменяет все флаги PSW.

Команда POP PSW идеально подходит для восстановленияр состояния ЦПУ. Непосредственно после прерывания производится запоминание признаков состояния с помощью команды PUSH PSW. После обработки прерывания команда POP PSW, выполняемая непосредственно перед возвратом из подпрограммы обработки прерываний, восстанавливает содержимое регистра состояния с целью создания условий для продолжения нормального выполнения программы. Описанная, последовательность операций имеет следующий вид:

прерывание

PUSH PSW



262 Глава И

чика команд на 2. Таким образом, смещение должно быть равно адресу команды, которой передается управление, минус адрес команды перехода и минус 2.

Простым способом задания смещения является присвоение метки (символического имени) команде, к выполнению которой необходимо перейти, и использование команды переход по метке . Требуемую величину смещения определит ассемблер.

В микро-ЭВМ фирмы Motorola предусмотрены три типа аппаратных прерываний. Каждое такое прерывание подобно выполнению следующих команд:

1) изменение содержимого счетчика команды;

2) запись содержимого регистров в память;

3) восстановление содержимого регистров из памяти с помощью соответствующих команд.

Кроме аппаратных имеются также и программные прерывания, инициирующие последовательность операций, подобную описанной выще.

Перечень аппаратных прерываний микро-ЭВМ фирмы Motorola приведен в табл. В.6 приложения В. После возникновения всех этих прерываний автоматически выполняется передача управления подпрограмме обработки прерываний.

Набор команд программных прерываний микро-ЭВМ фирмы Motorola представлен в табл. В.7 приложения В. При выполнении всех этих команд автоматически производится передача управления подпрограмме обработки прерываний.

Программные прерывания могут использоваться на стадии отладки для анализа работы подпрограммы обработки прерываний до разработки средств аппаратных прерываний или независимо от этой разработки. Команда ожидания прерывания может применяться для синхронизации выполнения основной программы и подпрограммы обработки прерываний. □

Д Набор команд перехода микро-ЭВМ фирмы Intel приведен в табл. Г.И приложения Г.

В командах перехода используется непосредственная адресация. Содержимое счетчика команд PC заменяется величиной, указанной в операнде и занимающей последние два байта 3-байтовой команды. Байт 3 задает старшие разряды адреса, а .байт 2 - младщие разряды. Однако в языке ассемблера имеются более развитые способы указания адреса в виде метки или арифметического выражения.

В микро-ЭВМ фирмы Intel 8085 предусмотрены четыре типа аппаратных прерываний. Каждое такое прерывание подобно выполнению следующей последовательности команд:

1) запись содержимого счетчика команд в стек, изменение содержимого счетчика команд;

2) восстановление содержимого счетчика команд по значе-



нию, хранящемуся в стеке посредством соответствующей команды.

Аппаратные прерывания микро-ЭВМ фирмы Intel приведены в табл. Г.12 приложения Г. Если бит разрешения прерывания сброшен, то повторный пуск производится автоматически и начинают выполняться машинные команды. Немаскируемые прерывания маскируют бит разрешения прерывания и всегда выполняются, g

11.6.6. Команды модификации слова состояния, ввода-вывода и специальные команды

Имеется ряд команд, используемых как во время начального пуска, так и при восстановлении состояния и повторном пуске микро-ЭВМ. В данном разделе описываются команды модификации слова состояния процессора и команды ввода-вывода.

□ Набор команд управления словом состояния и прерываниями микро-ЭВМ фирмы Motorola приведен в табл. В.8 приложения В. Здесь маска прерывания классифицируется как признак состояния. Таким образом, бит 4 слова состояния относится к регистру состояния АЛУ. □

Щ Перечень команд ввода-вывода и специальных команд микро-ЭВМ фирмы Intel приведен в табл. Г. 13 приложения Г.

Маскирование всех других прерываний во время обработки данного прерывания является хорошим практическим правилом. Этим же следует руководствоваться при использовании команд Ш и OUT, содержащих управляющие слова, программирующие работу периферийных устройств. Программирование работы периферийных устройств описывается в гл. 12, Q

В данном разделе читатель познакомился с очень важными и фундаментальными наборами команд. Сведения, приведенные в этой книге, представляют собой введение в суть проблемы и помогают создать базу для ее дальнейшего более детального изучения [32, 33]. Остальная часть книги посвящена более общим вопросам и вопросам, связанным с работой вычислительной системы в целом.

11.7. ДИРЕКТИВЫ АССЕМБЛЕРА

Набор команд, описанный в разд. 11.6, может быть определен как выполняемые команды. Термин выполняемые используется для того, чтобы показать, что эти команды могут быть представлены в машинном коде. Транслятору ассемблера, преобразующему выполняемые команды из символического представления в машинное, нужно передать определенные директивы, описывающие структуру ассемблируемой программы. Ди-



> Речь идет об области памяти, адресуемой этим символическим именем. - Прим. перев.

) У автора определение всех неизвестных переменных , искажающее рмысл этой директивы, определяющей (резервирующей) память для неизвестных .(определяемых в процессе работы) переменных. - Прим. ред.

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

1. Выделение последовательности команд, подлежаией ассемблированию. Инициирование работы транслятора ассемблера осуществляется системными командами (см. разд. 11.8). Ассемблирование завершается после обнаружения в потоке команд директивы конца исходной программы.

2. Присвоение данным символических имен. Символические имена данных используются в командах с непосредственной адресацией. Когда символическое имя используется в качестве данных, тозначения данных, соответствующих этому имени, должны быть определены с помощью директивы присвоения символическому имени значений.

3. Определение констант. Программист использует переменные, заданные их символическими именами, для адресации к памяти (ОЗУ), в которой находятся данные. Переменные, значения которых заданы (константы), употребляются при прямой, расширенной, индексной и косвенной адресациях. Присвоив константе символическое имя, мы тем самым помещаем ее в память). Такое присвоение осуществляется с помощью директивы определения данных.

Иногда удобно записать в память строку символов, представленных в коде ASCII. Это делается, в частности, при подготовке :ВЫходных сообщений и является дополнительной функцией директивы определения данных.

4. Определение областей памяти для переменныхК Значение переменной (переменных) определяется при выполнении программы. Такие переменные используются при прямой, расширенной, индексной и косвенной адресациях. Часто значения этих переменных удобно записывать в ОЗУ. Определение переменных, требующих выделения областей памяти для размещения их значений, осуществляется с помощью директивы резервирования памяти.

Ъ. Назначение областей памяти программы и данных. Транслятор ассемблера автоматически устанавливает соответствие между символическим адресом и определенной областью памяти. Кроме того, программисту необходимо выделить командам программы для размещения определенные области памяти.



11.7.1. Формат директив

Формат и правила записи команд, описанные в разд. 11.2 и 11.3, в основном применимы и при записи директив ассемблера хотя для них имеется несколько исключений и дополнений к. правилам. Для некоторых директив должно быть опущено одно или несколько из следующих полей: метки, операнда и комментария.

□ В дополнение к обычным символам-разделителям и символам переходов на новую строку (возврата каретки) в директивах ассемблера микро-ЭВМ фирмы Motorola используется! запятая (,) для разделения отдельных байтов или слов в. операнде директивы. □

HI В ассемблере микро-ЭВМ фирмы Intel метки- директив; присвоения данным символических имен) отличаются от меток, команд и его других директив тем, что сопровождающее метку двоеточие заменяется на пробел. В

В директивах ассемблера микро-ЭВМ как фирмы Motorola;, так и фирмы Intel допускается использование в поле операндов

) Имеются в виду директивы EQU и SET- - Ярил, перев:..

И часто первой строке данных присваивают область памяти всв избежание перекрытия программы и данных. Назналение адресов памяти выполняется с помощью директивы управления, счетчиком адреса.

6. Обеспечение модульной структуры программ. Наилучший; способ разработки сложной программы заключается в разделении ее на отдельные функционально самостоятельные части и написании головной программы для управления вызовом и выполнением этих частей. Этот принцип уже рассматривался! в разд. 6.12 применительно к последовательностным схемам. При этом возникает необходимость в организации передачи информации между отдельными частями (модулями). Такую пере дачу программист организует посредством директив связи пра-граммных модулей.

7. Управление форматом листинга ассемблера. Формат листинга, выдаваемого в результате работы транслятора, может модифицироваться с целью улучшения его наглядности, облегчения понимания содержания и уменьшения времени работы си стемы. Требуемый формат листинга ассемблера достигается) использованием директив управления форматом листинга.

Директивы ассемблера записываются в символической форме посредством кода ASCII. Формат, мнемоника и назначение отдельных директив описываются в следующих разделах.



здакоБ следующих операций);

Знак операции Назначение

* умножение

/ деление

+ сложение

- вычитание

Счетчик адреса памяти обозначается символом LC. Некоторые модификации ассемблеров микро-ЭВМ фирмы Motorola и Intel допускают использование дополнительных операций в моле операнда.

□ 11.7.2. Директивы ассемблера микро-ЭВМ фирмы Motorola

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

Мнемоническое обозначение кода операции: END - конец программы.

Назначение: последний оператор исходной программы, передающий управление очередному программному модулю. Формат: поля метки и операндане заполняются.

Метка Код Операнд Описание

операции

END Завершение программы

(переход к выполнению следующей программы)

. 2. Директива присвоения значения символическому имени.

Мнемоническое обозначение кода операции: EQU - эквивалентность символического имени и числового значения.

: Назначение: присвоение значения символическому имени.

. Формат: стандартный (все поля используются).

Метка Код Операнд Описание

операции

; PIAPA EQU, $4005 Р1АРАч-4005

HQS EQU SAOI HOS-i-OAOl [

> См. начало разд. \\.1: - Прйм. перев.. ... ...... .



Рассмотрим команду

Метка Код Операнд Комментарий

операции

LDAA $4005 А^4005

Вместо этой команды можно записать

Метка Код Операнд Комментарий

операции

PIAPA EQU $4005 Присваивает символам

PIAPA значение адреса

LDAA PIAPA Ач-4005

Использование символического имени вместо числа в поле операнда для программиста удобнее и снижает число ошибок. Последующие изменения в программе адреса, соответствующего имени PIAPA, достигаются одной директивой вместо внесения изменений в ряд команд, использующих это имя.

3. Директивы определения данных.

а) Мнемоническое обозначение кода операции: FCB - определение числовой константы побайтно.

Назначение: запись в память данных побайтно. Формат: стандартный. . ,

Метка Код Операнд Описание

операции

FCB $1В M(LC)4-1B

LC4-LC+1

NUM FCB ,SOF, 23 NUM-e-LC

M(LC)-f-00 ,

M(LC+l)-e-0F M(LC-f-2)-=-17 LC4-LC+3

; Полагая, что значение счетчика адреса равно 102, получаем

Адрес памитн Содержимое

102 IB

103 00

104 OF

105 17

Содержимое ячейки памяти, указываемой счетчиком адреса ассемблера, станет равным величине IB. Символическому име-.



1JUMB FDB $1В NUMB-*-LC

M(LC)-*-001B LCLC-t-2 VDB ,$0Р,$17 M(LC)-i-0000

M(LC)-f2- -000F M(LC+4)-*-0017 LC-LC-t-6

Полагая, что счетчик адреса указывает ячейку памяти с адресом 106, получаем

Адрес памяти Содержимое

106 001В

108 0000

10А . 000F

ЮС .0017

И В этом случае ассемблер присваивает символическому имени .NUMB значение счётчика адреса, а в области памяти с символическим адресом NUMB оказывается величина 001В. Содержимое трех следующих слов памяти равно 0000, 000F и 0017 соответственно. Запятые в поле операнда директивы используются для разделения данных, записываемых в отдельные поля .памяти.

в) Мнемоническое обозначение кода операции: FCC - определение символьной константы.

Назначение: запись в память символьных данных в 7-разряд-вом коде ASCII согласно табл. Б.З приложения Б.

) При обработке директив определения данных производится такое же увеличение текущего значения счетчика адреса, как и при трансляции выполняемых команд. -JIjiUM. перев.

NUM. присваивается новое') значение счетчика адреса. Шест-надцатеричные величины 00, OF, 17 записываются в следующие три ячейки памяти (17i6 = 23io). Запятые в поле операнда используются для разделения данных, записываемых в отдельные айты памяти.

.6) Мнемоническое обозначение кода операции: FDB - определение числовой константы словами.

Назначение: запись в памяти данных словами по два байта. Формат: стандартный.

Метка Код Операнд Описание

операции



Формат: стандартный. Метка Код Операнд

MSG1

Код операции

/LOVE/

MSG2

6,L0VE

Описание

MSGlLC M(LC)-t-4C M(LC+l)-s-4F M(LC+2)56 M(LC+3)-f-45 LC-s-LC+4 MSG24-LC M(LC)4-4C M(LC+1)*-4F M(LC+2)-(-56 M(LC+3)-45 M(LC+4)-*-20 .. . M(LC+5)-*-20

LC-f-LC+6

В более компактной форме описание можно представить следующим образом: М(ЬС)- -текст в коде ASCII. Полагая исходное значение счетчика адреса равным 0А02, получаем

Адрес ячеек памяти

Содержимое

4F

Строку символов в коде ASCII можно использовать для записи в память текста сообщения на естественном языке (например, английском). Операнд может быть записан следующим образом:

а) текст, заключенный между двумя одинаковыми ограничителями, каждый из которых - одиночный символ, причем если это цифра, то текст не должен начинаться запятой;



1 ... 23 24 25 26 27 28 29 ... 39

© 2000-2025. Поддержка сайта: +7 495 7950139 добавочный 133270.
Заимствование текстов разрешено при условии цитирования.