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

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:

Метка

Код

Операнд

Комментарий

операции

MEMCL

CLNUM

ОЧИСТИТЬ ПЕРВУЮ

CLNUM-I-1

CLNUM-1-2

CLNUM-ьЗ

четвертую

CLNUM-1-4

ВСЕ ячейки очище-

Эту же задачу несколько быстрее решает следующий фрагмент программы:

Метка

Код

операции

Операнд

Комментарий

FMEMCL

CLRA

ОЧИСТИТЬ

АККУМУ-

ЛЯТОР A

STAA

CLNUM

ОЧИСТИТЬ

STAA

CLNUM-bl

STAA

CLNUM-1-2

STAA

CLNUM-ьЗ

ЧЕТВЕРТУЮ

STAA

CLNUM-l-4

ВСЕ ЯЧЕЙКИ ОЧИЩЕ-



Если предположить, что в указатель стека SP загружен адрес ячейки памяти, определяемый выражением CLNUM-f4, то приводимый ниже фрагмент программы будет выполняться еще быстрее:

Метка SFCL

Код Операнд операции

Комментарий

CLRA

ОЧИСТИТЬ АККУМУЛЯТОР А

PSHA

ОЧИСТИТЬ БАЙТ С АДРЕСОМ CLNUM-)-4

PSHA

CLNUM-(-3

PSHA

CLNUM-(-2

PSHA

CLNUM-t-l

PSHA

ПОЛЕ CLNUM ОЧИЩЕНО D

Щ Набор команд пересылки, загрузки и записи в память микро-ЭВМ фирмы 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:

Метка

Код

операции

Операнд

Комментарий

MEMCL:

; очистить АККУМУЛЯТОР A

CLNUM

;очистить первую ячейку

CLNUM-}-1

; ВТОРУЮ

CLNUM 4-2

; ТРЕТЬЮ

CLNUM-1-3

; ЧЕТВЕРТУЮ

CLNUM-l-4

; ПЯТУЮ

Эту же задачу несколько быстрее решает следующий фраг

программы:

Метка

Код

операции

Операнд

Комментарий

FMCL:

MVI

A,00

; очистить АККУМУЛЯТОР А

A,CLNUM

;очистить ПЕРВУЮ ячейку

A,CLNUM-H

; ВТОРУЮ

A,CLNUM-b2

; ТРЕТЬЮ

A.CLNUM-l-3

; ЧЕТВЕРТУЮ

A,CLNUM-)-4

; ПЯТУЮ

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.
Заимствование текстов разрешено при условии цитирования.