Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PIC микроконтроллеры.docx
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
22 Мб
Скачать
☆

Глава 2. Формат представления базовых данных

Персональный компьютер работает с с большим количеством разнообразных данных, имеющих определенный формат, определяемый размером ячейки (количество бит). где данное хранится и способом его представления. Базовый набор команд и данных для IBM PC образует 16ти разрядную платформу

Любая величина, видимая программе, имеет тип и должна быть соответствующим образом описана. Займемся для начала простыми типами данных: символы, ВСD-кодированные, целые и вещественные числа.

Символы - ASCII код

Среди буквенно-цифровых (символьных) кодов преобладает код АSСII (American National Standard Code for Information Interchange), который применяется почти всеми производителями компьютеров. На Рис. 1.1 показано кодирование символов в коде АSCII. Символьные коды являются основным средством осуществления ввода-вывода при взаимодействии с «внешним миром».

Удар по клавише "Е"

Рис. 2.1. Передача в компьютер АSCII символов

Как показано на Рис.2.1., при нажатии клавиши на терминале производится формирование и передача в компьютер соответствующего кода ASCII.

Если же компьютер посылает в терминал двоичную цепочку кода АSCII, терминал должен дешифрировать эти биты и отреагировать соответствующим образом. Отметим, что печатаются не все символы кода АSCII; некоторые из них осуществляют возврат на шаг, пробел, перевод строки, возврат каретки и т. д. Кроме печатных и управляющих символов, в коде АSCII имеются такие символы, как ЕОF (конец файла) и ЕОТ (конец передачи), которые служат маркерами при передаче и хранении данных. Например, символьная цепочка

DОЕ,

JOHN Р.—50

соответствует следующей цепочке двоичных комбинаций (даются в 16-ричной записи):

В озврат каретки Перевод строки Пробел

44 4F 45 2С 0D 0А 4А 4F 48 4Е 20 50 2Е 2D 35 30

DОЕ, JО НN Р.─50

Рис.2.2. Код ASCII

Двоичная комбинация, состоящая из нулей, называется пустым символом и не вызывает никаких действий. Она применяется в основном для выделения времени на возврат каретки или перевод строки в механическом терминале. Число бит, которое необходимо в коде для представления символа, называется длиной. Код длиной п допускает идентификацию 2п символов, из Рис. 2.1 видно, что код АSCII является 7-битным и содержит 128 символов. Кроме 7 бит собственно кода, обычно к каждому символу в качестве старшего бита присоединяется бит паритета, поэтому в передаче участвуют 8 бит. Обычно в компьютере дополнительный бит после приема символа сохраняется, но устанавливается равным нулю. Следовательно, символы в компьютере хранятся в виде 8-битных групп.

Численная последовательность символов в коде называется сравнительной последовательностью кода. Важно, что числа, представляющие собой цифры, следуют в возрастающем порядке, так как при зтом для сравнения значений применимы арифметические действия непосредственно над кодовыми числами. Кроме того, когда числа, ассоциируемые с буквами, следуют в возрастающем порядке, для алфавитного упорядочивания символьных цепочек можно воспользоваться арифметическими операциями. Числа передаются в (из) компьютер (а) в виде последовательностей цифр, представленных в коде АSCII. Например, 7902 передается как

37 39 30 32

Двоично-кодированный десятичный формат

В двоично-кодированном десятичном формате (или ВСD-формате) десятичные цифры хранятся в виде 4-битных двоичных эквивалентов. Имеются две основные разновидности этого формата: упакованный и неупакованный.

В упакованном ВСD-формате цепочка десятичных цифр хранится в виде последовательности 4-битных групп, например число 9502 будет храниться в виде

1001 0101 0000 0010

В неупакованном ВСD-формате каждая цифра находится в младшей тетраде 8-битной группы, а содержимое старшей тетрады несущественно. Число 9502 будет храниться в виде

uuuu1001 ииии 0101 ииии0000 ииии0010

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

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

Неупакованные ВСD-числа не требуется преобразовывать для операций ввода-вывода, но они занимают в памяти больше места. Беззнаковое целое число 7902 требует 32 бита памяти в неупакованном ВСD-формате, 16 бит в упакованном и всего 13 бит в двоичном. Кроме того, компьютер выполняет арифметические операции с числами в двоичном формате быстрее, чем в ВСD-формате.

Целые числа без знака

Для 16ти разрядной платформы целые числа без знака – это ПОЛОЖИТЕЛЬНЫЕ числа (или ноль) и могут занимать 8 или 16 бит памяти ЭВМ. Считается, что бит 0 – младший и расположен крайним СПРАВА. Старший бит 7 (15) расположен крайним СЛЕВА. Все биты считаются информационными.

Информационное поле числа (0,1)

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Старший

Биты

Младший

Рис. 2.3. 16-ти разрядное представление целого числа

В каком формате можно представить десятичное целое число 40 000 (сколько потребуется бит и как будет размещено в памяти)?

Решение. 40 000d→1001 1100 0100 0000b→9C40h с использованием инженерного калькулятора

Для хранения числа потребуется 16 разрядов или две ячейки памяти ЭВМ, в которых число будет храниться в обратной последовательности: 409Сh .

Целые числа со знаком

Целые знаковые данные могут быть, во-первых. как ПОЛОЖИТЕЛНЫМИ, так и ОТРИЦАТЕЛЬНЫМИ, включая НОЛЬ, а во вторых, они по диапазону допустимых значений в два раза меньше беззнаковых (для положительных значений).

Это происходит потому, что не вся область отводится под информацию, как было с беззнаковыми данными. Старший бит всегда отводится под знак. Он называется бит S–Signum

S=0 – для положительных чисел;

S=1 – для отрицательных чисел

Информационное поле числа (0,1)

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Знак

Биты

Младший

Рис. 2.4. 16-ти разрядное представление целого числа со знаком

Отрицательные двоичные числа содержат единичный бит в старшем разряде и выражаются двоичным дополнением. Т.е., для представления отрицательного двоичного числа необходимо инвертировать все биты и прибавить 1.

Рассмотрим пример:

Число 10: 01010

Инверсия: 10101

Плюс 1: 1

10110 (равно -10)

Фактически двоичное число считается отрицательным, если его старший бит равен 1. Для определения абсолютного значения отрицательного двоичного числа, необходимо повторить предыдущие операции: инвертировать все биты и прибавить 1:

Двоичное значение: 10110 Сумма +10 и –10 должна составить ноль:

Инверсия: 01001 01010 (+10)

Плюс 1 1 10110 (-10)

01010 (равно +10) (1) 00000

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

Диапазоны значений чисел со знаком и без

При программировании на ассемблере (как, впрочем, и на многих других языках) необходимо учитывать ещё один важный момент. А именно — ограничение диапазона представления чисел. Например, если размер беззнаковой переменной равен 1 байт, то она может принимать всего 256 различных значений. Это означает, что мы не сможем представить с её помощью число, больше 255 (111111112). Для такой же переменной со знаком максимальным значением будет 127 (011111112), а минимальным -128 (100000002). Аналогично определяется диапазон для 2- и 4-байтных переменных.

Размер переменной

Число без знака

Число со знаком

min

max

min

max

байт

00000000

11111111

10000000

01111111

0

255

-128

127

слово

00000000 00000000

11111111 11111111

10000000 00000000

01111111 11111111

0

65 535

-32 768

32 767

0

4 294 967 295

-2 147 483 648

2 147 483 647

Если результат какой-то операции выйдет за пределы диапазона представления чисел, то случится переполнение и результат будет некорректным. (Например, при сложении двух положительных чисел, можно получить отрицательное число!) Поэтому нужно быть внимательным при программировании и предусмотреть обработку таких ситуаций, если они могут возникнуть.

Арифметические операции с двоичными числами

Микрокомпьютер выполняет арифметические действия только в двоичном формате. Поэтому программист на языке ассемблера должен быть знаком с двоичным сложением:

  1. А и В – положительные.

При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю.

Пример:

Получен правильный результат.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]