Представление информации

Программная модель микропроцессора 8086

Представление целых чисел. Для хранения данных и кодов команд исполняемой программы используется оперативная память. Вся доступная оперативная память разбита на ячейки размером 8 разрядов – байты(Byte). Разряды байта нумеруются справа налево от 0 до 7 (рис. 4). Порядковый номер байта называют его адресом. В микропроцессоре 8086 используются 20-разрядные адреса, поэтому максимальный объем оперативной памяти составляет 220 байтов.

 

 

Рис. 4. Представление байта.

 

 

Словом(Word) обозначают два соседних байта. Размер слова составляет 16 разрядов, которые нумеруются справа налево от 0 до 15 (рис. 5). Адресом слова считается адрес первого байта (с меньшим адресом).

 

 

А А+1
15 8 7 0

 

Рис. 5. Представление слова.

 

Двойным словом(Double Word) обозначают четыре смежных байта или два смежных слова. Размер двойного слова составляет 32 разряда, которые нумеруются справа налево от 0 до 31 (рис. 6). Адресом двойного слова считается адрес первого байта с наименьшим адресом.

 

 

А А+1 А+2 А+3
31 24 23 16 15 8 7 0

 

Рис. 6. Представление двойного слова.

 

 

В системе команд микропроцессора 8086 имеются команды для работы с байтами, словами и двойными словами. Слова и двойные слова можно обрабатывать и побайтно.

Целые беззнаковые числа в памяти могут храниться в зависимости от их размера в виде байта, слова или двойного слова. Например, если для числа 99 отведен байт, то содержимым ячейки будет двоичное число 01100011 (63h), а если отведено слово, то оно будет иметь вид 00000000 01100011 (0063h). Поскольку в ячейке из k разрядов можно записать 2k различных кодовых комбинаций, то в виде байта можно представить целые от 0 до 255, в виде слова – целые от 0 до 65535, в виде двойного слова – целые от 0 до 4 294 967 295.

Операции сложения и вычитания многозначных чисел начинаются с действий над младшими цифрами, а затем постепенно переходят к более старшим цифрам. Поскольку в первых моделях микропроцессоров многозначное число нельзя было считывать из па­мяти целиком, то в первую очередь необходимо было считать байт младших цифр, а для этого требовалось, чтобы такой байт хранился в па­мяти первым. Поэтому числа разме­ром в слово и двойное слово хранятся в памяти в обратном порядке: старшие 8 битов размещаются во втором байте, младшие – в первом байте. Например, число 0062h хранится в памяти как показано на рис. 7.

 

 

A A+1

 

Рис. 7. Хранение числа 0062h.

 

 

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

Целые знаковые числа также представляются в виде байта, слова и двойного слова. Знаковые числа записываются в дополнительном коде: неотрицательное число записывается как беззнаковое, а отрицательное число х представляется беззнаковым числом:

 

 

 


Число k определяет количество разрядов в ячейке. Правило формирования дополнительного кода следующее: во всех разрядах, кроме знакового, формируется дополнение до 9 к цифрам разрядов, а затем прибавляется единица в младший разряд. Например, дополнительный код числа +99 – байт 63h или слово 0063h, а дополнительный код числа -99 – байт 9Dh или слово FF9Dh.

В дополнительном коде самый левый бит играет роль знакового. Для неотрицательных чисел этот разряд равен 0, для отрицательных – 1. Знаковые числа размером в слово и двойное слово записы­ваются в памяти также в обратном порядке. При этом знаковый бит оказывается во втором (правом) байте слова.

 

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

В двоично-десятичном коде(Binary Coded Decimal, BCD-числа) каждая цифра десятичного числа заменяется на тетрады(четверки битов от 0000 до 1001), обозначающие эту цифру в двоичной системе. Например, число 193 будет представлено как 0001 1001 0011. Двоично-десятичные числа не требуют перевода из десятичной системы, т.к. двоично-десятичное представление есть последовательность цифр числа.

Существует два способа представления двоично-десятичных чисел: упакованное и неупакованное. При упакованном формате каждый байт содержит две соседние цифры числа (при нечетном количестве цифр старшая половина последнего байта будет содержать ноль). При неупакованном формате в каждом байте размещается только по одной цифре, причем в младшей половине. Например, число 193 в упакованном виде будет храниться как 0000 0001 1001 0011, а в упакованном как 0000 0001 0000 1001 0000 0011.

Недостаток такого представления за­ключается в том, что имеющиеся команды позволяют выполнять арифмети­ческие операции только над однозначными двоично-десятичными числами, а операции над многозначными числами приходиться реализовывать программным способом. Однако операции над многозначными двоичными числами реализуются, как правило, аппаратно, а потому выполняются быстрее.

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

Представление символьных данных. Символьные данные хранятся в па­мяти в двоичном виде. Каждому символу ставится в соответствие неотрицательное число, называемое кодом символа. Соответствие между символами и их кодами называется системой кодировки.

Общеупотребительной является кодировка ASCII(American Standard Code for Information Interchange – американский стандартный код обмена информации), в которой на каждый символ отводится по одному байту, и кодировка UNICODEс двумя байтами на символ. Кодировка ASCII позволяет закодировать 256 различных символов, а UNICODE – 65536. В кодировке ASCII не предусмотрены коды для букв русского алфавита, поэтому используются варианты этой системы кодировки, например, «альтернативная кодировка ГОСТ».