Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Биты, байты, слова, параграфы



Компьютер работает в двоичной системе счисления — минимальным информа­ционным элементом является бит, который может принимать значение 0 или 1. Этим значениям соответствуют различимые физические состояния ячейки, чаще всего — уровень напряжения (низкий или высокий). Биты организуются в более крупные образования — ячейки памяти и регистры. Каждая ячейка па­мяти (и каждый регистр) имеет свой адрес, однозначно ее идентифицирующий в определенной системе координат. Минимальной адресуемой (пересылаемой между компонентами компьютера) единицей информации является байт, со­стоящий, как правило, из 8 бит1. Два байта со смежными адресами образуют слово (word) разрядностью 16 бит, два смежных слова — двойное слово (double word) разрядностью 32 бита, два смежных двойных слова — учетверенное слово (quad word) разрядностью 64 бита. Байт (8 бит) делится на пару тетрад (nibble): старшую тетраду — биты [7:4] и младшую тетраду — биты [3:0].

В двухбайтном слове принят LH-порядок следования байтов: адрес слова указы­вает на младший байт L (Low), а старший байт Н (High) размещается по адресу, большему на единицу. В двойном слове порядок аналогичен — адрес указывает на самый младший байт, после которого размещены следующие по старшинству. Этот порядок, называемый форматом Little Endian и естественный для процес­соров Intel, применяется не во всех микропроцессорных семействах. В формате Big Endian адрес указывает на самый старший байт (двойного, учетверенного...) слова, остальные байты размещаются по нарастающим адресам. С несовпадени­ем форматов представления приходится сталкиваться, например, при передаче информации между различными подсистемами (формат Big Endian использу­ется в сетевых протоколах и шине FireWire).

В технической документации, электрических схемах и текстах программ могут применяться разные способы представления чисел:

♦ Двоичные (binary) числа — каждая цифра отражает значение одного бита (0
или 1), старший бит всегда пишется слева, после числа ставится буква «Ь».
Для удобства восприятия тетрады могут быть разделены пробелами, напри­
мер, 1010 0101b.

♦ Шестнадцатеричные (hexadecimal) числа — каждая тетрада представляется
одним символом 0...9, А, В, ..., F. Обозначаться такое представление может
по-разному, в данной книге используется только символ «h» после послед­
ней щестнадцатеричной цифры, например, A5h. В текстах программ это же
число может обозначаться и как 0хА5, и как 0A5h, в зависимости от синтак­
сиса языка программирования. Незначащий ноль (0) добавляется слева от
старшей шестнадцатеричной цифры, изображаемой буквой, чтобы различать
числа и символические имена.

♦ Десятичные (decimal) числа — каждый байт (слово, двойное слово) пред­
ставляется обычным числом, а признак десятичного представления (букву
«d») обычно опускают. Байт из предыдущих примеров имеет десятичное
значение 165. В отличие от двоичной и шестнадцатеричной форм записи, по
десятичной трудно в уме определить значение каждого бита, что иногда при­
ходится делать.

♦ Восьмеричные (octal) числа — каждая тройка битов (разделение начинается
с младшего) записывается в виде цифры из интервала 0-7, в конце ставится
признак «о». То же самое число записывается как 245о. Восьмеричная систе­
ма неудобна тем, что байт не разделить поровну, но зато все цифры — привычные.
В «про-интеловских» системах это представление непопулярно (у него «DEC'ob-
ское» происхождение).

В табл. 1.1 приведены разные представления одной тетрады (4 бит). Чтобы пе­ревести любое 8-битное число в десятичное, нужно десятичный эквивалент старшей тетрады умножить на 16 и сложить с эквивалентом младшей тетрады. Для нашего примера A5h * 10- 16 + 5 = 165. Обратный перевод тоже несложен: десятичное число делится на 16, целая часть даст значение старшей тетрады, ос­таток — младшей.

В «наследство» от процессоров 8086/88 достался своеобразный способ задания адреса ячейки памяти в виде указателя «seg:offset», состоящего из двух слов: сегмента (seg — segment) и смещения (offset). Такая запись предполагает вы­числение полного адреса по формуле addr « 16 • seg + offset Такое представле­ние 20-битного адреса двумя 16-битными числами в процессорах 8086/88 под­держивается и в реальном режиме всех последующих процессоров х86 (под­робнее об адресации памяти см. в 7.3). Здесь сегмент указывает адрес парагра­фа — 16-байтной области памяти. Выравнивание адреса по границе параграфа означает, что он кратен 16 (4 младших бита нулевые). Нетрудно увидеть, что один и тот же адрес можно задавать разными сочетаниями этих двух компонен­тов. Так, например, адрес начала области данных BIOS (BIOS Data Area) 00400h представляют и как 0000:0400, и как 0040:0000 (шестнадцатеричное представление подразумевается). Возможны и другие варианты, но их не ис­пользуют. В данной книге в основном будем пользоваться первым способом, причем нулевое значение сегмента будем представлять кратко, то есть 0:0400. К счастью, в 32-разрядном (и 64-разрядном) режиме работы процессоров в со­временных ОС и приложениях сегментация не применяется, а адрес выражает­ся одним (32- или 64-битным) числом.

Обозначение и порядок битов и байтов шин адреса и данных, принятое в аппа­ратуре PC, пришло от процессоров Intel 8086/88 (и даже от 8080). Самый млад­ший бит (Least Significant Bit, LSB) имеет номер 0, самый старший (Most Significant Bit, MSB) бит байта — 7, слова — 15, двойного слова — 31. На рисун­ках принято старший бит изображать слева, а младший — справа.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.