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

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

В двухбайтном слове принят LH-порядок следования байт: адрес слова указывает на младший байт L (Low), а старший байт Н (High) размещается по адресу, на единицу большему. В двойном слове порядок будет аналогичным - адрес укажет на самый младший байт, после которого будут размещены следующие по старшинству. Этот порядок, естественный для процессоров Intel, применяется не во всех других микропроцессорных семействах. Байт (8 бит) делится на пару тетрад (nible): старшую тетраду - биты [7:4] и младшую тетраду - биты [3:0].

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

  • Двоичные (binary) числа - каждая цифра означает значение одного бита (0 или 1), старший бит всегда пишется слева, после числа ставится буква "Ь". Для удобства восприятия тетрады могут быть разделены пробелами. Например, 1010 0l0lb.

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

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

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

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

Представление двоичных чисел в разных системах счисления
Двоичное (bin)Шестнадцатеричное (hex)Десятичное (dec)Восьмеричное (oct)
0000000
0001111
0010222
0011333
0100444
0101555
0110666
0111777
10008810
10019911
1010А1012
1011В1113
1100С1214
1101D1315
1110Е1416
1111F1517

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

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

 
   



Rambler's Top100 Яндекс цитирования Рассылка 'Новости сайта Yanakayevs.Narod.Ru'

Hosted by uCoz