![]() |
![]() |
![]() |
|
Главная страница » Электрика в театре » Мультиплексоры демультиплексоры в последовательностных схемах 1 ... 22 23 24 25 26 27 28 ... 39 О psu/
Рис. 11.4. Программно-доступные регистры микропроцессора 8085А фирмы Intel. дополнительные аккумуляторы с целью упрощения программирования. Блок рабочих регистров содержит акже 16-разрядный регистр указателя стека SP для адресации ячеек ОЗУ и 16-разрядный регистр счетчика команд PC для управления с помощью управляющей памяти (ПЗУ) последовательностью выполнения команд. В добавление к этому имеется пара 8-разрядных регистров Н и L, предназначенная для адресации ОЗУ в процессе обработки данных. В микропроцессорах фирмы Intel регистры В, С, D, Е, Н и L могут использоваться для различных целей. Программист может выбрать для них наиболее подходящее с его точки зрения применение. Однако использование этих регистров по их 11.6. НАБОР КОМАНД Как было установлено, микро-ЭВМ способны выполнять и выполняют большое число различных операций. Обычно набор команд микро-ЭВМ включает свыше 70 наименований. Как средство программирования эти команды могут быть определенным образом классифицированы. Эта классификация дает читателю систематизированное представление о наборе команд и облегчает их запоминание. Набор команд микро-ЭВМ может быть разделен на три. группы: 1) изменяющие содержимое аккумуляторов (8-разрядных регистров) и ячеек памяти; 2) управляющие содержимым указателей адресов памяти (16-разрядных регистров); 1) Признак четности устанавливается, если количество таких бит представляет собой четное число. - Прим. перев. 2) То есть перенос из бита 3 байта в бит 4 байта. - Прим. перев. Прямому назначению обеспечивает более эффективный и систематизированный способ составления программ. В микропроцессорах Intel 8085 применяются непосредственная, расширенная, прямая, косвенная и неявная адресации. В блоке АЛУ имеется 8-разрядный регистр состояния, в котором три разряда не используются (биты в разрядах 5 и 3 всегда равны нулю, а в разряде 1 - единице). Содержание этого регистра называется словом состояния процессора PSW. Битами состояния, используемыми для контроля и управления работой АЛУ, являются:. Нуль: (Z). Этот бит устанавливается, если результат выполнения операции в АЛУ равен нулю. Знак: (S). Этот бит устанавливается, если самый старший бит результата выполнения операции, помещенного в аккумулятор, равен 1. Четность: (Р). Этот бит устанавливается при выполнении некоторых операций в АЛУ путем подсчета числа бит, равных единице, в поле, содержащем результат выполнения операции). Перенос: (CY). Этот бит устанавливается, если в результате выполнения в АЛУ операций сложения, вычитания или сравнения происходит перенос. Дополнительный перенос: (АС). Этот бит устанавливается если в результате выполнения в АЛУ операций сложения, вычитания, приращения (увеличения на 1), уменьшения на 1, сравнения, а также логических операций происходит перенос из крайнего бита младшей тетрады байта в старшую тетраду байта^). И ? , Глава 11 3) изменяющие содержимое регистра состояния, команды ввода-вывода и специальные команды. Команды первой группы в свою очередь подразделяются на три подгруппы в зависимости от типа выполняемых операций: а) передачи данных; б) выполнения арифметических операций; в) выполнения логических операций. Команды второй группы можно разделить на две подгруппы в зависимости от того, указывают ли регистры, содержимое которых обрабатывается при выполнении команд, на память с обрабатываемыми данными (ОЗУ) или на память с программой (ПЗУ), а именно: а) модификации содержимого индексного регистра, регистра косвенной адресации или указателя стека; б) условной и безусловной передачи управления. Третья группа команд может быть подразделена на а) изменения содержимого регистра состояния; б) ввода-вывода; в) специальные. Такая классификация в большей степени отражает функциональное назначение регистров, чем их действительное использование по следующим причинам: 1) команды, изменяющие содержимое аккумулятора АЛУ, выполняют арифметические и логические операции, но также и операции передачи данных; 2) информация из аккумуляторов может передаваться в регистры-указатели; 3) некоторые регистры имеют двойное назначение; иногда они используются как аккумуляторы, а иногда - как указатели. В данной книге используется классификация команд, предложенная разработчиками микро-ЭВМ. Команды каждой из перечисленных групп описываются в остальной части данного раздела. Приводятся некоторые примеры их использования, преследующие цель показать, какие средства имеются в распоряжении программиста. Перечень команд дан в приложениях. □ Приложение В содержит используемую символику и набор команд для микропроцессора МС6800 фирмы Motorola □ , а приложение Г - для микропроцессора 8085 фирмы Intel. Ш Каждое приложение включает также краткие рекомендации по программированию. 11.6.1. Команды передачи данных Этот набор команд используется для передачи данных из одного аккумулятора в другой, а также для передачи данных между аккумуляторами и памятью. □ Перечень команд микропроцессоров фирмы Motorola лриведен в табл. В.1 приложения В. Описание команд легко воспринимается с помощью обозначений, введенных в разд. 11.3. Например, запись А- -М означает, что в аккумулятор А загружается содержимое ячейки памяти с адресом М, запись М-<-М-[-1 означает, что в ячейку памяти с адресом М пересылается содержимое ячейки памяти с адресом М-Ь1. Читателю следует помнить, что М - содержимое ячейки памяти с адресом М, а А - содержимое регистра А при всех типах адресации, за исключением непосредственной адресации. При этом типе адресации под М подразумевается обрабатываемая командой величина, равная М (а не содержимое ячейки памяти с адресом М). Все начинающие программисты, несмотря на предостережения, неоднократно соверщают существенные и досадные ошибки, связанные с неправильной интерпретацией обозначения М при непосредственной адресации. При выполнении команд передачи данных в микро-ЭВМ фирмы- Motorola всегда используется АЛУ. Следует обратить внимание на то, что непосредственная адресация возможна только в командах загрузки данных в регистры, а прямая - в командах загрузки данных в регистры и память. Для обоих этих типов команд (загрузки в регистры и записи в память) неявная адресация неприменима. Рассмотрим фрагмент программы, выполняющий следующие операции: загрузку в аккумулятор числа из ячейки памяти с адресом NUM, деление числа на 2, запись результата снова в ячейку памяти с адресом NUM. Метка Код Операнд Комментарий операции DIV LDAA NUM ЗАГРУЗИТЬ ЧИСЛО В АККУМУЛЯТОР ASRA РАЗДЕЛИТЬ НА 2 STAA NUM ЗАПИСАТЬ В ПАМЯТЬ В приведенном примере в аккумулятор А загружается содержимое ячейки памяти, расположенной по адресу NUM. Предположим, что адрес этой ячейки загружен в регистр указателя стека SP. Приводимый ниже фрагмент программы эквивалентен предыдущему, но выполняется быстрее. Метка Код Операнд Комментарий операции nvP РИГА ЗАГРУЗИТЬ ЧИСЛО DVSP PULA АККУМУЛЯТОР ASRA РАЗДЕЛИТЬ НА 2 PSHA ЗАПИСАТЬ В ПАМЯТЬ Увеличение и уменьшение на единицу содержимого указателя стека SP производятся так же, как и соответствующие операции с содержимым счетчика команд PC. В обоих случаях при пересылке байта из памяти (ОЗУ или ПЗУ) происходит приращение содержимого регистра ЦПУ (SP или PC). Такое единообразие помогает программисту запомнить особенности выполнения команды загрузки стека PSH и команды извлечения иа стека PUL. Однако более важным обстоятельством, о котором должен помнить программист, является то, что поскольку счетчик команд PC указывает на область программы (ПЗУ сО старшими адресами), а указатель стека - на область, используемую для размещения данных (ОЗУ с младшими адресами) то при нормальном выполнении программы наблюдается тенденция к увеличению расстояния между этими указателями (разницы между содержимым этих регистров-указателей). Команды перехода и извлечения из стека PUL имеют тенденцию к восстановлению в указателях памяти начальных значений адресов. Рассмотрим фрагмент программы, выполняющий очистку .пяти ячеек памяти, расположенных, начиная с адреса памяти, соответствующего имени CLNUM:
Эту же задачу несколько быстрее решает следующий фрагмент программы:
Если предположить, что в указатель стека SP загружен адрес ячейки памяти, определяемый выражением CLNUM-f4, то приводимый ниже фрагмент программы будет выполняться еще быстрее: Метка SFCL
Щ Набор команд пересылки, загрузки и записи в память микро-ЭВМ фирмы Intel приведен в табл. Г.1 приложения Г. Эти команды не меняют значение слова состояния процессора PSW. В микро-ЭВМ фирмы Intel тип адресации, используемой командой, задается частью мнемонического обозначения команды. Скобки означают косвенную адресацию. Описание команд легко читается с использованием обозначений, введенных в разд. 11.3. Например, запись M(HL)- -r означает, что содержимое регистра г записывается в память по адресу, находящемуся в паре регистров HL. Напомним, что буквы обозначают содержимое регистров. Термин данные используется, когда задаются сами величины. В литературе по микро-ЭВМ фирмы Intel наиболее распространенный тип адресации, при котором используется поле операнда длиной 2 байта, называется прямой адресацией). Команды пересылки данных в микро-ЭВМ фирмы Intel выполняются без участия модуля АЛУ. Приводимые далее фрагменты программ иллюстрируют способ записи мнемонического обозначения кода операции и операндов и интерпретацию описания команд, приведенного в табл. Г.1. Загрузка регистра А содержимым ячейки памяти, расположенной по адресу 1000, может быть выполнена следующими тремя способами: 1. Предположим, что пара регистров HL содержит шестнад-цатеричную величину 1000, и используем косвенную адресацию MOV А,М ) в отличие от названия расширенная прямая адресация , употребляемого для этого типа адресации при описании микро-ЭВМ фирмы Motorola.- Прим. перев. Указание М в поле операнда означает содержимое ячейки памяти, адресуемой парой регистров HL . 2. Используем расширенную адресацию LDA ЮООН Запись ЮООН означает содержимое ячейки памяти, адрес которой равен 1000 . 3. Если известно, что по адресу 1000 в памяти находится шестнадцатеричное число F6, то указания адреса памяти можно избежать, используя непосредственную адресацию MVI A,0F6H Рассмотрим фрагмент программы, выполняющий очистку ляти ячеек памяти, начиная с ячейки памяти с именем CLNUM:
11.6.2. Арифметические команды Эта группа команд использует часть АЛУ, обеспечивающую выполнение арифметических операций, для изменения содержимого любого аккумулятора. Изменение содержимого каждого аккумулятора осуществляется с помощью дополнительных дан- ных, извлекаемых из любого другого аккумулятора или из ячейки памяти. □ Перечень команд выполнения арифметических операций микро-ЭВМ фирмы Motorola приведен в табл. В.2 приложения В- Рассмотрим фрагмент программы сложения двух чисел, выбираемых из ячеек памяти с адресами NUMI и NUMI-f-l, с записью результата сложения в память по адресу NUM1. Метка NADD Код операции LDAA ADDA STAA Операнд Комментарий NUMI ЗАГРУЗИТЬ В АКК. 1-Е ЧИСЛО NUMI-1-1 ДОБАВИТЬ 2-Е ЧИСЛО NUMI ЗАПИСАТЬ РЕЗУЛЬ- ТАТ В ПАМЯТЬ □ Если предположить, что адрес NUMI хранится в индексном регистре X, то приведенный выше фрагмент можно заменить следующим: Метка N2ADD Код операции LDAA ADDA STAA Операнд Комментарий X ЗАГРУЗИТЬ В АКК. 1-Е ЧИСЛО 1,Х ДОБАВИТЬ 2-Е ЧИСЛО X ЗАПИСАТЬ РЕЗУЛЬ- ТАТ В ПАМЯТЬ □ Щ Набор команд сложения и вычитания чисел длиной 1 байт микро-ЭВМ фирмы Intel приведен в табл. Г.2 приложения Г. При косвенной адресации всегда используется пара регистров HL, причем выполнение команд может сопровождаться установкой любого из битов признака результата в PSW. Перечень команд сложения удвоенной точности микро-ЭВМ фирмы Intel представлен в табл. Г.З приложения Г. При выполнении команд в PSW может изменяться только значение бита переноса CY. Набор команд увеличения и уменьшения на единицу чисел длиной 1 байт в микро-ЭВМ фирмы Intel вместе с указанием устанавливаемых бит слова состояния процессора PSW содержится в табл. Г.4 приложения Г. Команды приращения и уменьшения на единицу чисел длиной 2 байта (размером в слово) представлены в табл. Г.5 приложения Г, Для этих команд установка битов признака результата не производится. Рассмотрим фрагмент программы сложения двух чисел, находящихся в памяти с адресами NUMI и NUMI + 1, с записью результата операции в ячейку памяти по адресу NUMI. Метка Код Операнд Комментарий операции NIAD; LXI H.NUMI + 1 ; ЗАГРУЗИТЬ В РЕ- ГИСТРЫ HL АДРЕС NUMI+1 MOV А,М ; ЗАГРУЗИТЬ В АКК. СОДЕРЖИМОЕ ЪкШк NUMI+1 DCX Н ; ИЗМЕНИТЬ АДРЕС НА NUMI ADD М ; ДОБАВИТЬ СОДЕР- ЖИМОЕ байта NUMI MOV М,А ; ЗАПИСАТЬ РЕЗУЛЬ- ТАТ ПО АДРЕСУ NUMI 11.6.3. Логические команды Эта группа команд использует часть АЛУ, выполняющую операции над кодами (логические операции) для изменения содержимого любого аккумулятора. Содержимое каждого аккумулятора изменяется с помощью дополнительных данных, выбираемых из любого другого аккумулятора или ячейки памяти. □ Перечень команд выполнения операций над кодами микро-ЭВМ фирмы Motorola приведен в табл. В.З приложения В. В этой же таблице содержится описание команд проверки данных. □ Щ В табл. Г.6 приложения Г представлен перечень команд выполнения логических операций и операций сравнения микро-ЭВМ фирмы Intel. Эти команды устанавливают все биты признака результата (PSW). Команды циклического сдвига, вычисления дополнения и установки бита переноса приведены в табл. Г.7 приложения Г, Эти команды могут изменять в PSW только значение бита переноса CY. При выполнении команды циклического сдвига влево содержимого аккумулятора в разряд признака переноса (CY) помещается содержимое разряда А7 аккумулятора, а при выполнении команды циклического сдвига вправо - содержимое разряда АО. Табл. Г.8. приложения Г содержит описание команды вычисления дополнения содержимого аккумулятора микро-ЭВМ фирмы Intel. Эта команда не изменяет состояния флажков-битов признака результата в PSW. Щ П.6.4. Команды индексной и косвенной адресации, управления стеком Для решения задачи отслеживания местонахождения данных в памяти (ОЗУ) в распоряжении программиста имеются указатели адреса памяти. Разумеется, такое отслеживание требует от программиста включения в его программу ряда команд, модифицирующих эти указатели. В данном разделе описываются команды модификации указателей адреса основной памяти, содержащей обрабатываемые данные. □ В табл. В.4 приложения В приведен перечень команд управления стеком и индексным регистром микро-ЭВМ фирмы Motorola. Следует обратить внимание на то, какой смысл вкладывается в символы, описывающие операции. Запись Х- -Х-ь1 означает добавление 1 к содержимому регистра X и передачу результата в регистр X. Запись XL-<-(M-bl) означает передачу содержимого ячейки памяти с адресом Ж+\ в младшие разряды регистра X, обозначаемые как XL. Операции над содержимым индексного регистра легко понять. Программист использует этот регистр в качестве указателя данных. Содержимое регистра может увеличиваться или уменьшаться на 1 с целью последовательного продвижения по таблице данных. Произвольное (не последовательное) продвижение смещения адреса может быть выполнено с использованием команды загрузки индексного регистра. Если время выполнения операций является важным фактором, то оно может быть сокращено благодаря использованию указанного механизма смещения . Использование этой возможности требует от программиста несколько больших усилий. Все начинающие программисты сталкиваются с проблемой понимания особенностей использования стека. Однако для работы со стеком предусмотрены такие важные и сложные с точки зрения понимания команды, что на практике и программисты, являющиеся отнюдь не новичками, испытывают затруднения при обращении к стеку. Важность и уникальность использования стека состоит в том, что он обеспечивает исключительно быструю передачу содержимого регистров и памяти, в которой размещаются данные. Эта передача происходит в следующих случаях: 1) автоматически при использовании любой команды перехода или передачи управления в подпрограмму и возврата из подпрограммы (см. разд. 10.2.3); 2) автоматически при возникновении прерывания (см. разд. 10.2.3); 3) при выполнении команд загрузки данных в стек или извлечении из стека, рассмотренных в разд. 11.6.1. 1 ... 22 23 24 25 26 27 28 ... 39 |
© 2000-2025. Поддержка сайта: +7 495 7950139 добавочный 133270.
Заимствование текстов разрешено при условии цитирования. |