- •Глава 1 позиционные системы счисления
- •Глава 2. Формат представления базовых данных
- •2. А положительное, b отрицательное и по абсолютной величине больше, чем а.
- •3. А положительное, b отрицательное и по абсолютной величине меньше, чем а.
- •4. А и в отрицательные.
- •Глава 2. Логические основы piCmicro
- •Элемент не
- •Элемент и
- •Элемент Исключающее или
- •Элемент или
- •Логические элементы в интегральном исполнении
- •Глава 3. Комбинационные устройства
- •Дешифраторы
- •Шифраторы
- •Мультиплексоры
- •Преобразователи кодов.
- •Сумматоры
- •Глава 4. Последовательностные устройства
- •Параллельные регистры
- •Последовательные (сдвиговые) регистры
- •Блок обработки информации алу/рабочий регистр
- •Счетчики импульсов
- •Глава 5. Запоминающие устройства Иерархия запоминающих устройств эвм
- •Иерархическая структура памяти
- •Структурная схема зу
- •Типы оперативных запоминающих устройств
- •Основные параметры запоминающих устройств
- •Микросхемы озу
- •Постоянные запоминающие устройства (пзу)
- •Флэш-память
- •Глава 6. Обработка хранимой программы
- •Режимы адресации
- •Устройство управления
- •Микроконтроллерная система
- •Глава 5. Архитектура микроконтроллера семейства p1c.
- •Регистр слова состояния status
- •Память данных
- •Параллельные порты ввода/вывода
- •Регистр таймера/счетчика tmr0
- •Eeprom память данных eedata, eeadr
- •Специальные регистры w, intcon, option
- •Глава 6. Требования языка ассемблер
- •Операнд
- •Комментарии в программах на ассемблере
- •Метка/Имя
- •Формат кодирования
- •Глава 7. Набор команд pic контроллера
- •Сложение
- •Очистка
- •Команды инкрементирования и декрементирования
- •Бит ориентированные команды
- •Вычитание
- •Глава 8. Логика и организация программ
- •Последовательное выполнение команд
- •Конструкция выбор пути
- •Команды передачи управления. Команда «нет операции»
- •Команда безусловного перехода
- •Команды условного перехода
- •Конструкция цикл
- •Косвенная адресация памяти данных
- •Глава 9. Модульное программирование
- •Временная задержка малой длительности.
- •Метод вложенных циклов
- •Временная задержка длительностью 1с.
- •10. Организация связи с оператором
Глава 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
Если результат какой-то операции выйдет за пределы диапазона представления чисел, то случится переполнение и результат будет некорректным. (Например, при сложении двух положительных чисел, можно получить отрицательное число!) Поэтому нужно быть внимательным при программировании и предусмотреть обработку таких ситуаций, если они могут возникнуть.
Арифметические операции с двоичными числами
Микрокомпьютер выполняет арифметические действия только в двоичном формате. Поэтому программист на языке ассемблера должен быть знаком с двоичным сложением:
А и В – положительные.
При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю.
Пример:
Получен правильный результат.
