- •1.Архитектура эвм
- •1.1.Структура мпс
- •1.2.Основные понятия в архитектуре мпс
- •1.3.Архитектура фон Неймана
- •1.4.Гарвардская архитектура
- •1.5.Параллельная архитектура
- •1.6.Конвейерная архитектура
- •1.7.Суперскалярная архитектура
- •1.8.Архитектура vliw
- •1.9.Архитектуры cisc, risc
- •2.Ассемблеры
- •2.1.1.Программа Ассемблер
- •2.1.2.Язык Ассемблер
- •2.1.3.Основы 32-битного программирования в Windows
- •2.1.4.Api функции
- •2.2.Сообщения Windows
- •2.3.Версии ассемблеров
- •2.4.Среды разработки
- •3.Представление данных в эвм
- •3.1.Системы счисления и преобразования между ними
- •3.2.Форматы представления чисел
- •3.2.1.Форматы представления двоичных чисел
- •3.2.2.Формат с плавающей точкой
- •3.3.Типы адресаций операндов
- •3.4.Интерфейсы
- •3.4.1.Последовательный интерфейс rs-232c
- •3.4.2.Интерфейс параллельного порта
- •3.4.3.Инфракрасный интерфейс
- •3.4.4.Интерфейс Bluetooth
- •3.4.5.Интерфейс usb
- •3.4.6.Интерфейс ieee 1394 - FireWire
- •3.4.7.Сопроцессоры
- •3.4.8.Система прерываний и исключений
- •3.4.9.Интерфейс jtag
3.Представление данных в эвм
3.1.Системы счисления и преобразования между ними
Различные системы счисления отличаются не только базовым набором чисел, но и основными концепциями, которые лежат в их основе. Взять, например, систему счисления, которая использовалась древними римлянами: она довольно трудна для восприятия, в ней очень сложно производить вычисления и невозможно представить 0. Данная система неудобна даже для человека, не говоря уж о том, чтобы научить компьютер «понимать» ее. Говорят, что римским коммерсантам не был нужун 0 и отрицательные числа, так как они манипулировали числом «штук».
Десятичные числа
Десятичная система, которую мы используем всю жизнь, относится к классу так называемых позиционных систем, в которых число А может быть представлено в виде:
A = An * Zn + An-1*Zn-1 + … + A1*Z1 +A0*Z0
Здесь:
An - цифры числа
Z - основание системы счисления
Например, десятичное число 1234 можно представить так:
1234 = 1*103 + 2*102 + 3*102 + 4*100.
«Вес» каждой цифры определяется позицией цифры в числе и равен степени основания, соответствующей ее позиции. Позиции нумеруются слева, начиная с 0.
Двоичные числа
При работе с различными системами счисления мы будем записывать само число в скобках, а за скобками — основание системы. Например, если написать просто число 1100, то не понятно, в какой системе оно записано — это может быть одна тысяча сто, а может быть 12, если число записано в двоичной системе. А если представить число в виде (1100)2, то сразу все становится на свои места: число записано в двоичной системе.
Двоичная система тоже позиционная, поэтому, например, число 1100 в двоичной системе мы можем представить так:
(1100)2 = 1*23 + 1*22 + 0*21 + 0*20 = 4 + 8 =(12)10.
Обратите внимание, что для представления числа 12 в двоичной системе использованы только 4 разряда. Наибольшее число, которое можно записать 4 двоичными цифрами, равно 15, потому что
(1111)2 = 1*23 + 1*22 +1*21 + 1*20 = 8 + 4 + 2 + 1 = (15)10.
В программах двоичные числа завершаются суффиксом b. В примере это 1100b.
Для кодирования двоичных чисел применяют несколько кодов.:
Прямой код: 0 в старшем разряде соответствует положительным числам, 1 – отрицательным. Остальные разряды представляют модуль числа. В таком коде удобно осуществлять операции умножения (модули чисел перемножаются, а знаковые разряды складываются по модулю два), но неудобно реализовывать сложение. Примеры:
Разряды |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Число |
Биты |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
01100011b |
Число |
+ |
64=26 |
32=25 |
0 |
0 |
0 |
2=21 |
1=20 |
+99 = 64 + 32 +2 + 1 |
Биты |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
11100011b |
Число |
- |
64=26 |
32=25 |
0 |
0 |
0 |
2=21 |
1=20 |
-99 = -(64 + 32 +2 + 1) |
Дополнительный код: 0 в старшем разряде соответствует положительным числам, 1 – отрицательным. Дополнительный код положительного числа, есть само число. Дополнительный код отрицательного числа образуется путем инверсии всех битов положительного числа (включая знаковый) и прибавления 1. В дополнительном коде удобно выполнять операции сложения – числа со знаком складываются точно так же, как беззнаковые. Обратное преобразование производится точно по тому же правилу. Дополнительное преимущество дополнительного кода: +0 и -0 имеют одинаковый код 000b. Примеры:
Разряды |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Число |
Биты |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
01100011b |
Число |
+ |
64=26 |
32=25 |
0 |
0 |
0 |
2=21 |
1=20 |
+99 = 64 + 32 +2 + 1 |
Биты |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
10011101b |
Число |
- |
64=26 |
32=25 |
0 |
0 |
0 |
2=21 |
1=20 |
-99 = -(64 + 32 +2 + 1) |
Обратный код: 0 в старшем разряде соответствует положительным числам, 1 – отрицательным. Обратный код положительного числа, есть само число. Совпадает с прямым кодом. Обратный код отрицательного числа образуется путем вычитания символа каждого разряда (включая знаковый) из числа, на 1 меньшего основания системы счисления. Обратное преобразование производится точно по тому же правилу. Практически не применяется.
Смещенный код: 1 в старшем разряде соответствует положительным числам, 0 – отрицательным. Представления чисел получаются путем прибавления к ним константы 2N–1, где N – число двоичных разрядов (не считая знакового). Применяется для кодирования вещественных чисел (с дробной частью) в формате с плавающей точкой.
8-ричные чила
Двоичная система счисления, в которой работают все цифровые электронные устройства, неудобна для человека. Для удобства представления двоичного содержимого ячеек памяти или регистров процессора используется позиционая 8-ричная система счисления. Ее алфавит состоит из 8 арабских цифр от 0 до 7. Пример 8-ричного числа:
(247)8 = 2*82 + 4*81 + 7*80 = 128 + 32 + 7 = 167.
В программах 8-ричные числа завершаются суффиксом o. В примере это 247o.
Переход от десятичных чисел к 8-ричным и обратно производится аналогично случаю двоичных чисел. Преобразование двоичных чисел в 8-ричные производится следующим образом:
Двоичное число, начиная с младших разрядов, разбивается на триады (тройки символов). Если длина числа не кратна трём, то оно дополняется старшими нулевыми разрядами.
Каждая триада записывается символами 8-ричного алфавита.
При обратном переходе каждый символ представляется 3-разрядным двоичном числом. Единая последовательность этих чисел и представляет собой искомое двоичное число.Знак 8-ричного числа отображается в старшем разряде: 0 соответствует положительному числу, 1 – отрицательному.
8-ричные числа сейчас почти не применяются, так как в большинстве процессоров адресуются байты, в котоых 8 позиций (не кратно 3).
16-ричные чила
Двоичная система счисления, в которой работают все цифровые электронные устройства, неудобна для человека. Для удобства представления двоичного содержимого ячеек памяти или регистров процессора используется позиционая 16-ричная система счисления. Ее алфавит состоит из 10 арабских цифр от 0 до 9 и шести латинских букв: A (вес 10), B (вес 11), C (вес 12), D (вес 13), (вес 14), F (вес 15). Пример 16-ричного числа:
(524D)16 = 5*163 + 2*162 + 4*161 + 13*160 = 20480 + 512 + 64 + 13 = 21069.
В программах 16-ричные числа завершаются суффиксом h. В примере это 524Dh.
То же самое число в двоичном представлении содержит в 4 раза больше символов – 0101 0010 0100 1101. !6-ричное представление более компактно.
Переход от десятичных чисел к 16-ричным и обратно производится аналогично случаю двоичных чисел. Преобразование двоичных чисел в 16-ричные производится следующим образом:
Двоичное число, начиная с младших разрядов, разбивается на тетрады (четвёрки символов). Если длина числа не кратна четырём, то оно дополняется старшими нулевыми разрядами.
Каждая тетрада записывается символами 16-ричного алфавита.
При обратном переходе каждый символ представляется 4-разрядным двоичном числом. Единая последовательность этих чисел и представляет собой искомое двоичное число.Знак 16-ричного числа отображается в старшем разряде: 0 соответствует положительному числу, 1 – отрицательному.
В программах 16-ричные эквиваленты сопровождаются суффиксом h.