![]() |
![]() |
![]() |
|
Главная страница » Электрика в театре » Мультиплексоры демультиплексоры в последовательностных схемах 1 ... 21 22 23 24 25 26 27 ... 39 11.2.2. Поле операнда Это поле содержит информацию об адресате, к которому производится обращение при выполнении команды. Операнд, например, может указывать ячейку ОЗУ или порт ввода-вывода. Команды, которые обрабатывают данные, находящиеся в регистрах, не имеют поля операнда. В соответствии с форматом команд языка ассемблера поле операнда располагается после ноля кода операции и следующих за этим полем одним или несколькими пробелами. Поле кода операции занимает в ПЗУ 1 байт, а поле операнда (если оно имеется) 1 или 2 байта. Таким образом, команды ассемблера в ПЗУ размещаются в полях размером 1, 2 или 3 байта. 11.2.3. Поле метки У Это поле предусмотрено для облегчения программисту записи программы. Если в поле метки находится идентификатор, то к данной команде можно адресоваться по этому идентификатору. Программист может обращаться к команде, не располагая информацией о ее действительном местоположении (адресе). Метка является важным атрибутом программирования с использованием команд передачи управления, таких, как безусловного и условного переходов и вызова подпрограммы. Поле метки записывается непосредственно после возврата каретки клавишного устройства ввода, осуществляемого по завершении записи предыдущей команды. Поле метки завершается пробелом (в ассемблере фирмы Motorola) или двоеточием (в ассемблере фирмы Intel). 11.2.4. Поле комментария Это поле также предназначено для удобства записи программы. Оно позволяет программисту прокомментировать назначение команды на естественном языке (например, английском). Поле комментария оказывает программ-сту большую помощь при корректировке и отладке программы. Комментарии во многих случаях представляют собой первичную и наиболее важную часть документации программы. Если программа предназначена нескольким пользователям, то комментарии являются абсолютно необходимыми. Поле комментария располагается после поля операнда и следующего за ним пробела, причем после записи поля комментария производится возврат каретки (переход на новую строку). На языке ассемблера фирмы Intel поле комментария должно начинаться со знака ;. Ниже приводятся примеры записи исходной программы для трансляции и часть листинга, получаемая в результате трансляции и ориентированная на составителя программы. Номера позиций показывают размещение информации в строке. Символы CR обозначают возврат каретки и переход на новую строку. □ Ассемблер фирмы Motorola Исходная программа NM JSR иОиТ (CR) CLR XPOINT ОЧИСТИТЬ СТАРШИЙ БАЙТ (CR) STAB XP0INT+1 СФОРМИРОВАТЬ УКАЗАТЕЛЬ (CR) Листинг Метка NM Код операции STAB Операнд ХРОШТ XP0INT+1 Комментарий ОЧИСТИТЬ СТАРШИЙ БАЙТ СФОРМИРОВАТЬ УКАЗАТЕЛЬ □ Щ Ассемблер фирмы Intel Исходная программа LXI H,BUFR ;ЗАГРУЗИТЬ АДРЕС ОБЛАСТИ ПАМЯТИ (CR) CI: CALL 0F803H ;ПОЛУЧИТЬ ДАННЫЕ (CR) MOV М,А ;ЗАПИСАТЬ В ПАМЯТЬ ПО АДРЕСУ BUFR-f N(CR) Листинг i Метка 9 17 Код Операнд операции LXI H.BUFR CALL MOV OF803H М,А Комментарий ;ЗАГРУЗИТЬ АДРЕС ОБЛАСТИ ПАМЯТИ ; ПОЛУЧИТЬ ДАННЫЕ ; ЗАПИСАТЬ В ПАМЯТЬ ПО АДРЕСУ BUFR-fN В 1) American Standard Code for Information Interchange - стандартный американский код для обмена информацией. -- Прим. перев. 11.3. ОБОЗНАЧЕНИЯ И ПРАВИЛА ИСПОЛЬЗОВАНИЯ СИМВОЛОВ ЯЗЫКА В исходной программе могут использоваться символы, являющиеся подмножеством символов кода ASCII). Символьное представление облегчает чтение и запись программы, а также уменьшает вероятность внесения ошибок в программу в процессе ее модификации и отладки. В поле операнда могут использоваться символические имена, определенные в программе. Определение символического имени производится автоматически при его записи в поле метки оператора. Использование таких имен чрезвычайно полезно в тех случаях, когда модифицируются данные, на которые многократно ссылаются другие команды. Програьймист должен изменить только оператор, определяющий символическое имя, вместо того, чтобы изменить все команды, в полях операндов которых это цмя употребляется. Назначение некоторых символических имен (служебных слов) и знаков строго предопределено. Разработчики микро-ЭВМ учитывают преимущества символьного представления и предусматривают использование символов и знаков как в поле кода операции, так и в поле операнда с целью облегчения работы программиста. Эти специальные символы приводятся в. конце данного раздела. При формировании символических имен необходимо придерживаться следующих правил: 1) первым символом в имени должна быть буква; 2) последующие символы имени могут быть буквами от А до Z, цифрами от О до 9 и специальными знаками: . (точка),. - (символ подчеркивания) и $ (знак доллара); 3) количество символов, из которых составляется имя, не должно превышать шести в ассемблере фирмы Motorola или восьми в ассемблере фирмы Intel. Если длина символического имени больше допустимой, то лишние справа символы игнорируются. Символы, используемые для выделения отдельных полей и других символов, и служебные слова не могут быть переопределены программистом по своему усмотрению. Определенные символы не распознаются транслятором ассемблера, а используются только при описании форматов команд. / Символы Назначение ч- Передача (операция присваивания) -.-- Обмен данными Т Анализ содержимого или результатов (Test) М Память (Memory) М( ) Область памяти, адрес которой ука- зан в скобках □ Ниже перечисляются служебные символы ассемблера фирмы Motorola. Содержимое регистров обозначается символами, соответствующими их именам. Для аккумуляторов используются имена А и В, индексного регистра - X, указателя стека - SP, счетчика команд - PC и регистра состояния (признака результата) - СС. При ссылках на 16-разрядные регистры суффикс Н обозначает байт старших разрядов регистра, а суффикс L - байт младших разрядов. Несколько символов в ассемблере фирмы Motorola имеют специальное назначение. Часть этих символов встречается в примерах программ, приведенных в данной книге. К этим символам относятся (определения наиболее часто используемых символов помечены знаком *) 1) символы, используемые в качестве префикса: Ф определяет непосредственную адресацию, $ (знак доллара) определяет шестнадцатеричное число, @ (коммерческий знак) определяет восьмеричное число, % (процент) определяет двоичное число, (апостроф) определяет литеральные данные, которыми могут быть символы кода ASCII; 2) символы, используемые в качестве суффикса: В (буква В) определяет двоичное число, Н (буква Н) определяет шестнадцатеричное число, О (буква О) определяет восьмеричное число, Q (буква Q) определяет восьмеричное число, ,Х (запятая и буква X) определяет индексную адресацию. Адрес 0,Х может быть записан как X*. Если перечисленные здесь суффиксы или префиксы не используются, то подразумеваются десятичные числа. Как указывалось ранее, пробелы используются в качестве разделителей, а символы возврата каретки (CR) - для указания на конец очередной команды программы и переход на новую строку. □ В языке ассемблера фирмы Intel используется свои набор служебных символов. Содержимое 8-разрядных регистров обозначается символами, представляющими их имена. Именами регистров (г, г1, г2) являются А, В, С, D, Е, Н и L. Содержимое 16-разрядных регистров размером в два слова и пар регистров, состоящих из двух 8-разрядных регистров обозначается двумя символами, соответствующими именам этих, регистров и пар регистров. Имена PC и SP относятся к регистрам длиной в два слова. Для этих регистров суффикс Н обозначает байт старших разрядов, а суффикс L - байт младших разрядов. ВС, DE и HL представляют собой имена пар регистров. Содержимое 8-разрядного регистра состояния обозначается как слово состояния процессора PSW. Некоторые символы в ассемблере фирмы Intel имеют специальное назначение. Часть этих символов употребляется в примерах программ, включенных в данную книгу. В качестве суффиксов используются следующие символы: О (буква О) определяет восьмеричное число; Q (буква Q) определяет восьмеричное число; В (буква В) определяет двоичное число; Н (буква Н) определяет шестнадцатеричное число*. Однако все числа должны начинаться с десятичной цифры. О (цифра 0) используется в качестве префикса для всех шестнадцатеричных чисел, начинающихся с шестнадцате-ричных цифр от А до F. Шестнадцатеричное число 46 записывается в виде 46Н, а шестнадцатеричное число В8 - в виде 0В8Н. В ассемблере фирмы Intel используется отдельная мнемоника в случае непосредственной адресации. Числа без суффиксов являются десятичными. Наиболее часто употребляемые обозначения помечены знаком *. Для обозначения регистров используются следующие символы: DDD - регистр для размещения результата выполнения операций; SSS - регистр с исходными данными. NNN Имя регистра (номер регистра DDD или SSS) 111 А 000 В 001 / С 010 D . 011 Е 100 Н 101 L NNN представляет собой двоичное число. В качестве разграничителей используются следующие символы: (CR) (пробел) (запятая) (скобки) (возврат каретки) (точка с запятой) (двоеточие) разделяет поля; разделяет отдельные операнды в поле операндов; ограничивают выражение; указывает на завершение текста команды; указывает начало поля комментария; завершает запись метки Q 11.4. АДРЕСАЦИЯ ПАМЯТИ Передача одного байта информации из ПЗУ в ЦПУ производится за один полный такт работы мащины. Если область ОЗУ , адресуется 16-разрядным адресом, то передача адреса ОЗУ на. адресную щину осуществляется за два такта работы мащины,. что связано со значительными затратами времени. По этим причинам разработчики микропроцессоров затратили усилия Hai создание более эффективных способов и средств передачи данных. Один из таких способов состоит в применении дополнительных регистров для временного хранения данных. При таком временном хранении переменных, подлежащих выборке, нет необходимости в обращении к памяти. Другой способ состоит в. использовании более эффективной организации адресации памяти, обеспечивающей меньшее время передачи адреса на адресную щину. Обычно ищется компромисс между количеством рабочих регистров и использованием специальных типов адресации. ЦПУ располагающее большим числом рабочих регистров, может-обеспечить работу при использовании и небольшого разнообразия типов адресации памяти. В действительности целью-применения более сложных типов адресации является такое увеличение производительности выполнения отдельных команд, которое позволило бы снизить потребность в рабочих регистрах.. Ниже приводится краткое описание некоторых типов адресации памяти, используемых в микро-ЭВМ. а) Расширенная адресация. Это рассмотренный выше обычный или стандартный метод адресации. В адресную шину передается 2-байтовый адрес операнда команды. При использовании этого типа адресации поле кода операции занимает 1 байт а поле операнда 2 байта. Выборка команды длиной 3 байта занимает от трех до семи циклов обращения к памяти. 1) Расширенную адресацию (Extended addressing mode) часто называют расширенно!! прямой адресацией, а прярлую адресацию (Direct addressing mode) - укороченной прямой адресацией. По существу это один и тот же тип адресации. Различие состоит в том, что в первом случае в поле операнда ко-.манды указывается 16-разрядный адрес ОЗУ, а во втором - 8-разрядный- Прим. перев. ) Например, сдвиг содержимого регистра влево или вправо. - Прим. мерее. □ б) Прямая адресация Длина поля операнда уменьшена до 1 байт, что позволяет адресоваться только к ячейкам памяти с 1-й по 255-ю. При этом особое значение приобретают данные, размещаемые в первых 256 ячейках памяти. При прямой адресации для записи команды требуются два байта: один для кода операции и один для указания операнда, причем выполнение команды занимает от трех до пяти тактов работы машины. □ в) Непосредственная адресация. Этот тип .адресации становится более понятным, если исходить из того,\хр по существу здесь не используется адресация вообще. В этом случае JaдpeЬ операнда команды заменяется величиной, значение которой может изменяться в диапазоне от О до 255. При непосредственной адресации команда выполняется за два такта работы машины. В качестве примера, поясняющего существо данного типа адресации, рассмотрим выполнение команды загрузить 100 . Обычно эта команда интерпретируется следующим образом: загру-.зить содержимое ячейки памяти, находящейся по адресу 100. В случае непосредственной адресации интерпретация команды будет иной: загрузить величину 100. г) Неявная адресация. В этом случае адресация также не используется. Некоторые команды не обращаются к памяти или к устройствам ввода-вывода; следовательно, в них отсутствует поле операнда. Примерами таких команд является преобразование содержимого регистра) или очистка регистра, находящегося внутри ЦПУ. Поскольку поле операнда отсутствует, команда содержит только 1-байтовое поле кода операции и может быть выполнена за один такт работы машины. □ д) Индексная адресация. В, поле операнда помещается положительное число. При интерпретации адреса производится суммирование поля операнда и содержимого индексного регистра. Положительное число, помещаемое в поле операнда, может принимать значения от О до 255. Вся команда занимает поле длиной 2 байта, и для ее выборки требуется от пяти до семи циклов обращения к памяти. □ Й е) Косвенная адресация. Операнд определяется как содержимое области памяти, адресуемой регистром. Смещение .адреса (сложением некоторого числа - операнда команды - С содержимым регистра, как это имеет место при индексной адресации) здесь невозможно. Длина команды равна 2 байт; выборка ее из памяти выполняется за 3 цикла обращения. Д Использование индексной или косвенной адресации освобождает программиста от необходимости помнить адреса всех переменных и констант, хранимых в памяти мащины. Все или часть из этих адресов задаются посредством описанных ранее регистров. Хотя выбор таких регистров-указателей и установка их содержимого требуют определенных усилий, это полностью окупится, если обрабатывается большое число переменных или когда к определенным переменным производится многократное обращение. □ ж) Относительная адресация. Такой тип адресации предназначен для изменения последовательности выполнения команд программы и похож на индексную и косвенную адресации, использующие те же основные принципы для адресации памяти, в которой хранятся данные. Однако отличительной особенностью относительной адресации является то, что преследуется цель изменения содержимого счетчика команд. При этом операнд команды используется наиболее подходящим для этой; цели образом. Содержимое поля операнда интерпретируется как. число со знаком, задающее смещение положения ячейки памяти относительно адреса, являющегося текущим содержимым счетчика команд. Счетчик команд (гл. 10) указывает адрес следующей команды, подлежащей выполнению (адрес текущей команды +2). Таким образом, относительная адресация должна задавать положение ячеек памяти, смещенных на величину от -125 до -Ы29 относительно адреса текущей команды. Вся команда при этом типе адресации имеет длину 2 байта, и для ее выполнения требуются четыре цикла обращения к памяти. □ Щ На языке ассемблера фирмы Intel применяется различная мнемоника для обозначения команд, использующих разные типы адресации. В □ На языке ассемблера фирмы Motorola используется префикс # в поле операнда для указания на непосредственную, адресацию и суффикс X в поле операнда для указания на индексную адресацию. Все другие типы адресации задаются мнемоникой кода операции команд. Пропуск префикса # является наиболее часто встречающейся ошибкой. Запись просто величины 25, а не #25 приводит к тому, что при выполнении команды будет производиться обращение к содержимому памяти по адресу 25 вместо того чтобы непосредственно использовать величину 25. □ Напоминаем читателю, что список префиксов и суффиксов, распознаваемых транслятором ассемблера, приведен в разд. 11.3. 11.5. ТЕХНИЧЕСКИЕ СРЕДСТВА ПРОГРАММИРОВАНИЯ С ТОЧКИ ЗРЕНИЯ ПРОГРАММИСТА С точки зрения программиста ЦПУ состоит из ряда регистров, .имеющих определенную структуру. Программиста не интересу- Ст передача команд программы из ПЗУ в дешифратор тюманд и работа устройства управления. Вся информация о работе этих блоков помещается в регистр состояния, находящийся в АЛУ. Таким образом, с точки зрения программиста, можно считать, ЧТО ЦПУ состоит из регистров АЛУ и рабочих регистров. □ 11.5.1. Программно-доступные регистры микропроцессора МС6800 фирмы Motorola Технические средства программирования микропроцессора МС6800 приведены на рис. 11.3. Программно-доступные регистры включают два 8-разрядных аккумулятора А и В. Эти регистры используются при выполнении в АЛУ арифметических и логических операций, т. е. они предназначены для обработки данных. О Аккумулятор А Аккумулятор В Индексный регистр X. Счетчик команд PC Указатель стека 5Р Регистр слода состояния (признаков результата) [iL О
Рис. 11.3. Программно-доступные регистры микропроцессора МС6800 фирмы Motorola. В наборе рабочих регистров имеются счетчик команд, указатель стека и индексный регистр, причем длина каждого из. этих регистров соответствует 16-разрядному адресу памяти-Указатель стека предназначен для адресации ячеек ОЗУ, счетчик команд - для управления с помощью управляющей памяти-(ПЗУ) последовательностью выполнения программы и индексный регистр - для адресации ячеек ОЗУ с целью выборки к преобразования хранимых данных. Поскольку каждый из упомянутых регистров имеет определенное назначение, то их комбинацию можно считать минимальным набором регистров. Для повышения эффективности в микропроцессорах фирмы Motorola используются расширенная, прямая, индексная, непосредственная, неявная и относительная адресации, что позволяет расширить возможности системы по управлению данными. Регистр состояния в микропроцессорах фирмы Motorola также называют регистром кода условия. Это 8-разрядный регистр, разряды 6 и 7 которого не используются. При выполнении команды в ЦПУ в разрядах регистра состояния автоматически устанавливаются соответствующие биты состояния: бит 5 - признак дополнительного переноса Н, устанавливаемый всякий раз, когда при выполнении команды сложения какого-либо типа производится перенос из младшей тетрады байта в старшую; бит 4 - признак маскирования прерывания I, устанавливаемый и сбрасываемый программным способом; бит 3 - признак отрицательного результата операции N, Высокий уровень сигнала в разряде данного бита устанавливается, если на выходе аккумулятора бит 7 равен 1; бит 2 - признак нулевого результата Z. Устанавливается если содержимое ячейки памяти или аккумулятора представляет собой нули, в противном случае разряд очищается; бит 1 - признак переполнения V. Устанавливается, если, в результате выполнения в АЛУ арифметической операции происходит переполнение; бит О - признак переноса С. Устанавливается, если в результате выполнения операции в АЛУ происходит перенос. □: Q 11.5.2. Технические средства программирования микропроцессора Intel 8085 С точки зрения программиста Intel 8085 имеет технические средства, показанные на рис. 11.4. Восьмиразрядный регистр аккумулятора А связан с блоком АЛУ. Блок рабочих регистров включает четыре 8-разрядных регистра, предназначенных для размещения данных. Эти регистры могут использоваться как 1 ... 21 22 23 24 25 26 27 ... 39 |
© 2000-2025. Поддержка сайта: +7 495 7950139 добавочный 133270.
Заимствование текстов разрешено при условии цитирования. |