Й.Янсен Курс цифровой электроники. Том 4. Микрокомпьютеры (1987) (1092084), страница 21
Текст из файла (страница 21)
Более сложные функции можно реализовать, используя программирование или расширяя имеющуюся аппаратуру. Известно, что даже в специализированном калькуляторе, который обладает возможностью выполнять различные сложные операции, эти операции реализуются путем установления электрических связей между его компонентами.
В настоящее время наблюдается тенденция использования для этих калькуляторов программируемого аппаратурного обеспечения, которое позволяет реализовать более сложные арифметические операции. Для более сложных и более дорогих ЭВМ чаще применяются ППЗУ, которые обеспечивают выполнение ряда операций в последовательности, задаваемой пользователем. Речь идет о более сложных вычислениях, которые реализуются с помощью программного обеспечения и менее сложных базовых («встроенных») операций.
Выше отмечалось, что для выполнения операций требуются данные. Управляющая информация поступает в различные функциональные органы через конкретные электрические соединения (аппаратуру). Программы также представляют собой управляющую информацию, так как они указывают ЭВМ, что именно и в каком порядке необходимо делать во время обработки данных. Через общую шину данных в одно время передаются обрабатываемые данные, а в другое — управляющая и адресная информация.
С другой стороны, для передачи управляющей и адресной информации можно использовать отдельные шины управления и адресов соответственно. Необходимость в передаче управляющей и адресной инфор- шз Набор команд микроЭВМ мации через шину данных возникает тогда, когда имеется ограниченное число информационных каналов. Такая ситуация возникает, например, при передаче на длинные расстояния, так как отдельные магистрали прн этом становятся очень дорогими, или же в случае ограниченного числа внешних выводов на корпусе Р!Р. При этом передача информации происходит не параллельно, а последовательно.
При передаче через порты ввода-вывода довольно часто по шине данных сначала передается адресная информация, а затем данные. Такой метод передачи требует две команды ввода-вывода. При подаче первой команды регистр, находящийся на другом конце шины, может перейти, например, в режим «прослушивания», а после второй команды происходит пересылка данных в выбранный регистр. Таким образом, потребитель (информации) будет сначала предупрежден о возможной передаче данных. Аналогичная ситуация часто наблюдается и в повседневной жизни, например когда с помощью письма мы предупреждаем клиента об отправке ему товаров.
З.З. Структура команд Команда, находящаяся в регистре команд МП, выполняется только после дешифрации в соответствующем дешифраторе (см. блок-схему на рис. 3.1). Для экономичной дешифрации требуется разбить байт команды на битовые поля, которые определяют выполняемую операцию и устройства ввода и вывода данных, требуемые для выполнения этой операции. В частности, если для данной операции необходимо выбрать один из восьми регистров, то для идентификации одного из этих регистров потребуется 3 бит. В случае команд передачи данных необходимо указывать, какой именно регистр или другое аналогичное устройство является источником данных и какое устройство является их приемником.
В результате для восьми регистров в соответствующей команде выделяются два адресных поля по три бита. Эти поля используются не только для команд передачи данных. В других командах, которые выполняются без участия регистров или ячеек памяти, указанные адресные поля используются для других целей. При выполнении команд вначале обычно интерпретируется описание функции, после чего происходят дешифрация и интерпретация остальных битов. Из первого байта команды МП может также узнать длину команды — один, два или три байта. Длина команды увеличивается в связи с тем, что для обмена информацией с внешними ЗУ и портами ввода-вывода тре- Глава Ю Линии фг ниий ЛЛУ Линии оибори исмоониег бинниг (регисмр) Линии омбори «риоинини бонносг (рсгиснгр! Рис.
3.1. Интерпретация команды с помощью дещифрующеа схемы. буется указывать адреса соответствующих устройств. В современных 8-разрядных МП для указания адреса выделяются один или два байта: с помощью одного байта можно обращаться к одному из 256 адресов, а с помощью двух байтов— к 2"=64К адресам. Как следует из рис. 3.2, к описанию функционального назначения команды обычно добавляется описание данных или адресов, для которого требуется не более двух байтов.
Как уже отмечалось выше, операции ввода-вывода осуществляются с помощью двухбайтовых команд. Когда число устройств ввода-вывода не превышает 256, можно осуществлять ввод и вывод данных, используя в качестве их регистров свободную часть ЗУ. При этом станции ввода и вывода занимают ячейки ЗУ произвольным образом и идентифицируются !0% Набор команд микроЭВМ слово данных (а) Младший бит старший бит Однобайтовая иомаидо Код онвраций Байт! Двухбайтовая иомоида Код операций Байт! Данные нли адрес Байт 3 треибайтоеоя иомандо Код оиераций Байт/ Бойне д > Данные ивк адрес Байт д (б) Рнс. Звй Слово данных (а); однобайтовая, двухбайтовая н трехбвйтоввя команды (б). по командам записи и чтения. Такой способ ввода и вывода данных получил название «ввод-вывод, отображенный в памяти». Анализируя ту часть команды, которая содержит описание операции, можно заметить, что старшие биты соответствующего байта указывают, к какой именно группе принадлежит данная команда — к командам передачи данных, арифметическим командам, командам переходов и т.
д. Более детальное описание типа операции обеспечивают младшие биты указанного байта. В этой связи важно напомнить о часто используемом поня~ни «синтаксиса», под которым подразумевается определенный порядок кодирования при передаче информации (синтаксис— устанавливаемый порядок). Для простых языков, таких, как машинный язык, это означает, что внутри команды не разрешается перемещать биты или битовые поля. Это же требова- Глава 3 ние сохраняется и для второго и третьего байтов, которые уточняют содержание команды. На практике синтаксис обеспечивает правильное применение языка. При этом ЭВМ является синтаксически строго определенным устройством. Как мы увидим в последующих разделах, битовая информация, которая представляет команду, обычно записывается в виде некоторой комбинации букв, являющейся сокращением от полного названия данной команды.
Например, ЬТА является сокращением от слов Яоге Ассипш1а1ог (запомнить содержимое аккумулятора). С помощью таких мнемонических обозначений, образующих в совокупности язык ассемблера, можно составить программу, которая при помощи специальной вспомогательной программы, называемой ассемблером, затем переводится в требуемую двоичную информацию, записанную на машинном языке. При этом, в частности, не разрешается вместо ЯТА использовать ЬТЕ или 5Т Е ($Т вЂ” пробел — Е). Ассемблер точен и в отношении таких знаков препинания, как запятые, точки с запятой и т.
д. В случае языков более высокого уровня каждая синтаксическая ошибка обычно обнаруживается диагностикой. В действительности синтаксис определяет структуру программы как единого целого, потому что если поменять местами всего лишь одну команду с другой, то результат выполнения программы изменится. То же самое имеет место и в обычном языке. Фраза «У вас есть молоток» означает нечто отличное по сравнению с вопросом «Есть у вас молоток?» Изменение расположения слов «У вас есть» приводит к совершенно другой интерпретации предложения. Большинство МП имеет наборы команд, состоящие из нескольких десятков команд.
Программирование с помощью такого набора оказывается довольно сложным. Опыт показывает, что первое время каждый начинающий программист при составлении программ использует ограниченное число команд, и это неудивительно, так как многие команды функционально перекрываются друг с другом.
Кроме того, ряд команд можно «разложить» на более простые команды. При использовании простых команд программа существенно удлиняется по сравнению со случаем применения сложных команд. Это связано с тем, что в первом случае сложные функции программируются фактически заново, н программист обычно и не подозревает о том, что они находятся в составе набора команд. Например, требуется временно извлечь один байт из некоторого регистра и поместить его в аккумулятор, чтобы затем записать в ЗУ. При обратном считывании можно вернуть этот байт сначала в аккумулятор, а затем передать его в соответствующий регистр, откуда он первоначально и был извлечен. Однако существует и другая возможность передачи этого Набор команд микроЭВМ ~от байта — без подробного указания адреса — прямо из регистра с помощью так называемой команды Р(18Н (протолкнуть), а затем по команде РОР (вытолкнуть) можно вернуть этот байт назад.
Первый пример программирования показывает, что если программист делает первые шаги в программировании, то он может использовать множество команд там, где опытный программист обходится всего лишь двумя. Разумеется, первый вариант программы также будет решать поставленную задачу, и при выполнении программы иа микроЭВМ вряд ли кто-нибудь вообще заметит, что программа не оптимизирована. МикроЭВМ при этом будет занята вычислениями дольше и в некоторых случаях может даже не уложиться в заданный интервал времени, например в ходе управления каким-либо производственным процессом в реальном масштабе времени.
Однако по мере накопления опыта в процессе регулярного составления программ набор команд становится все более понятным, так что в конце концов программист начинает рационально использовать наличный арсенал команд МП. При рассмотрении различных кодов в наборе команд МП 8085А различные функции распределяются по группам для более ясного представления содержимого этого набора и связей команд внутри групп. Для принятия решения на основе полученных результатов МП имеет ряд так называемых регистров флажковых битов (контрольных переменных), которые обеспечивают определенную информацию о результатах обработки данных. С помощью контрольных переменных можно принять, например, решение о ветвлении в исполняемой программе. Эти ветвления реализуются обычно командами переходов. Такие переходы могут быть условными, т.