Реферат: Аналитический обзор книги "Программирование на языке ассемблера..."

ВВЕДЕНИЕ

Интенсивное развитие микроэлектроники и повышения степени интеграцииоткрыли новое направление в ВТ — создание микропроцессоров и микрокомпьютеров.Появились вы числительные системы с малым уровнем потребления энергии иуниверсальными возможностями, которые позволяют решать задачи управленияобъектами различной физической природы. На основе их применения снижаются затратына автоматизацию основных технических и вспомогательных процессов. В результатебудет решена задача комплексной автоматизации производства во всех отраслях.Это позволит увеличить производительность труда, уменьшить себестоимостьвыпускаемой продукции и значительно сократить ручные операции в промышленности.Однако для широкого развития работ в данном направлении необходимо готовитьзначительное число инженеров — системотехников, умеющих создавать и применятьмикропроцессоры и микрокомпьютеры. Кроме того, следует выпускать и многоинженеров — математиков, разрабатывающих соответствующее программноеобеспечение. Для их обучения  необходимоиметь учебные пособия, посвященные аппаратным и программным средствамсовременной вычислительной техники.

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

<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:KO;mso-bidi-language:AR-SA">

На обзор представлена книга американских авторов Левенталя Л. и Сэйвилла У.«Программирование на языке ассемблердля микропроцессоров  8080 и 8085».Книга переведена с английского, напечатана в 1987г. в издательстве Радио исвязь. Издание включает в себя 488 страниц.

Для начала рассмотрим содержание этой книги чтобы сделать окончательныйанализ по ее достоинствам и недостаткам, а также конкретизировать к какойгруппе эта книга предназначена. На обзор кратко будут представлены части этойкниги, затем остановим свое внимание на определенной главе.

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

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

ГЛАВА 1. ОБЩИЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ

Служит введением в программирование для данного процессора; в нейприводятся основные отличия этого процессора от других микропроцессоров имини-ЭВМ. В этой главе описываются общие методы написания программ на языкеассемблера для микропроцессора 8080 и 8085. Она содержит способы выполненияследующих операций:

*<span Times New Roman"">                  

 загрузка и сохранение регистров;

*<span Times New Roman"">                  

 запоминание данных в памяти;

*<span Times New Roman"">                  

 арифметические и логические операции;

*<span Times New Roman"">                  

 работа с разрядами;

*<span Times New Roman"">                  

 проверка разрядов;

*<span Times New Roman"">                  

 проверка на определенные значения;

*<span Times New Roman"">                  

 числовые сравнения;

*<span Times New Roman"">                  

 организация циклов (повторяющихсяпоследовательностей операций);

*<span Times New Roman"">                  

 обработка массивов;

*<span Times New Roman"">                  

 поиск в таблице;

*<span Times New Roman"">                  

 работа с символами;

*<span Times New Roman"">                  

 преобразование кодов;

*<span Times New Roman"">                  

 арифметические операции повышенной точности;

*<span Times New Roman"">                  

 умножение и деление;

*<span Times New Roman"">                  

 обработка списков;

*<span Times New Roman"">                  

 обработка структур данных.

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

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

<span Times New Roman"">    

L. Таким образом, команда ADD M, например, означает: прибавить к аккумуляторусодержимое байта памяти, адресуемого через регистры H и L.

<span Times New Roman"">    

 Аккумулятор ирегистры Н и L являютсяспециальными регистрами. Они являются единственными регистрами, которые могутбыть прямо загружены или записаны в память. Аккумулятор является единственнымрегистром, который может быть инвертирован, сдвинут, косвенно загружен сиспользованием адреса в паре регистров В или D, косвенно записан в память по адресу, содержащемуся в паререгистров В или D, илииспользован в командах IN и ОUT. Регистры Н и L составляют единственную пару, котораяможет быть использована косвенно в арифметических командах, при записи в памятьданных, заданных непосредственно в команде, или при загрузке и записи в памятьдругих регистров, отличных от аккумулятора. Регистры Н и L  являются также единственной парой, которая можетбыть передана в счетчик команд или указатель стека. Более того, эти регистрыиспользуются как аккумулятор двойной длины при сложении 16-разрядных чисел(команда DAD). Регистры D и Е являются в некотором смысле такжеспециальными, поскольку одной командой (XCHG) можно поменять ихсодержимое с содержимым регистров Н и L. Таким образом, регистры в 8080 и 8085 весьма асимметричны,и  программист должен аккуратно выбирать,для каких данных и адресов какими регистрами пользоваться.

<span Times New Roman"">    

 Часто для однихи тех же физических регистров используются несколько имен. Для многих команд A,B,C,D,E,H и L являются 8-разряднымирегистрами. Для других команд регистры В и С (В- старший по значению),D и Е (D — старший по значению) или Н и L (Н- старший по значению)являются 16-разрядной парой регистров. Термины пара регистров В, регистры В и Си пара регистров ВС имеют одно и тоже значение; подобные же варианты существуютдля регистров D и Е и H и L. Заметим, что пара регистров и дваодиночных регистра физически одно и то же, и они не могут служить одновременнодля различных целей. Регистры Н и L  фактически почти всегдаприменяют для косвенного адреса из-за наличия команд, имеющих доступ к региструМ, и таких специальных команд, как SPHL, PCHL,XTHL и XTHG. Благодаря тому, что существуеткоманда XCHG, для второго адреса берутрегистры D и Е, а не Ви С. Регистры В и С используют обычно как отдельные 8-разрядные регистры длявременного хранения данных.

<span Times New Roman"">    

 Воздействиеразличных команд на флаги весьма непоследовательно. К некоторым особеннонеобычным действиям относятся следующие:

a)<span Times New Roman""> 

 логические команды очищают флаг переноса;

b)<span Times New Roman"">

 команды сдвига не действуют на другие флаги,кроме флага переноса;

c)<span Times New Roman""> 

 команды загрузки, записи, пересылки,увеличивают на 1 пары регистров и уменьшают на 1 пары регистров вообще неоказывают влияния на флаги;

d)<span Times New Roman"">

 16-разрядное сложение действует только на флагпереноса.

5.<span Times New Roman""> 

L. Действительная косвеннаяадресация, таким образом, является двухшаговым процессом. При желании загрузитьили записать в память аккумулятор можно также загрузить косвенный адрес врегистры В и С или D иЕ. Отсутствие индексной адресации компенсируется добавлением пары регистров спомощью команды DAD. Эта команда добавляет парурегистров к Н и L.Таким образом, индексация требует нескольких шагов:

a)<span Times New Roman""> 

b)<span Times New Roman"">

 загрузить базовый адрес в другую пару (однойиз пар регистров должны быть Н и L), в) используя команду DAD, сложить две пары иг) использовать сумму как косвенный адрес (при помощи обращения к регистру М).Индексация в 8080 и 8085 — долгий и неудобный процесс.

5.<span Times New Roman""> 

6.<span Times New Roman""> 

 SUB AилиXRA A), логический сдвиг аккумулятора влево (спомощью ADD A), очистка флага переноса (ANA AилиORA A) и проверка аккумулятора (ANA Aили ORA A).Команда ANA Aи ORA A очищают флагпереноса и устанавливают остальные флаги в соответствии с содержимымаккумулятора. Причем загрузка регистра не действует на флаги.

7.<span Times New Roman""> 

PCHL, по которой загружаетсясчетчик команд из регистров Н и Lи, таким образом, производится косвенный переход.

8.<span Times New Roman""> 

DCRиINR применяются к 8-разрядным регистрам и действуют на всефлаги, за исключением флага переноса. Команды DCXи INXприменяются к 16-различнымпарам регистров и вообще не действуют на флаги. Можно использовать 16-разрядныепары регистров как обыкновенные счетчики, но единственным способом проверки парына 0 является использование команды логическое ИЛИ к двум регистрам вместе саккумулятором.

9.<span Times New Roman""> 

RRC, RLC,RARи RAL) и команд сложения (ADD A, ADC Aи DAD H). Флаг переноса может бытьустановлен с помощью STC, а очищен с помощью ANA A(илиORA A).

10.MOV ( пересылкасодержимого в другой регистр или из другого регистра), MVI(загрузка непосредственногооперанда), DCR (уменьшает на 1) и INR (увеличение на 1). Эти команды могут оперировать также срегистром М, т.е. байтом из памяти, адресуемым через регистры Н и L.

11.PSW), которое содержит аккумулятор(старший байт) и флаги (младший байт). Команды CALLи RETURNпередают адреса в стек или из него.

12.

13.

·<span Times New Roman"">    

 Призаписи всех 16-разрядных адресов младший байт записывается первым (т.е. поменьшему адресу). Порядок байтов в адресах тот же, что и в микропроцессоре Z80 и 6502, но является обратнымпорядком байтов, принятому в микропроцессорах 6800 и 6809.

·<span Times New Roman"">    

 Указательстека содержит младший адрес, действительно занятый в стеке. Это соглашениетакже принято в микропроцессорах Z80 и 6809, но явно противоположно принятому 6502 и 6800(следующий доступный адрес). Согласно всем командам 8080 и 8085 данные в стекзаписываются с предварительным уменьшением на 1 (вычитанием перед записью байта1 из указателя стека) и загружаются из стека с последующим увеличением на 1(добавлением после загрузки байта 1 к указателю стека).

·<span Times New Roman"">    

 Флагразрешения прерываний (только в 8085), равный 1, разрешает прерывания, а 0 — запрещает их. Такое же соглашение принято и в Z80, но оно обратно принятому в 6502,6800 и 6809.

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

ЗАГРУЗКА РЕГИСТРОВ ИЗ ПАМЯТИ

В микропроцессорах 8080 и 8085 предусмотрены четыре способа адресации,которыми можно пользоваться при загрузке регистров из памяти: прямая (из памятис конкретным адресом), непосредственная (с конкретным значением), косвенная (изадреса, помещенного в паре регистров) и стековая ( из вершины стека).

ЗАПОМИНАНИЕ РЕГИСТРОВ В ПАМЯТИ

 Для запоминания регистров в памятисуществуют три способа адресации: прямая (в память с конкретным адресом),косвенная (в память с адресом, который находится в паре регистров) и стековая(в вершину стека).

ЗАПОМИНАНИЕДАННЫХ В ОЗУ

Начальные значения ячеек ОЗУ задаются либо через аккумулятор, либо прямоили косвенно с использованием регистров Н и L.

АРИФМЕТИЧЕСКИЕ ИЛОГИЧЕСКИЕ ОПЕРАЦИИ

Для большинства арифметических и логических операций(сложение, вычитание, логическое И, логическое ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ исравнение) одним из операндов является аккумулятор, а вторым 8-разрядный регистрили байт данных, заданный непосредственно в команде. Результат (если онсуществует) помещается в аккумулятор. Если используется регистр М, то процессорполучает операнд из памяти по адресу, который содержится в регистрах Н и L.

РАБОТА С РАЗРЯДАМИ

Программист может установить, очистить, получить обратныйкод (дополнение к 1) или проверить разряды, используя логические операции ссоответствующими масками. Команды сдвига и получение обратного кода могут оперироватьтолько с аккумулятором, но в то же время для выполнения небольшого числасдвигов могут использоваться арифметические и логические команды. Возможны следующиеоперации с отдельными разрядами аккумулятора:

·<span Times New Roman"">    

·<span Times New Roman"">    

·<span Times New Roman"">    

·<span Times New Roman"">    

ПРИНЯТИЕРЕШЕНИЙ

Процедурыпринятия решений могут быть классифицированы следующим образом

·<span Times New Roman"">    

·<span Times New Roman"">    

·<span Times New Roman"">    

Наличие процедур первого класса позволяет процессору реагировать назначения флагов, переключателей, линии состояния или других двоичных (включено-выключено) сигналов. Наличие процедур второго класса позволяет процессоруопределить, имеет ли вводимая величина или результат определенное значение(например, введен ли определенный символ команды или терминатор, или равен лирезультат нулю). Наличие процедур третьего класса позволяет процессоруопределить, превышает ли значение некоторый числовой порог или ниже его(например, правильное или ошибочное значение, выше или ниже предупредительногоуровня или заданной точки).

ОРГАНИЗАЦИЯ ЦИКЛОВ

Самый простой способ выполнения цикла (т.е. повторения последовательностикоманд) в микропроцессоре 8080 или 8085 состоит в следующем:

1.<span Times New Roman""> 

2.<span Times New Roman""> 

3.<span Times New Roman""> 

4.<span Times New Roman""> 

еще рефераты
Еще работы по программированию, базе данных