Главная страница
Навигация по странице:

  • Шестнадцатерич- ный код Буква Бодо Шестнадцатерич- ный код Буква Бодо

  • Шестнадцатерич- ный код

  • кр гаряев. Чарльз Петцольд - Код_ тайный язык информатики-Манн, Иванов и Фе. Книга принадлежит Контакты владельца Культовая книга талантливого преподавателя стала для многих первым уверенным шагом в программировании


    Скачать 6.11 Mb.
    НазваниеКнига принадлежит Контакты владельца Культовая книга талантливого преподавателя стала для многих первым уверенным шагом в программировании
    Анкоркр гаряев
    Дата19.10.2022
    Размер6.11 Mb.
    Формат файлаpdf
    Имя файлаЧарльз Петцольд - Код_ тайный язык информатики-Манн, Иванов и Фе.pdf
    ТипКнига
    #743064
    страница21 из 28
    1   ...   17   18   19   20   21   22   23   24   ...   28
    Код
    Команда
    Значение
    20h
    BRA
    Переход
    22h
    BHI
    Переход, если больше
    23h
    BLS
    Переход, если меньше или равно
    24h
    BCC
    Переход, если переноса нет
    25h
    BCS
    Переход, если перенос есть
    26h
    BNE
    Переход, если не равно
    27h
    BEQ
    Переход, если равно
    28h
    BVC
    Переход, если нет переполнения
    29h
    BVS
    Переход, если есть переполнение
    2Ah
    BPL
    Переход, если плюс
    2Bh
    BMI
    Переход, если минус
    2Ch
    BGE
    Переход, если больше или равно 0 2Dh
    BLT
    Переход, если меньше 0 2Eh
    BGT
    Переход, если больше 0 2Fh
    BLE
    Переход, если меньше или равно 0
    В микросхеме 6800 не используется флаг четности, однако в отличие от 8080 в ней предусмотрен флаг переполнения. Некоторые из перечисленных команд перехода зависят от комбинаций флагов.
    Разумеется, наборы команд 8080 и 6800 различаются. Эти два процессора были спроектированы примерно в одно и то же время двумя разными группами инженеров в двух разных компаниях. Эта несовместимость означает, что ни один из этих процессоров не может выполнить машинный код, написанный для дру- гого. Кроме того, программа, написанная на языке ассемблера одного процессора, не может быть преобразована в коды команд другого. О написании компьютер- ных программ, работающих на нескольких процессорах, мы поговорим в главе 24.
    Существует еще одно интересное различие между 8080 и 6800: в обоих микропроцессорах команда LDA загружает в аккумулятор значение из указан- ной ячейки памяти. В 8080, например, следующая последовательность байтов загружает в аккумулятор байт из ячейки 347Bh.
    3Ah
    7Bh
    34h
    Команда 8080 LDA

    322
    Код
    Теперь сравните эту последовательность с командой LDA для процессора
    6800, использующей так называемый расширенный режим адресации.
    B6h
    7Bh
    34h
    Команда 6800 LDA
    Эта последовательность байтов загружает в аккумулятор A байт из ячей- ки 7B34h.
    Различие не сразу бросается в глаза. Конечно, вы ожидали, что коды ко- манд будут разными: 3Ah для 8080 и B6h для 6800. Однако эти два микро- процессора также по-разному обрабатывают адрес, который следует за кодом операции. Процессор 8080 предполагает, что первым должен идти младший байт, за которым следует старший, а процессор 6800 — что первым должен идти старший байт.
    Это принципиальное различие между микросхемами Intel и Motorola по части хранения многобайтных значений так и не было преодолено. Микро- процессоры Intel по сей день продолжают сохранять многобайтные значения, начиная с младшего байта, а микропроцессоры Motorola — начиная со стар- шего байта.
    Эти два порядка известны как «от младшего к старшему» (little-endian, способ Intel) и «от старшего к младшему» (big-endian, способ Motorola). Прежде чем спорить, какой из методов лучше, имейте в виду, что термины Big-Endian
    («тупоконечник») и Little-Endian («остроконечник») взяты из книги Джонатана
    Свифта «Путешествия Гулливера» и связаны с войной между Лилипутией и Бле- фуску, разгоревшейся из-за разногласий относительно того, с какого конца сле- дует разбивать вареное яйцо: с острого или с тупого. Этот спор не имеет смысла.
    (С другой стороны, признаюсь, что подход, который я использовал в компью- тере из главы 17, не кажется мне предпочтительным!) Хотя ни один из приве- денных методов не может считаться правильным, разница между ними создает дополнительную проблему несовместимости при обмене информацией между системами, основанными на этих различающихся принципах.
    Что же стало с двумя классическими микропроцессорами? Процессор
    8080 был положен в основу того, что некоторые люди называли первым пер- сональным компьютером, хотя его правильнее было бы назвать первым до-
    машним компьютером. Это был «Альтаир 8800» (Altair 8800), фотография ко- торого украсила обложку журнала Popular Electronics в январе 1975 года.

    Глава 19. Два классических микропроцессора
    323
    Если вы внимательно рассмотрите этот компьютер, то заметите на перед- ней панели уже знакомые индикаторы и переключатели. Это тот же примитив- ный «пульт управления», который я предложил для массива RAM в главе 16.
    Вслед за процессором 8080 были выпущены микросхемы Intel 8085 и Z-80 компании Zilog, конкурента Intel, основанного ее бывшим сотрудником Феде- рико Фаджином, который сделал существенный вклад в разработку микросхе- мы 4004. Процессор Z-80 был полностью совместим с 8080, но предусматри- вал множество дополнительных полезных команд. В 1977 году чип Z-80 был использован в микрокомпьютере компании Radio Shack TRS-80 Model 1.
    Кроме того, в 1977 году компания Apple Computer Company, основанная
    Стивом Джобсом и Стивом Возняком, представила компьютер Apple II, в ко- тором вместо 8080 и 6800 использовался малобюджетный чип 6502 компании
    MOS Technology — усовершенствованная версия микросхемы 6800.
    В июне 1978 года компания Intel выпустила 16-битный микропроцессор
    8086, способный адресовать один мегабайт памяти. Набор команд 8086 не был совместим с процессором 8080, однако он предусматривал команды для умно- жения и деления. Год спустя Intel представила микропроцессор 8088, внутренне идентичный чипу 8086, но с побайтной адресацией внешней памяти, позволяв- шей микропроцессору использовать распространенные в то время 8-битные вспомогательные чипы, разработанные для 8080. Компания IBM применяла микропроцессор 8088 в своем персональном компьютере 5150, представлен- ном осенью 1981 года под названием IBM PC.

    324
    Код
    Выход IBM на рынок персональных компьютеров серьезно на него повли- ял, и многие компании начали выпускать устройства, совместимые с IBM PC.
    (Тема совместимости будет рассмотрена в последующих главах.) На протяжении многих лет выражение «IBM PC-совместимый» подразумевало использование в устройстве микросхемы Intel, в частности микропроцессора Intel семейства x86
    В 1982 году семейство x86 пополнилось чипами 186 и 286, в 1985 году —
    32-битным чипом 386, в 1989-м — чипом 486, а в 1993-м — микропроцессора- ми Intel Pentium, которые в настоящее время устанавливаются в компьютеры, совместимые с IBM PC. Несмотря на то что наборы команд микропроцессоров
    Intel постоянно расширяются, они продолжают поддерживать коды команд бо- лее ранних процессоров, начиная с 8086.
    В компьютере Apple Macintosh, впервые представленном в 1984 году, ис- пользовался 16-битный микропроцессор Motorola 68000, который является пря- мым потомком чипа 6800. Процессор 68000 и его более поздние версии (часто объединяемые в серию 68K) — один из самых популярных микропроцессоров.
    Начиная с 1994 года в компьютерах Macintosh установлен микропроцессор
    PowerPC, разработанный совместно компаниями Motorola, IBM и Apple. В его основе лежит микропроцессорная архитектура RISC (Reduced Instruction Set
    Computing — вычисления с сокращенным набором команд), в рамках которой реализуется попытка увеличения скорости процессора за счет упрощения неко- торых его аспектов. На компьютере с архитектурой RISC каждая команда, как правило, имеет одинаковую длину (32 бита в случае PowerPC), доступ к памя- ти ограничен только командами для загрузки и сохранения, а сами команды выполняют скорее простые операции, нежели сложные. Процессоры на осно- ве архитектуры RISC обычно предусматривают множество регистров, чтобы как можно реже обращаться к памяти.
    Микропроцессор PowerPC не может выполнять код, написанный для чи- пов серии 68K, поскольку имеет совершенно другой набор команд. Однако микропроцессоры PowerPC, которые в настоящее время используются в ком- пьютерах Apple Macintosh, могут эмулировать процессор 68K. Программа- эмулятор, работающая на PowerPC, последовательно анализирует каждый код команды в программе, написанной для чипа серии 68K, и выполняет соответ- ствующее действие. Это происходит не так быстро, как выполнение «родного» кода PowerPC, но это работает.
    Согласно закону Мура, количество транзисторов в микропроцессорах должно удваиваться каждые 18 месяцев. Для чего нужны эти многочисленные дополнительные транзисторы?
    Некоторые из транзисторов позволили увеличить разрядность процессора.
    Использование других было обусловлено появлением новых команд. Бóльшая

    Глава 19. Два классических микропроцессора часть современных микропроцессоров предусматривает команды для выполне- ния операций над числами с плавающей точкой (о чем я расскажу в главе 23).
    Кроме того, в набор микропроцессоров были добавлены новые команды для произведения некоторых часто повторяющихся вычислений, необходимых для отображения на экранах компьютеров изображений или фильмов.
    Для увеличения быстродействия в современных процессорах применяется несколько методов. Один из них называется конвейеризацией. При выполнении одной команды процессор считывает следующую, при этом он до определен- ной степени предугадывает, как команды перехода могут изменить программ- ный поток. Современные процессоры также включают кеш (cache) — массив сверхскоростной оперативной памяти внутри процессора, в котором хранятся недавно выполненные команды. В компьютерных программах часто исполь- зуются небольшие циклы, а кеш позволяет обойтись без повторной загрузки входящих в него команд. Все эти функции, повышающие быстродействие про- цессора, требуют дополнительных логических схем, следовательно, дополни- тельных транзисторов.
    Как я уже говорил, микропроцессор — это только одна (пусть и самая важная) часть компьютерной системы. Сконструируем такую систему в гла- ве 21, но сначала мы должны научиться записывать в память что-то, кроме кодов команд и чисел. Нам предстоит вернуться в первый класс и заново на- учиться читать и писать текст.

    326
    Глава 20
    Набор символов ASCII
    В цифровой памяти компьютера хранятся только биты, поэтому все, с чем мы собираемся работать, должно быть в виде битов. Мы уже видели, как с помо- щью битов можно представить числа и машинный код. Следующая задача — представить текст. В конце концов, большая часть накопленной в мире ин- формации выражена в виде текста, а наши библиотеки полны книг, журналов и газет. Наверняка нам захочется использовать компьютеры для хранения зву- ков, изображений и фильмов, а с текста гораздо проще начать.
    Чтобы представить текст в цифровой форме, мы должны разработать не- которую систему, в которой каждая буква соответствует уникальному коду. Для чисел и знаков препинания также нужно предусмотреть коды. Короче, нам нуж- ны коды для всех буквенно-цифровых символов. Такая система иногда называет- ся набором кодированных символов, а отдельные коды — кодами символов.
    Сначала сформулируем вопрос: «Сколько битов требуется для этих ко- дов?» Ответить на него непросто!
    Когда мы думаем о представлении текста с помощью битов, давайте не бу- дем забегать далеко вперед. Мы привыкли к красиво отформатированному текс- ту на страницах книги, журнала или газеты. Абзацы состоят из строк одинако- вой ширины. Однако такое форматирование существенно не влияет на сам текст.
    Когда мы читаем короткий рассказ в журнале, а спустя годы встречаем его в кни- ге, он не кажется нам другим только потому, что в книге столбец текста шире.
    Другими словами, забудьте, что текст отформатирован в виде плоских столбцов на печатной странице. Считайте его одномерным потоком букв, цифр, знаков препинания с дополнительным символом, обозначающим конец одного абзаца и начало следующего.
    Опять же, если вы читаете рассказ в журнале, а позднее видите его в кни- ге, и при этом шрифт немного отличается, имеет ли это какое-либо значение?
    Если журнальная версия начинается так:
    Зовите меня Ишмаэль..., а книжная — так:
    Зовите меня Ишмаэль...

    Глава 20. Набор символов ASCII
    327
    стоит ли обращать на это внимание? Вероятно, нет. Да, шрифт слегка влия- ет на восприятие, однако от его замены рассказ не теряет смысла. Исходный шрифт всегда можно вернуть. Это не наносит вреда.
    Вот еще один способ упростить задачу: давайте использовать простой текст без курсива, полужирного начертания, подчеркивания, цветов, обводки букв, подстрочных и надстрочных индексов, а также без диакритических знач- ков. Никаких Å, é, ñ или ö. Только символы латинского алфавита, поскольку из них состоит 99% английских слов.
    В ходе предыдущих исследований кодов Морзе и Брайля мы видели, как буквы алфавита могут быть представлены в двоичном формате. Несмотря на то что эти системы прекрасно справляются со стоящими перед ними зада- чами, они имеют недостатки, когда речь заходит о компьютерах. В азбуке Мор- зе коды имеют разную длину. Например, часто используемые буквы обозна- чаются короткими кодами, более редкие — длинными. Как видите, такой код подходит для телеграфа, однако не для компьютеров. Кроме того, код Морзе не делает различий между буквами в верхнем и нижнем регистре.
    Коды Брайля имеют фиксированную длину, каждая буква представлена шестью битами, что предпочтительнее для компьютеров. Азбука Брайля так- же различает букву верхнего и нижнего регистра, хотя и использует для этого специальный escape-код, указывающий, что за ним следует символ в верхнем регистре. По сути, это означает, что для каждой заглавной буквы требуют- ся два кода, а не один. Цифры отображаются с помощью кода переключения, который дает понять, что следующие далее коды представляют числа до тех пор, пока не встретится другой код переключения, сигнализирующий возврат к представлению букв.
    Наша цель — разработка такого набора кодированных символов, чтобы нижеприведенное предложение можно было зашифровать с помощью серии кодов, каждый из которых — это определенное количество битов.
    У меня 27 сестер.
    Одни коды будут представлять буквы, другие — знаки препинания, тре- тьи — числа. Еще нам необходим код, соответствующий пробелу между сло- вами. Приведенное предложение состоит из 17 символов (включая пробелы).
    Последовательность кодов для шифрования подобных предложений часто на- зывается текстовой строкой.
    То, что нам нужны коды для чисел в текстовой строке, таких как «27», мо- жет показаться странным, поскольку мы представляли числа с помощью би- тов во многих предыдущих главах. Мы можем предположить, что кодами для

    328
    Код цифр 2 и 7 в этом предложении являются просто двоичные числа 10 и 111.
    Однако это не обязательно так. В контексте такого предложения с символа- ми 2 и 7 можно обращаться как с любыми другими символами в письменном языке. Им могут соответствовать коды, совершенно не связанные с фактиче- скими значениями этих чисел.
    Вероятно, наиболее экономичным текстовым кодом является 5-битный код, созданный в 1874 году для печатающего телеграфа Эмилем Бодо *, со- трудником французской телеграфной службы, которая начала использовать этот код в 1877 году. В дальнейшем код был усовершенствован Дональдом
    Мюрреем и стандартизирован в 1931 году Международным консультацион- ным комитетом по телефонии и телеграфии (Comité Consultatif International
    Téléphonique et Télégraphique, CCITT; сейчас — Международный союз электро- связи — International Telecommunication Union, ITU). Официально этот код на- зывается международным телеграфным алфавитом № 2 (International Telegraph
    Alphabet No 2, ITA-2); в Соединенных Штатах он более известен как код Бодо, хотя правильнее было бы называть его кодом Мюррея.
    В XX веке код Бодо часто применялся в телетайпных аппаратах. Кла- виатура телетайпа Бодо похожа на пишущую машинку, но у нее только 30 кла- виш и пробел. Клавиши телетайпа — просто переключатели, использование которых приводит к генерации двоичного кода и его передаче по выходному кабелю аппарата, бит за битом. Кроме того, телетайп предусматривает печат- ный механизм. Коды, проходящие через входной кабель телетайпа, активиру- ют электромагниты, которые печатают символы на бумаге.
    Поскольку код Бодо 5-битный, он содержит всего 32 элемента. Шестнад- цатеричные значения этих кодов находятся в диапазоне от 00h до 1Fh. В сле- дующей таблице представлено соответствие этих 32 кодов буквам латинского алфавита.
    Шестнадцатерич-_ный_код_Буква_Бодо_Шестнадцатерич-_ный_код_Буква_Бодо'>Шестнадцатерич-
    ный код
    Буква Бодо
    Шестнадцатерич-
    ный код
    Буква Бодо
    00 10
    E
    01
    T
    11
    Z
    02
    Возврат каретки
    12
    D
    03
    O
    13
    B
    04
    Пробел
    14
    S
    05
    H
    15
    Y
    06
    N
    16
    F
    * В честь Эмиля Бодо символьная скорость измеряется в бодах. Прим. науч. ред.

    Глава 20. Набор символов ASCII
    329
    Шестнадцатерич-
    ный код
    Буква Бодо
    Шестнадцатерич-
    ный код
    Буква Бодо
    07
    M
    17
    X
    08
    Перевод строки
    18
    A
    09
    L
    19
    W
    0A
    R
    1A
    J
    0B
    G
    1B
    Переключение
    на цифры
    0C
    I
    1C
    U
    0D
    P
    1D
    Q
    0E
    C
    1E
    K
    0F
    V
    1F
    Переключение
    на буквы
    Код 00h не присваивается ничему. Из оставшихся кодов двадцать шесть назначаются буквам алфавита, а остальные пять соответствуют вспомогатель- ным действиям, выделенным в таблице курсивом.
    Код 04h — это пробел, который создает пространство между словами, коды 02h и 08h — возврат каретки и перевод строки. Эти понятия применя- ются при использовании пишущей машинки. Когда достигаете конца строки, печатая, вы нажимаете на рычаг или кнопку, которая выполняет два действия.
    Во-первых, каретка перемещается вправо, благодаря чему следующая строка начинается с левого края листа (возврат каретки). Во-вторых, пишущая ма- шинка прокручивает валик так, чтобы следующая строка находилась под той, которую вы только что напечатали (перевод строки). В системе Бодо эти два кода генерируются отдельными клавишами. Телетайпный аппарат Бодо реа- гирует на эти два кода при печати.
    Для получения цифр и знаков препинания в системе Бодо использует- ся код 1Bh, обозначенный в таблице фразой «Переключение на цифры». Все следующие за ним коды интерпретируются как цифры или знаки препина- ния, пока код «Переключение на буквы» (1Fh) не просигнализирует возврат к буквам. В следующей таблице представлены коды, соответствующие цифрам и знакам препинания.

    330
    Код
    Шестнадцатерич-
    ный код
    1   ...   17   18   19   20   21   22   23   24   ...   28


    написать администратору сайта