Чарльз Петцольд - Код. Тайный язык информатики

Тут можно читать онлайн Чарльз Петцольд - Код. Тайный язык информатики - бесплатно ознакомительный отрывок. Жанр: Прочая научная литература, издательство Манн, Иванов и Фербер, год 2019. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Чарльз Петцольд - Код. Тайный язык информатики краткое содержание

Код. Тайный язык информатики - описание и краткое содержание, автор Чарльз Петцольд, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Книга «Код» представляет собой увлекательное путешествие в прошлое – мир электрических устройств и телеграфных машин. Знакомство с прообразами первых компьютеров позволит читателю с любым уровнем технической подготовки узнать о том, как работают современные электронные устройства.

Код. Тайный язык информатики - читать онлайн бесплатно ознакомительный отрывок

Код. Тайный язык информатики - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Чарльз Петцольд
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Для команды процессора 8080 под названием MOV (Move — переместить) предусмотрено 63 кода. Эти коды занимают только один байт и, как правило, перемещают содержимое одного регистра в другой или в тот же самый. Множество команд MOV — следствие использования в микропроцессоре семи регистров (включая аккумулятор).

Вот первые 32 команды MOV. Помните, что место назначения соответствует аргументу слева, а источник — аргументу справа.

Код

Команда

Код

Команда

40

MOV B, B

50

MOV D, B

41

MOV B, C

51

MOV D, C

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]

Упомянутая выше команда LDA перемещает байт из памяти в аккумулятор; 16-битный адрес этого байта следует непосредственно за кодом команды LDA. Эта команда MOV перемещает байт из памяти в регистр B. Однако адрес байта, который должен быть загружен в регистр, хранится в паре регистров HL. Как 16-битный адрес оказался в паре регистров HL? Это могло произойти разными способами. Возможно, этот адрес был каким-то образом вычислен.

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

LDA A,[aaaa]

MOV B,[HL]

Второй набор из 32 команд MOV показывает, что ячейки памяти, адресуемые парой регистров 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 — рассмотрение битового шаблона их кода. Код команды MOV состоит из восьми битов:

01ннниии,

где буквы ннн соответствуют 3-битному коду места назначения, а иии — 3-битному коду источника. Эти 3-битные коды обозначают следующие регистры.

000 = регистр B

001 = регистр C

010 = регистр D

011 = регистр E

100 = регистр H

101 = регистр L

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

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

Команда MOV L, E соответствует коду 01101011, или 6Bh. Вы можете свериться с предыдущей таблицей, чтобы убедиться в этом.

Вероятно, где-то внутри процессора 8080 три бита иии используются в селекторе «8 на 1», а три бита ннн управляют дешифратором «3 на 8», определяющим регистр, где будет зафиксировано значение.

Регистры B и C также можно использовать как 16-битную пару регистров BC, а регистры D и E — как 16-битную пару регистров DE. Если в любой из этих пар регистров содержится адрес ячейки памяти, откуда вы хотите считать или куда хотите записать байт, можете использовать следующие команды.

Код

Команда

Код

Команда

02

STAX [BC], A

0A

LDAX A,[BC]

12

STAX [DE], A

1A

LDAX A,[DE]

Другой тип команды Move называется Move Immediate («Переместить непосредственно») и обозначается мнемокодом MVI. Эта команда состоит из двух байтов. Первый — код команды, второй — байт данных. Этот байт перемещается из памяти в один из регистров или в ячейку памяти, адрес которой содержится в паре регистров HL.

Код

Команда

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

Например, после выполнения команды MVI E,37h в регистре E будет содержаться байт 37h. Этот третий метод обращения к памяти называется непосредственной адресацией .

Набор из 32 кодов команд выполняет четыре основные арифметические операции, с которыми мы познакомились, когда собирали процессор (глава 17). К ним относятся сложение (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

8B

ADC A, E

9B

SBB A, E

8C

ADC A, H

9C

SBB A, H

8D

ADC A, L

9D

SBB A, L

8E

ADC A,[HL]

9E

SBB A,[HL]

8F

ADC A, A

9F

SBB A, A

Предположим, что в аккумуляторе А содержится байт 35h, а в регистре B — байт 22h. После выполнения команды SUB A, B в аккумуляторе будет содержаться байт 13h.

Если в A содержится байт 35h, в регистре H — 10h, в регистре L — 7Ch, в ячейке памяти 107Ch — 4Ah, то при выполнении команды ADD A,[HL] байт в аккумуляторе (35h) прибавляется к байту в ячейке, к которой обращается пара регистров HL (4Ah), а результат (7Fh) сохраняется в аккумуляторе.

Команды ADC и SBB позволяют процессору 8080 складывать и вычитать 16-, 24-, 32-битные числа, а также числа большей разрядности. Предположим, что пары регистров BC и DE содержат 16-битные числа. Вы хотите сложить их и поместить результат в пару регистров BC. Это можно сделать так.

MOV A, C ; младший байт

ADD A, E

MOV C, A

MOV A, B ; старший байт

ADC A, D

MOV B, A

Для сложения используются две команды: ADD — для младшего байта, ADC — для старшего. Любой бит переноса, возникающий в результате первого сложения, участвует во втором сложении. Поскольку прибавлять можно только к значению в аккумуляторе, в этом небольшом фрагменте кода команда MOV используется не менее четырех раз. Команды MOV очень часто встречаются в программном коде для процессора 8080.

Пришло время поговорить о флагах микросхемы 8080. В процессоре из главы 17 использовались флаг переноса и флаг нуля. Микросхема 8080 предусматривает еще три флага: знака, четности и вспомогательного переноса. Все флаги хранятся в 8-битном регистре, который называется словом состояния программы (Program Status Word, PSW). Такие команды, как LDA, STA или MOV, не влияют на эти флаги. Однако команды ADD, SUB, ADC и SBB изменяют флаги следующим образом:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


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

Чарльз Петцольд - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Код. Тайный язык информатики отзывы


Отзывы читателей о книге Код. Тайный язык информатики, автор: Чарльз Петцольд. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
Bestplay Smit
11 января 2025 в 19:53
Книга просто очень классная. Я когда вырасту хочу стать этичным хакером. И сейчас мне 9 лет. Но я уже могу создавать красивые сайты. Так что я твёрдо иду к своей цели и не сдаюсь!
x