Книга Код. Тайный язык информатики, страница 90. Автор книги Чарльз Петцольд

Разделитель для чтения книг в онлайн библиотеке

Онлайн книга «Код. Тайный язык информатики»

Cтраница 90

Многие начинающие пользователи домашних компьютеров, наслушавшись разговоров о мегабайтах и гигабайтах, начинают путать полупроводниковую оперативную память с жестким диском. В последние годы появилось правило, позволяющее избежать путаницы в терминологии. Согласно ему слово «память» следует использовать только для обозначения полупроводниковой оперативной памяти, а термины «накопитель» и «запоминающее устройство» для обозначения всего остального, то есть дискет, жестких дисков и магнитной ленты. В этой книге я старался придерживаться этого принципа.

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

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

Чтобы понять разницу между памятью и накопителем, можно использовать следующую аналогию: память похожа на рабочий стол. Вы можете работать со всем, что находится на столе. Накопитель подобен шкафу с папками. Если нужна какая-то из папок, вы должны встать, подойти к шкафу, достать нужную и положить ее на стол. Когда на вашем столе оказывается слишком много папок, нужно убрать некоторые из них обратно в шкаф.

Данные на диске хранятся в виде так называемых файлов. За сохранение и извлечение файлов отвечает чрезвычайно важная программа — операционная система.

Глава 22
Операционная система

Наконец мы собрали нечто напоминающее полноценный компьютер, по крайней мере мысленно. Он оснащен микропроцессором, оперативной памятью, клавиатурой, монитором и жестким диском. Все оборудование на месте, и мы с нетерпением смотрим на кнопку включения, которая его оживит. Вероятно, этот проект напомнил, как Виктор Франкенштейн собирал своего монстра, как папа Карло строгал Буратино.

И все же нам чего-то не хватает. И отнюдь не молнии, не заклинаний. Включите этот новый компьютер и скажите, что вы видите.

По мере разогрева электронно-лучевой трубки на экране отобразится массив идеально оформленных, но совершенно случайных символов ASCII. Это мы и ожидали. Полупроводниковая память теряет свое содержимое при отключении питания, а при следующем включении приходит в случайное и непредсказуемое состояние. Вся созданная нами для микропроцессора память RAM — случайный набор байтов. Микропроцессор воспринимает этот набор как машинный код и начинает с ним работать, что не приведет к нежелательным последствиям, в частности компьютер не взорвется, — однако не будет и пользы.

Нам не хватает программного обеспечения. При первом включении или перезагрузке микропроцессор обращается к машинному коду, начиная с ячейки памяти с определенным адресом. В случае Intel 8080 это 0000h. При включении правильно спроектированного компьютера адрес памяти должен содержать машинную инструкцию (вероятно, первую из многих).

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

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

В отличие от описанного ранее пульта управления, этот имеет переключатель «Сброс», который подключен к одноименному входу микропроцессора. Пока этот переключатель замкнут, микропроцессор ничего не делает. После размыкания переключателя микропроцессор обращается к машинному коду.

Чтобы использовать этот пульт управления, замкните переключатель «Сброс» для остановки микропроцессора, а переключатель «Перехват» — для перехвата управления адресными линиями и линиями данных шины. Теперь вы можете использовать переключатели с A0 по A15 для указания 16-разрядного адреса памяти. Лампочки с D0 по D7 показывают 8-битное содержимое этого адреса. Чтобы записать сюда новое значение, введите нужный адрес с помощью переключателей с D0 по D7, а затем последовательно замкните и разомкните переключатель «Запись». Закончив ввод новых данных в память, разомкните переключатели «Перехват» и «Сброс», и микропроцессор начнет выполнять программу.

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

Когда на дисплее увидите результаты работы своих программ, все усилия будут вознаграждены. Текстовый дисплей, который мы собрали в предыдущей главе, имеет видеопамять емкостью один килобайт для хранения текстов в кодировке ASCII объемом 25 строк по 40 символов каждая. Программа записывает данные в эту память так же, как в любую другую.

Однако вывести результат программы на дисплей не так просто, как может показаться. Например, если ваша программа совершает некоторые вычисления, в результате которых получается 4Bh, вы не можете просто записать это значение в видеопамять. В этом случае на экране отобразилась бы буква K, поскольку именно ей соответствует код ASCII 4Bh. Вместо этого вам нужно записать в видеопамять два символа ASCII: 34h — код ASCII для цифры 4 и 42h — код ASCII для буквы B. Каждая тетрада 8-битного результата — шестнадцатеричное значение, которое должно отображаться на экране.

Вероятно, придется написать небольшую подпрограмму для выполнения этого преобразования. Приведем одну из таких подпрограмм на языке ассемблера для микропроцессоров 8080, которая преобразует записанную в аккумуляторе тетраду (предполагается, что это значение находится в диапазоне от 00h до 0Fh включительно) в соответствующий ей код ASCII.

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

Следующая подпрограмма дважды вызывает подпрограмму NibbleToAscii для преобразования байта, записанного в аккумуляторе A, в две цифры ASCII и их записи в регистры B и C.

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

Эти подпрограммы теперь позволяют отобразить на дисплее байт в шестнадцатеричном формате. Если захотите преобразовать значение в десятичный формат, потребуется еще немного поработать. На самом деле этот процесс похож на то, как люди переводят значение из шестнадцатеричной системы счисления в десятичную путем многократного деления на 10.

Вход
Поиск по сайту
Ищем:
Календарь
Навигация