Представление данных в компьютерах
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ
ВОСТОЧНО-УКРАИНСКОГО НАЦИОНАЛЬНОГО УНИВЕРСИТЕТА
имени ВЛАДИМИРА ДАЛЯ
(г. Северодонецк)
ТЕКСТ ЛЕКЦИЙ
По дисциплине
"СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ"
Семестр
для студентов дневной и заочной форм обучения для направления
0915 “Компьютерная инженерия”, специальностей
7.091501 “Компьютерные системы и сети”
7.091502 “Системное программирование”
Утверждено кафедрой КИ
протокол № 8 от 20. 03. 2009
“К изданию в электронной форме разрешаю”:
Зам. директора _______________(Барвин А. И.)
Протокол №______от”_____”________2009г.
Составители: ст. преп. А.М. Ларгина
Весь цифровий і фактичний матеріал,бібліографічні відомості перевірені.
Написання одиниць відповідає стандартам
Северодонецк- 2009г.
УДК 681. 3. 06
Конспект лекций по дисциплине “Системное программное обеспечение”, 4 семестр (для студентов дневного и заочного отделений, обучающихся по направлению 6.0915 «Компьютерная инженерия», специальностей 7.091501 “Компьютерные системы и сети” и 7.091502 «Системное программирование») / Сост.: А. М. Ларгина. – Северодонецк: 2009. - 162 с.
Курс лекций содержит материал, в котором излагается программная модель процессора ix86: рассмотрены регистры процессора, способы адресации и формирования исполнительного адреса. Даны основы программирования на ассемблере, приведены примеры программ. В курс лекций включены основные вопросы, которые возникают при программировании на низком уровне: арифметические и логические методы обработки информации, организация подпрограмм и способы передачи параметров, обработка данных вещественного типа и др. Часть курса посвящена механизму обработки прерываний, их роли в организации вычислительного процесса, алгоритмам управления памятью.
|
|
Составитель | А. М. Ларгина, ст. преп. |
Отв. за выпуск | А. И. Рязанцев, доц., к.т.н. |
Рецензент | Е. В. Щербаков, доц., к.т.н. |
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ.. 4
ЛЕКЦИЯ 1. МАШИНООРИЕТИРОВАННЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ. СТРУКТУРА ПРОГРАММЫ 12
ЛЕКЦІЯ 2. КОМАНДЫ ОСНОВНОГО ФОРМАТА.. 47
ЛЕКЦИЯ 3. КОМАНДЫ РАБОТЫ С БИТАМИ.. 63
ЛЕКЦИЯ 4. РАЗРАБОТКА ПРОГРАММ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ 80
ЛЕКЦИЯ 5. ПОДПРОГРАММЫ ЯЗЫКА ASSEMBLER.. 85
ЛЕКЦИЯ 6. РАБОТА С МАТЕМАТИЧЕСКИМ ПРОЦЕССОРОМ... 108
ЛЕКЦИЯ 7. ОРГАНИЗАЦИЯ ВИРТУАЛЬНОЙ ПАМЯТИ.. 122
ЛЕКЦИЯ 8. КОНЦЕПТУАЛЬНЫЕ ОСНОВЫ ОС.. 143
ЛИТЕРАТУРА.. 161
ВВЕДЕНИЕ
Исключить необходимость применения ассемблера в практике программирования невозможно, особенно в практике системного программирования. Только с помощью языка ассемблер можно наиболее полно и эффективно использовать все архитектурные возможности компьютера, а также быстро управлять его узлами.
|
|
Что потребуется для работы с ассемблером
Прежде всего потребуется ассемблер. Ассемблер - это программа, которая переводит текст с языка, понятного человеку, в язык, понятный процессору, то есть говорят, что она переводит язык ассемблера в машинный код. Однако сначала в повседневной речи, а затем и в литературе слово «ассемблер» стало также и названием самого языка программирования. Вместе с ассемблером обязательно должна быть еще одна программа - компоновщик (linker), которая и создает исполнимые файлы из одного или нескольких объектных модулей, полученных после запуска ассемблера. Помимо этого для разных целей могут потребоваться дополнительные вспомогательные программы - компиляторы ресурсов, расширители DOS и тому подобное (см. табл. 1).
Таблица 1. Ассемблеры и сопутствующие программы
Microsoft | Borland | Watcom | |
DOS, 16 бит | masm или ml, link (16 бит) | tasm tlink | wasm wlink |
DOS, 32 бита | masm или ml, link (32 бита) и dosx link (16 бит) и dos32 | tasm tlink wdosx или dos32 | wasm wlink dos4gw, pmodew, zrdx или wdosx |
Windows EXE | masm386 или ml, link (32 бита) rc | tasm tlink32 brcc32 | wasm wlink wrc |
Windows DLL | masm386 или ml, link (32 бита) | tasm tlink32 implib | wasm wlink wlib |
С точки зрения удобства компиляции TASM лучше подходит для создания 16-битных программ для DOS, WASM - для 32-битных программ для DOS, MASM - для Windows. С точки зрения удобства программирования развитость языковых средств растет в ряду WASM-MASM-TASM. Все примеры программ в этой книге построены так, что можно использовать любой из этих компиляторов.
|
|
Существуют и другие компиляторы, например бесплатно распространяемый в сети Internet NASM или условно бесплатный А86, но пользоваться ими проще, если вы уже знаете турбо- или макроассемблер. Бесплатно распространяемый GNU ассемблер, gas, вообще использует совершенно непохожий синтаксис.
Во всех программах встречаются ошибки. Кроме поиска ошибок отладчики иногда применяют и для того, чтобы исследовать работу существующих программ. Самый мощный отладчик на сегодняшний день - SoftICE от NuMega Software. Это отладчик для Windows 95/NT, позволяющий исследовать все -от ядра Windows до программ на С++, поддерживающий одновременно 16- и 32-битный код и многое другое. Другие популярные отладчики, распространяемые вместе с соответствующими ассемблерами, -Codeview (MS), Turbo Debugger (Borland) и Watcom Debugger (Watcom).
|
|
Еще одна особенность ассемблера, отличающая его от всех остальных языков программирования, — возможность дизассемблирования. То есть, имея исполняемый файл, с помощью специальной программы (дизассемблера) почти всегда можно получить исходный текст на ассемблере. Например, можно дизассемблировать BIOS вашего компьютера и узнать, как выполняется переключение видеорежимов, или драйвер для DOS, чтобы написать такой же для Windows. Дизассемблер не необходим, но иногда оказывается удобно иметь его под рукой. Лучшие дизассемблеры на сегодняшний день - Sourcer от V Communications и IDA.
И наконец, последняя необязательная, но крайне полезная утилита -шестнадцатеричный редактор. Многие такие редакторы (hiew, proview, Iview, hexit) тоже имеют встроенный дизассемблер, так что можно, например, открыв в таком редакторе свою программу, посмотреть, как скомпилировался тот или иной участок программы, поправить какую-нибудь команду ассемблера или изменить значения констант и тут же, без перекомпиляции, запустить программу, чтобы посмотреть на результат изменений.
Представление данных в компьютерах
Для того чтобы освоить программирование на ассемблере, неизбежно приходится знакомиться с двоичными и шестнадцатеричными числами. В некоторых случаях в тексте программы можно обойтись и обычными десятичными числами, но без понимания того, как на самом деле хранятся данные в памяти компьютера, очень трудно использовать логические и битовые операции, упакованные форматы данных и многое другое.
Двоичная система счисления
Практически все существующие сейчас компьютерные системы, включая Intel, используют для всех вычислений двоичную систему счисления. В их электрических цепях напряжение может принимать два значения, и эти значения назвали нулем и единицей. Двоичная система счисления как раз и использует только эти две цифры, а вместо степеней десяти, как в обычной десятичной системе, здесь используют степени двойки. Чтобы перевести двоичное число в десятичное, надо сложить двойки в степенях, соответствующих позициям, где в двоичном стоят единицы. Например:
10010110b = 1*27+0*26+0*25+1*24+0*23+1*22+1*21+0*20 == 128+16+4+2 = 150
Чтобы перевести десятичное число в двоичное, можно, например, просто делить его на 2, записывая 0 каждый раз, когда число делится на два, и 1, когда не делится (табл. 2).
Остаток | Разряд | |
150/2 = 75 75/2 = 37 37/2 = 18 18/2 = 9 9/2 = 4 4/2 = 2 2/2 = 1 1/2 = 0 | 0 1 1 0 1 0 0 1 | 0 1 2 3 4 5 6 7 |
Результат: 10010110b |
Таблица 2. Перевод числа из десятичной системы в двоичную
Чтобы отличать двоичные числа от десятичных, в ассемблерных программах в конце каждого двоичного числа ставят букву «b».
Биты, байты и слова
Минимальная единица информации называется битом. Бит может принимать только два значения — обычно 0 и 1. На самом деле эти значения совершенно необязательны — один бит может принимать значения «да» и «нет», показывать присутствие и отсутствие жесткого диска, является ли персонаж игры магом или воином — важно лишь то, что бит имеет только два значения. Но далеко не все величины принимают только два значения, а значит, для их описания нельзя обойтись одним битом.
Единица информации размером восемь бит называется байтом. Байт - это минимальный объем данных, который реально может использовать компьютерная программа. Даже чтобы изменить значение одного бита в памяти, надо сначала считать байт, содержащий его. Биты в байте нумеруют справа налево, от нуля до семи, нулевой бит часто называют младшим битом, а седьмой- старшим.
Так как всего в байте восемь бит, байт может принимать до 28 = 256 разных значений. Байт используют для представления целых чисел от 0 до 255 (тип unsigned char в С), целых чисел со знаком от -128 до +127 (тип signed char в С), набора символов ASCII (тип char в С) или переменных, принимающих менее 256 значений, например для представления десятичных чисел от 0 до 99.
Следующий по размеру базовый тип данных - слово. Размер одного слова в процессорах Intel — два байта.
Биты с 0 по 7 составляют младший байт слова, а биты с 8 по 15 - старший. В слове содержится 16 бит, а значит, оно может принимать до 216 = 65 536 разных значений. Слова используют для представления целых чисел без знака со значениями 0 -65 535 (тип unsigned short в С), целых чисел со знаком со значениями от -32 768 до +32 767 (тип short int в С), адресов сегментов и смещений при 16-битной адресации. Два слова подряд образуют двойное слово, состоящее из 32 бит, а два двойных слова составляют одно учетверенное слово (64 бита). Байты, слова и двойные слова - основные типы данных, с которыми мы будем работать.
В компьютерах, использующих процессоры Intel, все данные хранятся так, что младший байт находится по младшему адресу, так что слова записываются задом наперед, то есть сначала (по младшему адресу) записывают последний (младший) байт, а потом (по старшему адресу) записывают первый (старший) байт. Если из программы всегда обращаться к слову как к слову, а к двойному слову как к двойному слову, это не оказывает никакого влияния. Но если вы хотите прочитать первый (старший) байт из слова в памяти, придется увеличить адрес на 1. Двойные и учетверенные слова записываются так же -от младшего байта к старшему.
Дата добавления: 2018-05-12; просмотров: 448; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!