дисплеем и остальными периферийными устройствами, включая дискеты. Этот
компьютер позволяет работать с графическими изображениями, правда ценой
пониженной различимости символов. Использование этой машины труднее
описать простыми категориями, но они могут использоваться в инженерном и
архитектурном черчении, деловой графике, играх и мультипликации.
Я утверждаю, что "деловой компьютер" и "графическая машина" являются
различными компьютерами, поскольку они предназначены для совершенно разных
целей. И, что еще более важно, программные продукты для них тоже
совершенно различны. Ясно, что деловые программы, выдающие текстовые
результаты, смогут работать и на компьютерах с цветными графическими
дисплеями, однако, это будет более утомительно для глаз. Программы,
написанные для графического дисплея, определенно не будут работать на
деловом компьютере.
Такое частичное разделение между предполагаемыми вариантами
использования деловых систем IBM/PC делает их практически разными
машинами, со своими рынками и своими кругом пользователей. Но все же, все
системы IBM/PC имеют очень много общего в оборудовании, программных
средствах и интересах пользователей. Я так подробно остановился на
разделении деловых и графических систем, чтобы Вы лучше представляли себе
сам факт существования такого различия.
МАШИНА С ВИНЧЕСТЕРОМ. Это IBM/PC, к которой подключен диск большой
емкости с высокой скоростью доступа. Такой диск часто называют "жестким"
(чтобы отличать его от "гибких" дисков) или "винчестером" (по кодовому
наименованию одного из ранних проектов фирмы "IBM", в рамках которого
разрабатывалась технология, реализованная в этих накопителях).
Отличительной чертой такого компьютера является наличие внешней памяти
большого объема, позволяющей решать множество задач: хранить всю деловую
информацию небольшой компании, хранить регистрационные записи пациентов
врача или хранить базу данных научного работника. Короче говоря, IBM/PC,
оборудованный винчестером, обладает возможностями оперативной работы с
большими массивами данных.
Не требуется большого опыта работы с IBM/PC, чтобы установить, что
основным сдерживающим фактором быстродействия, возможностей и полезности
этого компьютера является хранение данных на диске. Быстродействие
микропроцессора 8088, использующегося в IBM/PC, для большинства задач
достаточно велико. (Если какие-либо программы на Ваш взгляд работают
недостаточно быстро, то это скорее всего связано с недостаточно
эффективной реализацией. Наиболее общий пример - это программы на Бейсике,
выполняемые в режиме интерпретации.)
Объем памяти IBM/PC также вполне достаточен и, во всяком случае,
значительно превышает характеристики персональных компьютеров предыдущего
поколения. Большинство первых персональных компьютеров имело всего 64 К
памяти, в то время как объем памяти IBM/PC может превышать 256К. (Часть
памяти используется в качестве экранной памяти, хранения интерпретатора
Бейсика и управляющих программ системы BIOS).
Скорость и емкость внешней памяти на гибких дисках ограничивают
возможности IBM/PC. Снять эти ограничения позволяют жесткие диски
винчестерского типа. Обычно емкость винчестера лежит в пределах от 2 до 25
миллионов байт, что эквивалентно емкости 12 - 150 односторонних дискет.
Кроме того, скорость доступа у винчестера намного выше, чем у дисководов с
гибкими магнитными дисками.
Таким образом, с подключением винчестера появился четвертый и,
вероятно, наиболее интересный вариант IBM/PC. Мы имеем все основания
считать оснащенный винчестером IBM/PC отдельной версией компьютера,
поскольку его возможности на порядок выше, чем у остальных систем.
Винчестеры позволяют хранить базу данных значительного объема или всю
деловую документацию компании. Винчестеры превращают персональные
компьютеры либо в законченные деловые машины, либо в мощные средства
доступа к данным. Таким образом, винчестеры существенно увеличивают
возможности IBM/PC.
Когда появился первый вариант IBM/PC, фирма "IBM" не поставляла и не
предусматривала подключение винчестеров к IBM/PC, но изготовители дисков
быстро разработали контроллеры и программы для подключения винчестера к
IBM/PC. Однако, можно ожидать, что для полной реализации потенциала IBM/PC
винчестеры (или другие эквивалентные устройства памяти большой емкости с
быстрым доступом) должны стать составной частью большинства компьютеров
IBM/PC.
Прежде чем завершить рассмотрение важности комплектации IBM/PC
периферийным оборудованием, необходимо упомянуть адаптер последовательной
связи. Адаптер связи настолько обычный элемент оборудования, что о нем
редко вспоминают. Однако, наиболее перспективный путь использования
персональных компьютеров заключается в организации вычислительных сетей,
которые без адаптера связи создать невозможно. Таким образом, адаптер
связи может оказаться наиболее важным дополнительным элементом
оборудования.
ГЛАВА 3. КАК РАБОТАЕТ IBM/PC
В этой главе мы рассмотрим работу "мозга" IBM/PC - микропроцессора
8088 - как он выполняет вычисления, использует память и общается с внешним
миром. В этой главе поясняются такие понятия как прерывание, стек и порт.
Практически весь материал этой главы полностью относится к уже
упоминавшимся нами трем областям интересов. Это объясняется тем, что речь
в основном будет идти о функционировании микропроцессора 8086/8088, общего
для IBM/PC, компьютеров, работающих под управлением операционной системы
MS-DOS.
3.1. Память, часть 1: что это такое и как осуществляется чтение из
памяти
Одним из основных элементов компьютера, позволяющим ему нормально
функционировать, является память. Внутренняя память компьютера - это место
хранения информации, с которой он работает. Внутренняя память компьютера
является временным рабочим пространством; в отличие от нее внешняя память,
такая как файл на дискете, предназначена для долговременного хранения
информации. Информация во внутренней памяти не сохраняется при выключении
питания.
По аналогии с конторской работой можно назвать микропроцессор
конторским служащим, а память компьютера - рабочим столом: пространство
его используется временно, для выполнения работы.
Память компьютера организована в виде множества ячеек, в которых
могут храниться значения; каждая ячейка обозначется адресом. Размеры этих
ячеек и, собственно, типы значений, которые могут в них храниться,
отличаются у разных компьютеров. Некоторые старые компьютеры имели очень
большой размер ячейки, иногда до 64 бит в каждой ячейке. Эти большие
ячейки назывались "словами". Супер-копьютеры Крей и компьютер Юнивак
ориентированы на работу со словами.
Трудность работы со словами большой длины заключается в том, что
обычно программы работают не с целыми словами, а с их частями. Поэтому
большинство современных компьютеров, и в том числе все персональные
компьютеры, используют значительно меньший размер ячейки памяти, состоящей
всего из 8 бит или "байта": Байт - это очень удобная единица информации,
отчасти потому что он позволяет хранить код одной буквы алфавита или
одного символа. Поскольку символ занимает в точности один байт, термины
"байт" и "символ" часто используются в одном и том же смысле.
Так как IBM/PC использует ячейки памяти длиной восемь бит или один
байт, в памяти могут храниться значения, которые можно выразить восемью
битами. Это значения до двух в восьмой степени или 256. Смысл величины,
записанной в ячейку памяти, зависит от способа ее использования. Можно
считать, что байт содержит код алфавитного символа - так называемый код
ASCII. В то же время его можно рассматривать и как число. Все 256
возможных значений могут рассматриваться либо как положительные числа от 0
до 255, либо как числа со знаками в диапазоне от - 128 до + 127. Кроме
того, байт может использовать как часть большого объема данных, например,
строки символов или двухбайтного числа.
Для удобства манипулирования символьными данными компьютеру
необходимо чтобы коды символов преобразовывались в байтовые величины.
Большинство компьютеров, включая IBM/PC, используют код ASCII,
американский стандартный код для обмена информации. (Большинство
компьютеров фирмы "IBM" используют другую схему кодирования символов,
называющуюся EBCDIC; системы ASCII и EBCDIC организованы по разному, но
перекодировка из одной системы в другую большого труда не представляет).
В коде ASCII числовые значения присваиваются всем обычно используемым
символам, таким как буквы алфавита, строчные и заглавные, цифры, знаки
пунктуации. Несколько кодов зарезервированы для управления, например,
чтобы указать конец строки символов. Эти специальные управляющие коды в
основном имеют значения от CHR$(0) до CHR$(31). Использование этих
специальных кодов IBM/PC имеет ряд особенностей, которым посвящено
приложение 4.
Код ASCII - это семибитовый код, имеющий 128 возможных значений
кодов. Стандартный код ASCII обычно использует первые 128 из 256 возможных
значений, помещающихся в байте. Остальные 128 могут использоваться для
различных целей, образуя "расширенный набор" символьных кодов ASCII. Не
существует никаких стандартов использования расширенных кодов и различные
устройства компьютеров используют их по-разному. Дисплей IBM/PC использует
расширенный набор языков, отличных от английского, различных
математических символов, а также псевдографических элементов, которые
можно использовать для рисования. Программа, приведенная в листинге 1.1,
показывает все специальные символы IBM/PC, а подробнее об их организации
сказано в главе 8.
Стандартное для IBM/PC матричное устройство печати MX-80 фирмы
"Эндисон" преобразует коды символов расширенного набора ASCII в печатные
формы, отличающиеся от изображений на экране. Если запустить программу
1.1, а затем использовать операцию PrintScreen (печать экрана) для
копирования содержимого экрана на печатающее устройство, Вы сможете
сравнить экранный и печатный эквиваленты одних и тех же расширенных кодов
ASCII.
Таблицы стандартных кодов ASCII и расширенных кодов ASCII для IBM/PC
можно найти во многих местах. Одна из них приведена в конце руководства по
Бейсику. Очень удобная форма таблицы приведена в приложении C к
техническому руководству по IBM/PC.
До сих пор мы рассматривали побайтное использование памяти, однако,
часто для более сложных значений, чем может уместиться в одном байте
используется несколько байт вместе. Если необходимы строки символов, они
сохраняются в соседних ячейках памяти, по одному символу на байт; первый
слева символ записывается в первый байт, т.е., байт с наименьшим адресом.
Если требуется запомнить целое число больше одного байта, то оно
записывается в несколько байт, также расположенных рядом. Наиболее
распространенный формат использует 2 байта или 16 бит, что очень удобно
для 16-разрядного процессора, такого как 8088. В терминах микропроцессора
8088 двухбайтное число называется словом. Многие команды 8088 специально
разработаны для работы со словами. Могут использоваться и более длинные
форматы - трех-, четырехбайтные и длиннее - но они не так широко
распространены как двухбайтные и для работы с ними нужны специальные
программы.
Когда числа, состоящие из двух или нескольких байт, хранятся в памяти