Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системное программирование.doc
Скачиваний:
179
Добавлен:
19.03.2015
Размер:
1.96 Mб
Скачать

Контрольные вопросы

  1. Что такое машинный язык?

  2. Какие существуют разновидности трансляторов?

  3. Какая область применения языков низкого и высокого уровня?

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

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

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

7

6

5

4

3

2

1

0

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

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

А

А+1

15 8

7 0

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

Двойным словом(DoubleWord) обозначают четыре смежных байта или два смежных слова. Размер двойного слова составляет 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

62

00

Рис. 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 не предусмотрены коды для букв русского алфавита, поэтому используются варианты этой системы кодировки, например, «альтернативная кодировка ГОСТ».