Читаем Искусство схемотехники. Том 2 (Изд.4-е) полностью

Четыре из них (A-D) могут быть использованы как в виде единых 16-разрядных регистров (АХ, где X означает extended — расширенный), так и в виде пар байтовых регистров [АН, AL, соответственно означает старший (high) байт регистра АХ, a AL- младший (low) байт]. Регистры ВХ и ВР, так же как и SI, DI, могут содержать адреса и предназначены для использования при адресации (см. ниже). Специальные циклические команды (которые мы исключили из нашего краткого перечня) используют регистр С, а команды умножения/деления и ввода-вывода используют регистры А и D.

Данные, используемые в командах, могут представлять собой константу, величину, содержащуюся в регистре или величину, содержащуюся в памяти. Константы вы указываете, просто записывая их, а регистры - по именам, так, как было показано выше. Для адресации памяти МП Intel 8086 обеспечивает 6 режимов адресации, три из которых пояснены схемами на рис. 10.3.



Рис. 10.3.Некоторые способы адресации.


Вы можете прямо указать имя переменной, в этом случае ее адрес при ассемблировании будет определяться парой байтов, следующих сразу же за командой; вы можете занести адрес переменной в один из регистров, используемых для адресации (ВХ, ВР, SI или DI), а затем выполнить команду, в которой предусмотрена косвенная адресация через соответствующий регистр; можно модифицировать последний режим адресации и получать адрес переменной, прибавляя константу смещения к содержимому регистра, используемого для адресации. Косвенный режим быстрее (в предположении, что адрес уже загружен в соответствующий регистр) и является гораздо более приемлемым, если вы хотите выполнять некоторые операции над множеством чисел (строкой или массивом).

Вот несколько примеров адресации:

MOV count,100Н (прямая, непосредственная)

MOV [ВХ],100Н (косвенная, непосредственная)

MOV [ВХ + 1000Н], (адресация по базе, регистр)

АХ

В двух последних командах предполагается, что мы уже загрузили адрес в ВХ. Последняя команда копирует содержимое АХ в ячейку памяти, смещенную на 4 К (1000-ричное) выше от ячейки, на которую указывает ВХ; ниже мы вкратце рассмотрим пример, иллюстрирующий, как можно использовать эту команду для копирования массива.

При адресации памяти для МП 8086 существует сложность другого рода, которую мы было «замели под ковер»: адрес, формируемый в любом из вышеуказанных режимов адресации, не является окончательным, действительным адресом, поскольку получаемый таким образом адрес имеет только 16 разрядов (и может адресовать только 64 Кбайт памяти). На самом деле то, что вычисляется по указанным выше правилам, называется смещением. Для того чтобы получить действительный, физический адрес, вы должны прибавить к смещению 20-разрядную базовую величину, получаемую сдвигом на 4 разряда влево содержимого 16-разрядного сегментного регистра (таких регистров имеется 4). Другими словами, МП 8086 позволяет вам обращаться к областям памяти по 64 Кбайт; положение этих «сегментов» внутри полного адресного пространства 1 Мбайт, что в свою очередь определяется содержимым сегментных регистров. Использование 16-разрядной адресации в МП 8086 по большому счету было большой ошибкой, унаследованной от ранних поколений.

Более современные МП (начиная с 80386, а также серии 68000) сделаны как надо во всех отношениях, с 32-разрядной адресацией. Для того чтобы не усложнять наши примеры, мы просто игнорируем сегменты вообще; на практике вы, конечно, должны будете о них побеспокоиться.

Обзор набора команд (продолжение). Рассмотрим теперь команды управления стеком PUSH и POP. Стек — это часть памяти, организованная специальным образом: когда вы заносите некоторое значение в стек (выполняя операцию push), это значение заносится в очередную доступную ячейку (вершину стека); а когда вы извлекаете значение из стека (выполняя операцию POP), оно выбирается из вершины стека, т. е. выбирается то, что было занесено в стек последним. Таким образом, стек — это последовательный набор данных, организованный по принципу: последним пришел-первым вышел. Вам, может быть, будет легче освоить это понятие, если вы представите себе монетную кассу водителя автобуса или стопку подносов в столовой.

Рис. 10.4 показывает, как работает стек. Стек располагается в обычном ОЗУ, а указатель стека (регистр SP) ЦП обеспечивает возможность доступа к той ячейке памяти, которая является «вершиной» в данный момент времени. Для МП 8086 стек состоит из 16-разрядных слов и по мере занесения в него данных «растет» вниз в ОЗУ. Содержимое регистра SP автоматически декрементируется на 2 перед каждой операцией PUSH и инкрементируется на 2 после каждой операции POP. Таким образом, например, 16-разрядное содержимое регистра АХ копируется в вершину стека командой PUSH АХ; SP указывает на последний занесенный байт. Команда POP выполняется в обратном порядке, как показано на рис. 10.4.



Рис. 10.4.Операции со стеком.


Перейти на страницу:

Похожие книги

Помпеи и Геркуланум
Помпеи и Геркуланум

Трагической участи Помпей и Геркуланума посвящено немало литературных произведений. Трудно представить себе человека, не почерпнувшего хотя бы кратких сведений о древних италийских городах, погибших во время извержения Везувия летом 79 года. Катастрофа разделила их историю на два этапа, последний из которых, в частности раскопки и создание музея под открытым небом, представлен почти во всех уже известных изданиях. Данная книга также познакомит читателя с разрушенными городами, но уделив гораздо большее внимание живым. Картины из жизни Помпей и Геркуланума воссозданы на основе исторических сочинений Плиния Старшего, Плиния Младшего, Цицерона, Тита Ливия, Тацита, Страбона, стихотворной классики, Марциала, Ювенала, Овидия, великолепной сатиры Петрония. Ссылки на работы русских исследователей В. Классовского и А. Левшина, побывавших в Южной Италии в начале XIX века, проиллюстрированы их планами и рисунками.

Елена Николаевна Грицак

Искусство и Дизайн / Скульптура и архитектура / История / Прочее / Техника / Архитектура
Как проектировать электронные схемы
Как проектировать электронные схемы

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

Клод Галле

Техника / Радиоэлектроника / Технические науки / Образование и наука