Москва 2001 г тайный язык информатики Чарльз Петцольд ббк 32. 973. 26–018



Pdf көрінісі
бет16/26
Дата07.04.2020
өлшемі3,29 Mb.
#61783
1   ...   12   13   14   15   16   17   18   19   ...   26
Байланысты:
Petcold Kod-Taynyy-yazyk-informatiki.535358

Глава 19

Два классических

микропроцессора

Микропроцессор, т. е. центральное процессорное устройство,

все компоненты которого объединены в одной микросхеме,

появился в 1971 г. Начало было весьма скромным. В первом

микропроцессоре — микросхеме 4004 фирмы Intel — содер-

жалось всего 2 300 транзисторов. Три десятилетия спустя даже

микропроцессоры для домашних компьютеров приблизились

к отметке 10 000 000 транзисторов.

Однако суть действия микропроцессора в основе своей оста-

лась неизменной. Разумеется, миллионы дополнительных

транзисторов решают очень важные задачи, но в постижении

смысла работы микропроцессора они не только не помогают,

но и мешают. Понять, как работает микропроцессор, проще

всего на его первых серьезных моделях.

А родились они в 1974 г.: в апреле фирма Intel объявила о

выпуске микросхемы 8080, а в августе появилась микросхема

6800 фирмы Motorola, которая с 1950 г. занималась изготовле-

нием полупроводниковых и транзисторных приборов. Кста-

ти, этими процессорами в 1974 г. дело не ограничилось: тогда

же появились 4-разрядный процессор TMS 1000 фирмы Texas

Instruments, который часто применялся в калькуляторах, игру-

шках и бытовых приборах, и первый 16-разрядный процес-

сор PACE фирмы National Semiconductor. Но с точки зрения


322

Глава девятнадцатая

истории вычислительной техники самыми важными оказались

микропроцессоры 8080 и 6800.

Поначалу процессор 8080 стоил 360 долларов — ничтожная

сумма по сравнению с многомиллионной стоимостью мэйн-

фреймов System/360 фирмы IBM, которыми пользовались

крупные корпорации. И хотя процессор 8080 ни в коей мере

нельзя сравнивать с System/360, уже через несколько лет IBM

обратила на эти крохотные микросхемы самое пристальное

внимание.

8-разрядный процессор 8080 содержит 6 000 транзисторов,

работает с тактовой частотой 2 МГц и способен адресовать 64

кб памяти. Процессор 6800 содержит около 4 000 транзисто-

ров и также способен адресовать 64 кб памяти. Первые микро-

схемы 6800 работали с тактовой частотой 1 Мгц, но в 1977 г.

фирма Motorola выпустила обновленные модели, работавшие

на частотах 1,5 и 2 МГц.

Микросхемы 8080 и 6800 называют  однокристальными

(single-chip) процессорами или, менее точно, однокристальны-

ми компьютерами. На самом деле, конечно же, микропроцес-

сор — это лишь часть компьютера. Кроме него, компьютеру

по меньшей мере нужно некоторое количество оперативной

памяти, некий способ ввода информации в компьютер (уст-

ройство ввода), некий способ извлечь информацию из компь-

ютера (устройство вывода) и еще несколько микросхем, кото-

рые связывали бы все это в единое целое. Подробнее я опишу

эти компоненты в главе 21.

Для начала посмотрим на сам микропроцессор. Часто его

описание сопровождают блок-схемой, на которой показаны

компоненты процессора и способ их соединения. Но я думаю,

что вам этого хватило и в главе 17. Сейчас мы попытаемся по-

нять, что делается внутри процессора, рассмотрев, как он со-

общается с внешним миром. Иначе говоря, будем считать про-

цессор «черным ящиком», для понимания работы которого

нам нет нужды детально вникать в его внутреннее устройство.

Достаточно познакомиться с входными и выходными сигна-

лами процессора, а также с его набором команд.

Как 8080, так и 6800 размещались в интегральных микро-

схемах с 40 выводами. Размеры их чаще всего были таковы:

около 5 см в длину, около 1,5 см в ширину и около 3 мм в вы-

соту.


323

Два классических микропроцессора

Это, конечно, размеры корпуса. Кремниевая пластина внутри

него гораздо меньше — в первых 8-разрядных процессорах она

представляла собой квадрат со стороной около 6 мм. Корпус

нужен для защиты микросхемы и для обеспечения доступа к

его каналам ввода и вывода. Назначение каждого из 40 выво-

дов микропроцессора 8080 таково:

HLDA


1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

17

18



19

20

40



39

38

37



36

35

34



33

32

31



30

29

28



27

26

25



24

23

22



21

0

1



READY

WAIT


A

0

A



1

A

2



+12 В

A

3



A

4

A



5

A

6



A

7

A



8

A

15



A

12

A



14

A

11



+5 В

SYNC


DBIN

INTE


0

2

INT



HOLD

RESET


–5 В

D

0



D

1

D



2

D

3



D

7

D



6

D

5



D

4

GND



A

10

Intel



8080

A

9



A

13

WR



Любому электрическому или электронному устройству не-

обходимо электропитание. Одна из странностей процессора 8080

в том, что ему нужны три различных напряжения. Контакт 20

должен подключаться к напряжению 5 В, контакт 11 — к напря-



324

Глава девятнадцатая

жению –5 В, а контакт 28 — к 12 В. Контакт 2 подключается к

земле. В 1976 г. Intel выпустила процессор 8085, питание кото-

рого осуществлялось несколько проще.

Все остальные контакты представлены в виде стрелок.

Стрелка, направленная от микросхемы, символизирует выход-



ной  сигнал. Он генерируется процессором и передается для

обработки в другие устройства компьютера. Стрелка, направ-

ленная к микросхеме, символизирует входной сигнал. Он гене-

рируется другими микросхемами компьютера и обрабатыва-

ется процессором. Некоторые контакты работают как на вход,

так и на выход.

Процессору из главы 17 для работы требовалось синхро-

низирующее устройство. Процессору 8080 нужно два синхро-

низирующих сигнала, отмеченных на схеме 

 и подводи-

мых к контактам 22 и 15. Для генерации этих сигналов удоб-

нее всего использовать другую микросхему Intel — генератор

тактовых импульсов 8224. К нему достаточно подключить кри-

сталл кварца с частотой 18 МГц, и генератор сделает все ос-

тальное.


Для адресации памяти у любого процессора есть несколь-

ко выходных сигналов. Их количество и определяет объем па-

мяти, к которой способен обращаться процессор. У 8080 кон-

тактов для обращения к памяти 16 (они обозначены символа-

ми от A

0

 до A



15

), а значит, он может адресовать 2

16

 = 65 536 байт



памяти.

Процессор 8080 является 8-разрядным, т. е. за раз он спо-

собен прочитать из памяти или записать в память 8 битов дан-

ных. Обмен данными с памятью происходит через контакты с

D

0

 по D



7

. На вход и на выход работают только эти 8 контактов.

При чтении байта из памяти они работают на вход; при запи-

си байта в память — на выход.

Еще 10 контактов процессора отведены под управляющие

сигналы. Входной сигнал RESET, например, используется для

сброса процессора. Наличие выходного сигнала WR означает,

что процессор должен записать байт данных в память (этот

сигнал соответствует входному сигналу W памяти). Кроме

того, иногда управляющие сигналы подаются на контакты с

D

0



 по D

7

, когда процессор считывает из памяти команду. В ком-



пьютерах, построенных на основе 8080, для работы с этими

сигналами обычно используется системный контроллер 8228.



325

Два классических микропроцессора

Некоторые управляющие сигналы 8080 я опишу позже, в це-

лом же имейте в виду, что они прославились своей запутанно-

стью, поэтому не занимайтесь самоистязанием и приступайте

к их изучению, только если твердо решили собрать компью-

тер на основе этого процессора.

Допустим, что процессор 8080 соединен с 64 кб оператив-

ной памяти, причем у нас есть возможность обмениваться с

этой памятью данными независимо от процессора.

После сброса процессор 8080 считывает из памяти байт,

расположенный по адресу 0000h, подавая 16 нулей на адрес-

ные контакты с A

0

 по A


15

. Считываемый байт должен содер-

жать команду процессора 8080, а сам процесс считывания это-

го байта называется выборкой команды (instruction fetch).

В компьютере из главы 17 все команды (кроме Остановить)

занимали по 3 байта — код операции и двухбайтовый адрес. В

процессоре 8080 команды бывают длиной в 1, 2 и 3 байта. Не-

которые команды указывают процессору прочитать байт из

определенной ячейки памяти, другие — записать байт в опре-

деленную ячейку памяти, третьи — произвести какие-то внут-

ренние операции, не обращаясь к оперативной памяти. Вы-

полнив первую команду, процессор считывает из памяти сле-

дующую и т. д. Взятые вместе, эти команды представляют со-

бой компьютерную программу, цель которой — заставить

процессор что-то сделать.

Когда процессор 8080 работает с максимальной частотой

2 МГц, тактовый цикл длится 500 нс (разделив 1 на 2 000 000

секунд, получаем 0,000000500 с). Все команды компьютера из

главы 17 занимали по 4 тактовых цикла. Команды из набора

8080 длятся от 4 до 18 тактовых циклов. Это значит, что на

выполнение одной команды затрачивается от 2 до 9 микросе-

кунд (миллионных долей секунды).

Вероятно, лучший способ понять, на что способен данный

процессор, состоит в систематическом и полном изучении его

набора команд.

Набор компьютера из главы 17 в его окончательном вари-

анте содержал 12 команд. Набор 8-разрядного процессора мо-

жет состоять из 256 команд, если каждому 8-битовому значе-

нию соответствует код операции (число команд можно увели-

чить, приписав некоторым из них 2-байтовые коды). Процес-

сор 8080 так далеко не заходит — у него 244 команды. Число


326

Глава девятнадцатая

немаленькое, но, по правде говоря, по способностям 8080 не

так уж сильно превосходит компьютер из главы 17. Напри-

мер, чтобы умножить или разделить два числа, вам и в 8080

придется писать собственную небольшую программу.

Как вы помните из главы 17, код команды из набора про-

цессора обычно связывается с мнемонической комбинацией

символов, причем некоторые из этих кодов обладают аргумен-

тами. Единственное назначение мнемокодов — облегчить че-

ловеку работу с командами. Процессор понимает только код

команды; о связанном с ним тексте ему ничего не известно.

Кстати, для простоты я излагаю мнемокоды из документации

к процессору 8080 с некоторой вольностью.

У компьютера из главы 17 есть две важные команды, кото-

рые мы поначалу назвали Загрузить и Сохранить. Каждая из

них занимает 3 байта памяти. Первый байт команды Загру-

зить отведен под ее код, а оставшиеся два указывают 8-бито-

вый адрес. Содержимое ячейки с этим адресом процессор за-

гружает в аккумулятор. Аналогично команда Сохранить запи-

сывает содержимое аккумулятора в ячейку, адрес которой ука-

зан в команде.

Позже мы обнаружили, что для сокращения записи эти

команды удобно представить в виде мнемокодов:

LOD A,[aaaa]

STO [aaaa],A

где А означает аккумулятор (место размещения информации

для команды Загрузить и ее источник для команды Сохранить),

а aaaa — 16-битовый адрес ячейки памяти, обычно записыва-

емый в виде 4 шестнадцатеричных цифр.

8-разрядный аккумулятор в 8080 обозначается А, как и в ком-

пьютере из главы 17. Есть в наборе 8080 и команды, аналогичные

Загрузить и Сохранить. Коды двух этих команд в 8080 равны 3Ah

и 32h (причем, за каждым кодом идет 16-битовый адрес), а мне-

мокоды — STA (Store Accumulator, сохранить из аккумулятора) и

LDA (Load Accumulator, загрузить в аккумулятор).

Код

Команда

32

STA [aaaa],A



3A

LDA A,[aaaa]



327

Два классических микропроцессора

Кроме аккумулятора в процессоре 8080 имеется 6 регист-



ров (registers), в которых также могут храниться 8-битовые зна-

чения. Регистры очень похожи на аккумулятор. Фактически

аккумулятор — это регистр особого типа. Подобно аккумуля-

тору, регистры являются защелками; процессор может пере-

мещать данные из памяти в регистры и из регистров в память.

Однако регистры не столь гибки, как аккумулятор. При сло-

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

аккумулятор, а не в один из регистров.

6 регистров 8080 называются B, C, D, E, H и L. Первый воп-

рос о них обычно звучит так: «А что случилось с F и G?», — а

второй: «Куда девались I, J и K?» Ответ в том, что регистры H и

L получили свои имена не в честь букв алфавита. H означает

«high», а L — «low». Очень часто 8-битовые значения в регист-

рах H и L рассматриваются совместно, как 16-битовая пара ре-



гистров HL, при этом в H хранится старший (high) байт, а в L —

младший (low) байт. Полное 16-разрядное значение часто ис-

пользуется как адрес в памяти, в чем мы убедимся чуть позже.

Насколько нужны регистры и как мы обошлись без них в

компьютере из главы 17? Теоретически без них можно обой-

тись, но работать, имея под рукой регистры, удобнее. Многие

компьютерные программы оперируют одновременно несколь-

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

все числа хранятся не в памяти, а в регистрах микропроцессора.

Да и работает программа быстрее: чем реже она обращается к

памяти, тем меньше времени затрачивается на ее выполнение.

Целых 63 кода отведено в 8080 командам MOV (Move, пе-

реместить). Занимают команды из этой группы единственный

байт и обычно перемещают содержимое одного регистра в

другой (или тот же самый). Большое количество команд MOV

— закономерное следствие наличия в микропроцессоре 7 ре-

гистров (считая аккумулятор).

Вот как выглядят первые 32 кода операции команды MOV.

Помните, что целевой регистр указан в левом аргументе, а ре-

гистр-источник — в правом аргументе.



Код

Команда

Код

Команда

40

MOV B,B



50

MOV D,B


41

MOV B,C


51

MOV D,C


328

Глава девятнадцатая

Код

Команда

Код

Команда

42

MOV B,D



52

MOV D,D


43

MOV B,E


53

MOV D,E


44

MOV B,H


54

MOV D,H


45

MOV B,L


55

MOV D,L


46

MOV B,[HL]

56

MOV D,[HL]



47

MOV B,A


57

MOV D,A


48

MOV C,B


58

MOV E,B


49

MOV C,C


59

MOV E,C


4A

MOV C,D


5A

MOV E,D


4B

MOV C,E


5B

MOV E,E


4C

MOV C,H


5C

MOV E,H


4D

MOV C,L


5D

MOV E,L


4E

MOV C,[HL]

5E

MOV E,[HL]



4F

MOV C,A


5F

MOV E,A


Очень удобные инструкции! Как только значение попало в

один из регистров, вы можете легко переместить его в другой

регистр. Обратите внимание на четыре инструкции, в кото-

рых используется пара регистров HL, например:

MOV B,[HL]

Эта инструкция переносит в регистр В байт из ячейки памяти,

адрес которой записан в паре регистров HL. Этим она отлича-

ется от инструкции LDA, загружающей в аккумулятор содер-

жимое ячейки, адрес которой следует сразу за кодом команды.

Откуда берется адрес в регистрах HL? Он может попасть туда

даже несколькими способами. Например, его можно тем или

иным образом вычислить.

Словом, команды:

LDA A,[aaaa]

MOV B,[HL]

используются для передачи данных из памяти в процессор, но

при этом адрес ячейки памяти указывается в них по-разному.

(продолжение)



329

Два классических микропроцессора

Первый способ называется  прямой адресацией  (direct

addressing), второй — индексной адресацией (indexed addressing).

Следующая группа из 32 команд доказывает, что по адре-

су, хранящемуся в регистрах HL, данные не только считыва-

ются, но и записываются.



Код

Команда

Код

Команда

40

MOV B,B



50

MOV D,B


60

MOV H,B


70

MOV [HL],B

61

MOV H,C


71

MOV [HL],C

62

MOV H,D


72

MOV [HL],D

63

MOV H,E


73

MOV [HL],E

64

MOV H,H


74

MOV [HL],H

65

MOV H,L


75

MOV [HL],L

66

MOV H,[HL]



76

HLT


67

MOV H,A


77

MOV [HL],A

68

MOV L,B


78

MOV A,B


69

MOV L,C


79

MOV A,C


6A

MOV L,D


7A

MOV A,D


6B

MOV L,E


7B

MOV A,E


6C

MOV L,H


7C

MOV A,H


6D

MOV L,L


7D

MOV A,L


6E

MOV L,[HL]

7E

MOV A,[HL]



6F

MOV L,A


7F

MOV A,A


Некоторые из этих команд, например:

MOV A,A


не делают ничего полезного, а команда:

MOV [HL],[HL]

и вовсе не существует. Код, который должен был бы принад-

лежать ей, отдан команде HLT (Halt, остановить).

Коды команды MOV становятся более наглядными, если

посмотреть на их двоичное представление:

01ццциии


330

Глава девятнадцатая

где буквами ццц обозначен целевой регистр, а буквами иии

— регистр-источник. Расшифровка этих трехбитовых кодов

такова.


000 = Регистр B

001 = Регистр C

010 = Регистр D

011 = Регистр E

100 = Регистр L

101 = Регистр L

110 = Ячейка памяти по адресу HL

111 = Аккумулятор

Например, команде:

MOV L,E


соответствует код операции:

01101011


или 6Bh. Если хотите, проверьте по таблице.

Вероятно, где-то внутри процессора 8080 три бита иии ис-

пользуются в селекторе «8 на 1», а три бита  ццц  управляют

дешифратором «3 на 8», который определяет в какой регистр

направить значение.

В качестве 16-битовых пар можно использовать регистры

B и C (BC) или D и E (DE). Если в одной из этих пар записан

адрес ячейки памяти, в которую нужно записать или из кото-

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

Код

Команда

Код

Команда

02

STAX [BC],A



0A

LDAX A,[BC]

12

STAX [DE],A



1A

LDAX A,[DE]

Еще одна разновидность команды MOV обозначается мне-

мокодом MVI (Move Immediate, переместить непосредствен-

но). Она состоит из 2 байтов: кода и байта данных. Этот байт

переносится в один из регистров или в ячейку памяти, адрес

которой записан в паре регистров HL.


331

Два классических микропроцессора

Код

Команда

06

MVI B,xx



0E

MVI C,xx


16

MVI D,xx


1E

MVI E,xx


26

MVI H,xx


2E

MVI L,xx


36

MVI [HL],xx

3E

MVI A,xx


Например, в результате выполнения команды

MOV E,37h

в регистр E записывается число 37h. Этот способ считается

третьим способом адресования к памяти и называется непос-



редственной адресацией (immediate addressing).

Для выполнения четырех основных арифметических дей-

ствий, знакомых нам по процессору, который мы разработа-

ли в главе 17, предназначена группа из 32 команд. Эти дей-

ствия — сложение (ADD), сложение с переносом (ADC), вы-

читание (SUB) и вычитание с заимствованием (SBB). Во всех

случаях один из операндов извлекается из аккумулятора; туда

же помещается результат.



Код

Команда

Код

Команда

80

ADD A,B



90

SUB A,B


81

ADD A,C


91

SUB A,C


82

ADD A,D


92

SUB A,D


83

ADD A,E


93

SUB A,E


84

ADD A,H


94

SUB A,H


85

ADD A,L


95

SUB A,L


86

ADD A,[HL]

96

SUB A,[HL]



87

ADD A,A


97

SUB A,A


88

ADC A,B


98

SBB A,B


89

ADC A,C


99

SBB A,C


8A

ADC A,D


9A

SBB A,D


332

Глава девятнадцатая

Код

Команда


Достарыңызбен бөлісу:
1   ...   12   13   14   15   16   17   18   19   ...   26




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет