Аналитический обзор книги Программирование на языке ассемблера для микропроцессоров 8080 и 8085 (46123)

Посмотреть архив целиком

ВВЕДЕНИЕ

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

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


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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Арифметические и логические операции разрешены только между аккумулятором и байтом непосредственных данных или между аккумулятором и регистром общего назначения. Однако один регистр общего назначения в действительности указывает на адрес в памяти; это регистр М, который в действительности обращается к адресу в памяти, содержащемуся в регистрах Н и L. Таким образом, команда ADD M, например, означает: прибавить к аккумулятору содержимое байта памяти, адресуемого через регистры H и L.

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

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

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

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

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

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

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

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

  1. загрузить индекс в пару регистров,

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


  1. Нет флага переполнения при получении дополнения до двух, так что надо определять такое переполнение программным путем. Из этого следует, что трудно работать с числами со знаком.

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


Случайные файлы

Файл
99572.rtf
59732.rtf
CBRR4338.DOC
128902.rtf
49033.rtf




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