+7(495)926-7456
+7(495)926-7456
Электронные компоненты  Мануалы 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [ 65 ] 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105

(кроме команды DAD rp, результат- которой влияет только на флаг переноса СУ).

Операции И, ИЛИ и суммирование по модулю два, задаваемые соответствующими логическими командами, выполняются поразрядно. Эти команды влияют на флаги Z, S иР, устанавливают CF=" О и не влияют на СУ. Поэтому команды ANA А и ORA А являются фактически командами сброса СУ. Отметим, что для установки СУ = = 1 предназначена команда STC, а для инвертирования СУ - команда CMC. Команда XRA А осуществляет сброс аккумулятора и флага СУ (одновременно устанавливаются флаги 5 = 0, 2=1, Р =1 и сохраняется имевшееся значение СУ).

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

При выполнении команды сравнения СМР или СР1 осуществляется операция вычитания (А)-(г) или (А)-(82), при которой содержимое аккумулятора не изменяется, но устанавливаются новые значения флагов. Результат сравнения определяется следующим образом: если Z==1,*T0 (Л) = (г) или (Л) = (В2); если CF = 1, то (Л) < < (г) или (Л) < {В2).

В системе команд предусмотрены циклические и арифметические сдвиги содержимого аккумулятора на один разряд влево и вправо. При циклическом сдвиге аккумулятор замыкается в кольцо путем соединения его старшего разряда с младшим, а при арифметическом - это кольцо замыкается через флаг переноса СУ. Если требуется осуществить логический сдвиг, при котором освобождающийся разряд заполняется нулем, то можно сначала обнулить СУ с помощью команды ANA Л, а затем использовать команду RAL или RAR.

Выполнение команд безусловного перехода JMP и безусловного вызова подпрограммы (ПП) CALL сводится к замене содержимого счетчика команд СК содержимым BBz формата команды:

(СК) <---(B,)iBz).

При выполнении команды J MP прежнее содержимое СК теряется, тогда как при выполнении CALL прежнее содержимое СК записывается в стек и после завершения ПП извлекается из стека для возврата на основную программу по команде RET.

В условных переходах {JC, JNC, ...), в условных вызовах подпрограммы (СС, CNC, ...), а также в условных возвратах из подпрограммы (RC, RNC, ...) указанные действия осуществляются только при выполнении соответствующего условия. В зависимости от выполнения или невыполнения проверяемого условия команда условного вызова ПП длится 11 либо 17 тактов (3 или 5 циклов), а команда условного возврата из ПП - 5 или 11 тактов (1 или 3 цикла).

Однобайтовая команда повторного запуска RST занимает особое место в системе команд, так как ее код llNNNlll обычно не записы-



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

Команды INR г и DCR г изменяют содержимое регистра г соответственно на +1 или -1, команды INX гр и DCX гр аналогичньш образом изменяют содержимое пары регистров. Команды INR г и DCR г влияют на все флаги, кроме СУ, и поэтому их удобно использовать для организации счета с последующим ветвлением программы. Команды INX гр и DCX гр не влияют на флаги и поэтому обычно используются не для счета, а для модификации содержимого пары регистров, которое рассматривается как адресная информация при обращении к ЗУ. Если требуется организовать счетчик объемом более 256, то программным путем организуют последовательную работу двух и более регистров г, используя команды INRr или DCR г и команды условных переходов.

Двухбайтовые команды ввода/вывода IN и OUT обеспечивают программный обмен информацией между аккумулятором и ВУ, номер которого указывается в байте В2 формата команды. Обмен обычно осуществляется через специальные устройства сопряжения, называемые портами, которые входят в состав интерфейса МПВУ. В простейшем случае функции порта может выполнять буферный регистр, снабженный схемами управления записью и выдачей информации, а также выходными усилительными каскадами с тремя состояниями. При выполнении команд IN и OUT в такте.П машинного цикла /ИЗ содержимое байта В2 поступает на адресные линии Л 7 - Л О и Л15-Л 8.

Команды STAX гр и LDAX гр обеспечивают соответственно запись содержимого аккумулятора в ячейку ОЗУ и считывание в аккумулятор содержимого ячейки ЗУ, адрес которой указан в паре регистров В-С или D-Е. Аналогичный способ косвенной адресации по паре Н-L обеспечивают команды MOV М,гм MOV г, М, встречавшиеся в группе 1.

Косвенная адресация по регистру SP обеспечивает запись в стек содержимого пар регистров Б-С, D-E и H-L с помощью команд PUSH В, PUSHD и PUSH Н. Команда PUSH PSW обеспечивает запись в стек содержимого аккумулятора и флагов, причем при передаче флагов разряды ШД принимают следующие значения: ДО = - СУ, Д1 = 1, Д2 =Р, ДЗ = О, Д4 = СУ, Д5 = О, Д6 = Z, Д7 = S. Команда POP гр позволяет извлекать данные из стека и записывать их в соответствующие пары регистров. Таким образом, при обращении к стеку всегда передаются.два байта информации, причем первым записывается младший байт, а извлечение данных из стека осуществляется в обратном порядке по отношению к порядку записи в стек.

Команды EI и DI устанавливают внутренний триггер разрешения прерывания в состояния «1» и «О».

Команда NOP означает пустую операцию, во время которой происходит только увеличение на единицу содержимого СК. Использование



определенного числа команд NOP подряд позволяет обеспечить задержку небольшой фиксированной длительности, кратной 47.

Команда HLT переводит ЦПЭ в состояние «Останов», которое длится целое число тактов и сопровождается выработкой сигналов «Подтверждение останова» = 1 и «Ожидание» = 1. Вывести ЦПЭ из этого состояния можно с помощью сигналов <вапрос захвата», <вапрос прерывания» и «Сброс». В первом случае ЦПЭ переходит в состояние «Захват шин», после окончания которого снова возвращается в состояние «Останов», во втором ЦПЭ выполняет команду RST и переходит на обработку прерывания; в третьем ЦПЭ начинает выполнение программы с нулевой ячейки памяти.

Рассмотрение системы команд показывает, что в данном ЦПЭ используются следующие основные способы адресации данных: прялшя адресация, при которой адрес ячейки ЗУ, хранящей операнд, содержится в байтах ВЗВ2 формата команды (команды J MP, CALL, ST А, LDA, SHLD и "т. п.); регистровая адресация, при которой в байте В1 команды указываются коды регистров, являющихся источниками или приемниками информации (однобайтовые команды MOV ri, г, INR г, ADD г, DAD rp и т. п.); косвенная регистровая адресация, при которой в формате команды указана пара регистров, содержимое которой является адресом ячейки ЗУ, хранящей операнд (команды STAX гр, LDAX гр, а также команды MOV г, М, ADD УИ и т. д.; непосредственная адресация, при которой операнд содержится в В2 или ВЗВ2 формата команды (команды MVJ г, ADI, ACI, LXI гр и т. п.).

При работе с таблицами и массивами чисел, содержащихся в ЗУ, целесообразно организовать относительную адресацию с использованием индексного регистра. В качестве индексного регистра выбирают одну из трех пар РОИ (чаще всего пару Н-L, поскольку ее содержимое адресует ячейку М, которая может участвовать в большом числе команд). В индексном регистре хранится адрес первого элемента таблицы, а все остальные элементы адресуются относительно первого.

§ 7.2. ЭЛЕМЕНТЫ ПРОГРАММИРОВАНИЯ

Результатом программирования должна явиться подготовленная к записи в ПЗУ программа, записанная на машинном языке данного ЦПЭ, т. е. в виде последовательности команд, представленных двоич-ньми кодами. Так как программирование в машинных кодах затруднительно, то используют символический язык, в котором команды, адреса и данные представлены с помощью алфавитно-цифровых символов, имеющих мнемонический смысл, облегчающий их запоминание и применение. Записанная таким образом программа транслируется на машинный язык специальной программой, называемой ассемблером. Запись программы на символическом языке (его также называют языком ассемблера) состоит из совокупности операторов, каждый из которых при трансляции переводится в одну машинную команду. Это характерно для языков низкого уровня, использование которых целесообразно при составлении программ небольшой сложности [69.

При составлении достаточно сложных программ переходят на языки высокого уровня, в которых один оператор может соответствовать



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [ 65 ] 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105