Дудко алексей львович захаров валерий николаевич




НазваниеДудко алексей львович захаров валерий николаевич
страница6/22
Дата26.12.2012
Размер3.11 Mb.
ТипДокументы
1   2   3   4   5   6   7   8   9   ...   22

Таблица 4.4


Регистр

Код

Пара регистров

Код

Обозначение условия в мне­мокоде

Код

А

111

В (В, С)

00

NZ (Z = 0)

000

В

000

D (D, E)

01

Z(Z=1)

001

С

001

Н (Н, L)

10

NC (CY - 0)

010

D

010

SP

11

C(CY= 1)

011

Е

011







РО (Р = 0)

100

Н

100







РЕ(Р = 1)

101

L

101







Р (S - 0)

ПО

М (память)

110







М (S= 1)

ПО


Команда SUI <В2> производит вычитание содержимого второ­го байта (команда двухбайтовая) из содержимого аккумулято­ра и помещает результат в аккумулятор (рис. 4.9,в). Восьмерич­ный код команды — 326Q (см. приложение 1).

Кроме команд, приведенных в качестве примеров, группа арифметических команд содержит команды сложения и вычита­ния содержимого аккумулятора с содержимым ячеек памяти, а также команды увеличения и уменьшения на единицу содер­жимого различных регистров.


4.6.3. ГРУППА ЛОГИЧЕСКИХ КОМАНД


Команды этой группы предна­значены для выполнения логических, или булевых, операций над данными, .содержащимися в регистрах, ячейках памяти, а также над флагами условий. К этим операциям относятся операции: логического сложения (ИЛИ), логического умноже­ния (И), суммирования по модулю 2, сравнения, сдвига, до­полнения до 1 и до 2. Как и команды предыдущей группы, все логические команды оказывают влияние на флаги.

Команда ANA г выполняет параллельно поразрядное логиче­ское И над содержимым регистра-источника и аккумулятора. Результат операции заносится в аккумулятор (рис. 4.10,а). Например, команда 10 100 100 В выполняет операцию логиче­ского умножения поразрядно над содержимым регистра Н и А и заносит результат в аккумулятор. Двоичный код 10 100 100 В соответствует восьмеричному коду 244Q коман­ды ANA H.



Рис. 4.10. Примеры размещения некоторых логических команд в байтах


Команда ANI < В2 > является двухбайтовой и также выполняет поразрядную операцию логического И, но над содержимым вто­рого байта команды и аккумулятора. Команда имеет восьмерич­ный код-3460 (рис. 4.10,6). Результат операции заносится в аккумулятор.

Команда ORAr аналогична команде ANA r, но в отличие от нее выполняет операцию поразрядного логического ИЛИ. Результат операции заносится в аккумулятор (рис. 4.10,в).


4.6.4. ГРУППА КОМАНД ПЕРЕХОДОВ


Эта группа команд предназначе­на для организации правильной последовательности выполнения программы. Сюда входят команды безусловного и условного переходов, команды вызова подпрограммы и возвращения к главной программе. Все команды этой группы на флаги влия­ния не оказывают. Команды безусловного перехода выполняют специальные операции над содержимым счетчика команд. Команды условного перехода обеспечивают необходимое ветвле­ние программы путем анализа состояния одного из четырех флагов: нуля, знака, четности и переноса, коды которых указа­ны в табл. 4.4.

Команда JMP <В2> <ВЗ> — трехбайтовая команда передает управление команде по адресу, содержащемуся в третьем и втором байтах текущей команды. Это осуществляется путем записи содержимого третьего и второго байтов команды в счетчик команд (рис. 4.11,а). Как уже отмечалось в § 4.3, счетчик команд представляет собой 16-разрядный регистр, содержащий адрес, по которому можно обратиться для считывания очеред­ного байта команды. Восьмеричный код этой команды - 303 Q.

Команды CALL и RET — команды безусловного перехода. Первая из них передает управление подпрограмме, прекращая выполнение основной программы; вторая передает управле­ние главной программе, возвращаясь к ее выполнению (рис. 4.11,£, в). Первая команда — трехбайтовая. Восемь стар­ших разрядов адреса следующей команды пересылаются в ячей­ку памяти, адрес которой на единицу меньше содержимого ука­зателя стека. Восемь младших разрядов адреса следующей команды пересылаются в ячейку памяти, адрес которой на две единицы меньше содержимого указателя стека. Содержимое указателя стека уменьшается на две единицы. Управление пере­дается команде, адрес которой размещается в третьем и втором байтах команды CALL



Рис. 4.11. Примеры размещения некоторых команд переходов в байтах


Команда RET — однобайтовая. Ее восьмеричный код — 311Q (код предыдущей команды CALL — 315Q). В процессе выполне­ния этой команды содержимое указателя стека получает прира­щение на две единицы. Содержимое ячейки памяти по адресу, хранящемуся в указателе стека, пересылается в счетчик команд на место младших восьми разрядов. Содержимое ячейки памяти по адресу, на единицу большему, чем содержимое указателя стека, пересылается в счетчик команд на место старших восьми разрядов. Таким образом, возвращение к главной программе происходит всегда путем обращения к байту команды, непо­средственно следующему за байтом, используемым командой CALL


4.6.5. ГРУППА КОМАНД УПРАВЛЕНИЯ И РАБОТЫ СО СТЕКОМ


Команды этой группы предназна­чены для управления работой микропроцессора, устройствами ввода/вывода и стеком. Команды этой группы не оказывают влияния на флаги. Рассмотрим в качестве примера работу неко­торых команд из этой группы.

Команда XTHL — однобайтовая команда с восьмеричным номером 343Q. Является примером наиболее длинных по вре­мени исполнения команд - занимает 18 машинных тактов.

В процессе выполнения команды содержимое регистра L меня­ется на содержимое ячейки памяти по адресу, содержащемуся в указателе стека, и наоборот. Содержимое регистра Н меня­ется на содержимое ячейки памяти по адресу, на единицу боль­шему, чем содержимое указателя стека, и наоборот (рис. 4.12,я). На это уходит пять машинных циклов.

Команды IN , OUT . Эти команды предназначены для ввода данных от входного порта в аккумулятор и вывода данных из аккумулятора в выходной порт соответственно. Первая команда имеет восьмеричный код 333 Q, вторая — 323 Q. Обе команды — двухбайтовые. Второй байт обеих команд отве­ден под адрес соответствующего входного и выходного портов. В результате выполнения первой команды данные от входного порта по двунаправленной шине данных передаются в аккумуля­тор. В результате выполнения второй команды данные выводят­ся по той же шине данных из аккумулятора в выходной порт (рис. 4.12,6, в).



Рис. 4.12. Примеры размещения некоторых команд управления в байтах


На этом закончим рассмотрение примеров размещения в бай­тах команд описанных выше групп и перейдем к вопросу о том, как составляется программа решения на ПМ-ЭВМ задачи с ис­пользованием приведенного в приложении 1 списка команд.


4.7. ПРОГРАММИРОВАНИЕ ПМ-ЭВМ


Как уже отмечалось в гл. 3, ПМ-ЭВМ не имеет программного обеспечения, позволяющего пользоваться для решения задач языками высокого уровня. Поэтому запись программы для ПМ-ЭВМ осуществляется поль­зователем на машинном языке с применением команд описан­ных выше групп.

Полный перечень команд, приведенных в сжатой форме в табл. 4.1 — 4.3, должен быть хорошо известен пользователю, решающему свою задачу. Это даст ему возможность варьиро­вать при составлении своих программ различными командами и способами их включения в программы с целью составления программ либо более коротких, либо экономящих используе­мую память, либо сокращающих время счета.

В ряде случаев способ решения той или иной задачи стано­вится более понятным, если он представлен в виде специальной схемы, называемой схемой алгоритма решения и имеющей вид ориентированной сети с вершинами различных типов, соответст­вующими используемым операциям.

В качестве примера рассмотрим решение задачи суммирова­ния первых 20 чисел натурального ряда, схема которой приве­дена на рис. 4.13,а.

Для реализации первых двух операторов (не считая Start) можно воспользоваться двухбайтовой командой MVI г, осущест­вляющей непосредственную загрузку в какой-либо регистр данных, содержащихся во втором байте команды (в данном случае - чисел OD). Для осуществления операции S = S + N можно воспользоваться командой ADD r, выполняющей сум­мирование содержимого какого-либо регистра с содержимым аккумулятора и запись результата в аккумулятор. Для выпол­нения операции N = N + 1 в машинном языке ПМ-ЭВМ преду­смотрена специальная команда INR г, осуществляющая увели­чение на единицу содержимого какого-либо регистра. Остается еще организовать в программе цикл с использованием услов­ного оператора. Для этой цели подошла бы команда JNZ, осу­ществляющая переход в программе при отсутствии нуля в ре­зультате какой-либо предшествующей переходу операции (в на­шем случае — операции вычитания: 21 — N).

Однако этого можно и не делать, построив несколько иначе схему решения задачи. Вместо того чтобы суммировать последо­вательно увеличивающиеся числа от О D до 20 D, можно суммиро­вать последовательно уменьшающиеся числа от 20 D до OD. Тогда содержимое регистра, хранящего число N, на некотором шаге выполнения программы обратится в нуль и этот результат можно будет использовать при организации условного перехода.

Итак, новая схема алгоритма может быть построена следую­щим образом.

Шаг 1. Заносим число О D в аккумулятор (А).

Шаг 2. Заносим число 20 D в какой-нибудь регистр, напри­мер в регистр D.

Шаг 3. Суммируем содержимое регистров А и D.

Шаг 4. Уменьшаем содержимое регистра Она единицу.

Шаг 5. Если содержимое регистра Вне равно нулю, осущест­вляем переход к шагу 3; в противном случае переходим к сле­дующему шагу.

Ш а г 6. Переписываем содержимое регистра А в какой-ни­будь из портов вывода, например в порт Р0оо-

Ш а г 7. Конец работы программы.

Соответствующая схема представлена йа рис. 4.13,6.

Приступим к программированию этой схемы. Для этой цели нам понадобятся все указанные выше команды, за исключе­нием команды INR г (увеличение содержимого регистра на единицу). Вместо нее следует взять команду DCR г (уменьше­ние содержимого регистра на единицу), которая будет исполь­зована применительно к регистру D. Кроме того, нам будут необходимы еще следующие две команды: OUT — двухбайто­вая команда вывода данных из аккумулятора в порт вывода, определяемый адресом, содержащимся во втором байте коман­ды, и однобайтовая команда HLT — останов программы. Коды всех используемых команд можно взять из таблицы, приведен­ной в приложении 1.

Для размещения всей программы нам понадобятся 12 ячеек памяти с номерами от 014QOOOQ до 014Q013Q. В первые две ячейки с номерами 014 000 и 014 001 поместим оба байта первой команды MVI A OOOQ загрузки аккумулятора (регистра А) числом OD. При этом в первую ячейку поместим восьмеричный код команды 076, а во вторую — содержимое второго байта этой команды — восьмеричный код числа OD (число 000). В сле­дующие две ячейки с номерами 014 002 и 014 003 поместим два байта следующей команды, загружающей регистр D десятич­ным числом 20. Восьмеричный код этой операции 026 будет на­ходиться в первой ячейке, а восьмеричный код 024 десятичного числа 20 - во второй и т. д. В последнюю ячейку с номером 014 013 поместим восьмеричный код 166 команды HLT, осу­ществляющей останов программы. В табл. 4.5 приведен полный текст составленной программы вместе с комментарием. При организации цикла использована специальная метка Ml, указы­вающая на операцию, которую следует выполнить, если содер­жимое регистра D не равно нулю.





Рис. 4.13. Схемы алгоритмов для задачи сложения первых 20 чисел


Таблица 4.5

Адрес ячейки

Код операции или содержи­мого второго или третьего байта

Мет­ка

Мнемокод

Комментарий

014 000

076



MVI A OOOQ

Загрузка регистра А числом OD

014 001

000





Число OD

014 002

026



MVI D 024Q

Загрузка регистра D числом 20 D

014003

024





Число 20 D

014 004

202

Ml:

ADDD

Сложение содержи­мого регистров А и D

014005

025



DCRD

Уменьшение на едини­цу содержимого ре­гистра D

014 006

302



JNZM1

Переход к метке М 1 при отсутствии нуля

014 007

004





Метка М 1 (адрес)

014 010

014





Метка М 1 (адрес)

014 011

323



OUT OOOQ

Вывод данных из ре­гистра А в порт рооо

014 012

000





Номер порта

014013

166



HLT

Останов программы
1   2   3   4   5   6   7   8   9   ...   22

Похожие:

Дудко алексей львович захаров валерий николаевич iconРазвитие высших форм запоминания 1 Леонтьев Алексей Николаевич
Леонтьев Алексей Николаевич (5 февраля 1903 — 21 января 1979) — советский психолог, доктор психологических наук, профессор, академик...
Дудко алексей львович захаров валерий николаевич iconСвидетельство о государственной регистрации программы для ЭВМ регистрационный номер: 2011618 693 ( 08. 1 2011) Заявка: 2011616 954 ( 19. 0 2011)
Алексеевич, Липов Денис Игоревич, Петрик Алексей Николаевич, Лобанов Павел Сергеевич, Семенов Роман Александрович, Киселев Алексей...
Дудко алексей львович захаров валерий николаевич iconРеферат Авторы: Захаров Михаил Юрьевич, Виноградов Кирилл Евгеньевич, Кренев Александр Николаевич
Образования "Ярославский государственный университет имени П. Г. Демидова" 150000, г. Ярославль, ул. Советская, 14
Дудко алексей львович захаров валерий николаевич iconАлексей Николаевич Толстой Гиперболоид инженера Гарина
Этот роман написан в 1926–1927 годах. Переработан, со включением новых глав, в 1937 году
Дудко алексей львович захаров валерий николаевич iconЛекции по общей психологии
Алексей Николаевич Леонтьев (1903-1979) выдающийся советский психолог, действительный член апн рсфср, доктор педагогических наук,...
Дудко алексей львович захаров валерий николаевич iconРазработка принципов однопроходной прокатки изделий из волокнистых композиционных материалов
Мануйлов Виталий Федорович, Соколов Алексей Викторович, Нуждин Виталий Николаевич, Преображенский Евгений Владимирович
Дудко алексей львович захаров валерий николаевич iconВасилий Александрович Токарев П. Михайлов Игорь Львович Андреев Вячеслав Николаевич Козляков День народного единства: биография праздника
Книга посвящена драматичным событиям российской истории XVII в. – Смутному времени. На основе широкого круга источников и литературы...
Дудко алексей львович захаров валерий николаевич iconКонтрольная работа по литературе в 7 классе
Мать, Надежда Осиповна, была правнучкой Ганнибала. Александр Львович литературой не увлекался, а вот его брат, Сергей Львович,- был...
Дудко алексей львович захаров валерий николаевич iconПроисхождение Александра Сергеевича Пушкина
Сергей Львович (1767—1848), светский острослов и поэт-любитель, дядя по отцу, Василий Львович (1766—1830), был известным поэтом круга...
Дудко алексей львович захаров валерий николаевич iconАлексей Николаевич Толстой Гиперболоид инженера Гарина
«Аэлита. Гиперболоид инженера Гарина»: Гос уч пед из во Министерства просвещения бсср; Минск; 1959
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница