Представление данных в компьютерах



МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ
ВОСТОЧНО-УКРАИНСКОГО НАЦИОНАЛЬНОГО УНИВЕРСИТЕТА
имени ВЛАДИМИРА ДАЛЯ

(г. Северодонецк)

 

ТЕКСТ ЛЕКЦИЙ

По дисциплине

 

"СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ"

Семестр

для студентов дневной и заочной форм обучения для направления

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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!