- •Архитектура эвм
- •Введение
- •Структура мпс
- •Основные понятия в архитектуре мпс
- •Архитектура фон Неймана
- •Гарвардская архитектура
- •Параллельная архитектура
- •Конвейерная архитектура
- •Суперскалярная архитектура
- •АрхитектурыCisc
- •Архитектуры risc
- •Архитектуры misc
- •Ассемблеры
- •Программа Ассемблер
- •Язык Ассемблер
- •Основы 32-битного программирования в Windows
- •Api функции
- •Сообщения Windows
- •Версии ассемблеров
- •Среды разработки
- •Представление данных в эвм
- •Системы счисления и преобразования между ними
- •Форматы представления чисел
- •Форматы представления двоичных чисел
- •Формат с плавающей точкой
- •Типы адресаций операндов
- •Интерфейсы
- •Последовательный интерфейс rs-232c
- •Интерфейс параллельного порта
- •Инфракрасный интерфейс
- •Интерфейс Bluetooth
- •Интерфейс usb
- •Интерфейс ieee 1394 - FireWire
- •Сопроцессоры
- •Система прерываний и исключений
- •Интерфейс jtag
- •Символы и строки
- •Архитектура cisc от Intel
- •Введение
- •Микроархитектура Intel
- •Микроархитектура р6
- •Микроархитектура NetBurst
- •Микроархитектура Pentium 4
- •Микроархитектура Intel Pentium Mobile
- •Микроархитектура Intel Core
- •Микроархитектура Intel Core Duo
- •Микроархитектура Intel Nehalem
- •Адресация памяти в ia_32
- •Наборырегистров
- •Целочисленныйпроцессор
- •Регистры общего назначения (рон)
- •Регистры флагов eflags
- •Регистр указателя команд
- •Сегментные регистры
- •Управляющие регистры
- •Системные адресные регистры
- •Прямой и обратный порядок следования байтов
- •Виды адресации операндов в памяти
- •Цикл выполнения команды
- •Распределение адресного простраства
- •Образ программы в памяти.
- •Математический сопроцессор
- •Xmm технология
- •Система команд
- •Формат команды
- •Классификация команд
- •Целочисленный процессор
- •Команды общего назначения
- •Команды ввода-вывода
- •Инструкции работы со стеком
- •Арифметико-логические инструкции
- •Цепочечные операции
- •Команды управления
- •Команды поддержки языков высокого уровня
- •Команды прерываний
- •Команды синхронизации процессора
- •Команды обработки цепочки бит
- •Команды управления защитой
- •Команды обмена с управляющими регистрами
- •Команды идентификации и управления архитектурой
- •Управление кэшированием
- •Команды управления кэшированием
- •Сопроцессор с плавающей точкой
- •Классификация команд
- •Команды управления сопроцессором
- •Команды передачи данных
- •Команды сравнения данных
- •Арифметические команды
- •Трансцендентные функции
- •Целочисленное mmx расширение
- •Синтаксис ммх-команд
- •Классификация команд
- •Инициализация
- •Передача данных
- •Упаковка данных
- •Распаковка данных
- •Арифметика
- •Сравнения
- •Дополнительные команды
- •XmMрасширение с плавающей точкой
- •Типы данных
- •Передача данных
- •Арифметика
- •Сравнения
- •Преобразования
- •Управление состоянием
- •Распаковка данных
- •Управление кэшированием
- •Дополнительные команды
- •Цикл трансляции, компоновки и выполнения
- •Ассемблер cisc
- •Введение
- •Средства программирования и отладки
- •Описание masm
- •Структура программы на ассемблере
- •Типы данных
- •Макросредства
- •Директивы
- •Архитектура risc
- •Система команд
- •Архитектура misc
- •Архитектура vliw
- •Архитектура вычислительных систем со сверхдлинными командами
- •Архитектура ia-64
- •Многоядерные архитектуры
- •Микроконтроллер avr от Atmel
- •Архитектура avr от Atmel
- •Ассемблер
- •Команды ассемблера
- •Директивы ассемблера
- •Выражения
- •Микроконтроллеры c28x
- •Архитектура c28x
- •Архитектура f28x
- •Инструментальные средства разработки по
- •Ассемблер
- •Команды ассемблера
- •Формат объектного файла
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Архиватор
- •Абсолютный листер
- •Листер перекрестных ссылок
- •Утилита 16-ричного преобразования
- •Архитектура VelociTi
- •Структура и состав цсп с6x
- •Средства разработки цсп с6x
- •Ассемблер цсп с6x
- •Команды ассемблера
- •Выражения
- •Листинги
- •Листинги программ
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Утилиты
- •Поддержка в matlab
- •Введение
- •Встроенные платы для цсп ‘c6x
Представление данных в эвм
Системы счисления и преобразования между ними
Различные системы счисления отличаются не только базовым набором чисел, но и основными концепциями, которые лежат в их основе. Взять, например, систему счисления, которая использовалась древними римлянами: она довольно трудна для восприятия, в ней очень сложно производить вычисления и невозможно представить 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.