
- •Содержание
- •1. Введение
- •2. Представление информации в эвм
- •2.1. Системы счисления
- •2.1.1. Основные понятия
- •2.1.2. Системы счисления, используемые в вычислительной технике
- •2.1.3. Перевод чисел из одной системы счисления в другую
- •2.2. Типы данных
- •2.2.1. Типы данных, используемых в эвм
- •2.2.2. Константы
- •2.2.3. Логические величины
- •2.2.4. Символьные величины
- •2.2.5. Целые числа
- •2.2.6. Вещественные числа
- •2.3. Форматы команд
- •3. Основы построения эвм
- •3.1. Немного истории
- •3.2. Особенности архитектуры современной вычислительной машины
- •3.2.1. Основные понятия
- •3.2.2. Структурная организация машины
- •3.3. Вариант структуры микроЭвм
- •3.3.1. Общая структура машины
- •3.3.2. Процессор
- •3.3.3. Оперативная память
- •3.3.4. Системная память
- •3.3.5. Система адресации
- •3.3.6. Виртуальная память
- •3.3.7. Таймер
- •3.3.8. Внешние устройства
- •3.3.9. Принципы обмена информацией с внешними устройствами
- •Некоторые вопросы программного обеспечения
- •4.1. О программном обеспечении
- •4.2. Процесс компиляции
- •4.3. Компиляция с языка Ассемблера
- •5. Особенности архитектуры эвм типа ibm-рс
- •5.1. Введение
- •5.2. Исторический обзор процессоров клона 80х86
- •5.3. Классификация процессоров Intel 80х86
- •5.4. Особенности периферийных устройств ibm-pc
- •5.5. Характеристики компьютера
- •5.6. Сегментная адресация
- •5.7. Особенности распределения адресного пространства в компьютерах ibm-pc
- •5.7.1. Стандартная оперативная память (Conventional memory)
- •5.7.2. Область верхней памяти (Upper Memory Area ‑ uma)
- •5.7.3. Область высшей памяти (High Memory Area ‑ hma)
- •5.7.4. Расширенная память (eXtended Memory Specification — xms)
- •5.7.5. Дополнительная память (Expanded Memory Specification — ems)
- •5.8. Обмен информацией с периферийными устройствами
- •5.8.1. Порты ввода/вывода
- •5.8.2. Использование адресного пространства памяти
- •5.8.3. Прямой доступ к памяти
- •5.9. Прерывания
- •5.10. Начальный запуск эвм
- •5.11. Регистры процессора
- •5.11.1. Регистры общего назначения
- •5.11.2. Указатель инструкций
- •5.11.3. Регистр флагов и управляющие регистры
- •5.11.4. Регистры сегментов и селекторов
- •5.11.5. Системные адресные регистры
- •5.11.6. Регистры отладки
- •5.11.7. Регистры тестирования и модельно-специфические регистры
- •6. Debug — средство непосредственной коррекции и отладки загрузочного кода программ
- •6.1. Введение
- •6.1.1. Команды без аргумента
- •Input I порт
- •6.1.2. Команды обращения к ячейкам
- •15D0:010c bfffff mov di,ffff
- •15D0:010f 57 push di
- •6.1.3. Команды запуска программы
- •6.1.4. Команды просмотра и модификации регистров
- •7. Методы адресации
- •7.1. Введение
- •7.2. Регистровый метод адресации
- •159B:0101 1e push ds
- •159B:0101 1e push ds
- •159B:0101 1e push ds
- •7.3. Непосредственный метод адресации
- •7.4. Прямая адресация
- •7.5. Косвенная регистровая адресация
- •159B:0100 not word ptr [bx]
- •159B:0102 e000 loopnz 0104
- •7.6. Адресация по базе
- •7.7. Косвенная регистровая адресация с индексированием
- •159B:0102 0e push cs
- •7.8. Адресация по базе с индексированием
- •7.9. Относительная адресация
- •7.10. Косвенная регистровая адресация с масштабированием
- •7.11. Адресация по базе с индексированием и масштабированием
- •8. Синтаксис ассемблера
- •8.1. Директивы определения данных
- •8.1.1. Определение переменных
- •Cимвольные строки
- •Числовые данные
- •Примеры:
- •8.2. Выражения
- •8.3. Непосредственные операнды
- •8.4. Структуры
- •8.5. Сегменты
- •8.6. Модели памяти и упрощенные директивы определения сегментов
- •8.7. Упрощенные директивы описания сегментов
- •8.8. Создание программы на ассемблере
- •8.9. Получение выполняемого файла
- •9. Система команд
- •9.1. Классификация команд по операндам
- •9.2. Классификация команд по действию
- •9.2.1. Команды пересылки данных
- •9.2.2. Арифметические команды
- •8.2.3. Команды манипуляции битами
- •9.2.4. Управление центральным процессором
- •9.2.4. Команды передачи управления
- •Iret, iretd
- •9.3. Краткий список команд с используемыми операндами
- •9.3.1. Условные обозначения:
- •9.3.2. Инструкции пересылки данных
- •9.3.3. Арифметические, логические и инструкции сдвига
- •9.3.4. Инструкции обработки строк
- •9.3.5. Инструкции передачи управления
- •9.3.6. Инструкции управления процессором
- •Литература
Какую работу нужно написать?
2.2.4. Символьные величины
Символьные величины представляются, как правило, в виде одного байта. Под символами будем понимать любые знаки, имеющиеся в знакогенераторе устройства визуального вывода. Представление информации в виде символов обеспечивают программы, условно делящиеся на два вида.
Программы, использующие аппаратный знакогенератор: в этом случае символ представляется в виде одного байта, а его начертание зависит от содержимого ОЗУ знакогенератора и в ряде случаев может быть изменено программно.
Как правило, такие программы используют «Американский стандартный код» ASCII. Однако существует его русифицированный вариант, отличающийся наличием кириллицы вместо ряда редко используемых символов, называемый «расширенный ASCII». Программы, использующие аппаратный знакогенератор проще в написании, однако, вынуждены использовать ограниченный набор символов (не больше 512 различных знаков одновременно) и в ряде случаев вынуждены использовать заранее заданный и неизменный их набор, как например, у видеокарты VGA. Однако для большинства программ этих возможностей хватает. Примеры таких пакетов программ: MS DOS, Norton Commander.
Программы, функционирующие независимо от знакогенератора (представление символа и его начертание в этом случае зависит от управляющей программы). Этот случай используется в программах, критичных к виду символов: текстовых процессорах, проблемно-ориентированных пакетах, играх, так как допускает теоретически бесконечное количество вариантов шрифтов и т. д. Примеры: ChiWriter, WinWord, Civilization.
К символам, как правило, относятся буквы, цифры (машина не воспринимает их числовое значение в этом случае) и любые символы, имеющиеся на устройстве подготовки данных.
2.2.5. Целые числа
Величина разрядной сетки определяет возможности машины как с точки зрения точности вычислений, так и с точки зрения удобства программирования и быстродействия. Действительно, для n-разрядной машины максимальное число, записанное без знака, составит 2 n -1. Для n=16 диапазон целых чисел без знака составит [0, 216 -1] или [0, 65535].
Если один разряд (пятнадцатый) оставить под индикацию знака, то диапазон целых чисел со знаком составит [-215 , +215 -1] или [-32768, +32767].
Во многих задачах требуется большая точность, поэтому многие приложения на программном уровне оперируют с числами, хранящимися в 2-х (двойное слово), 4-х и более словах.
Однако в ряде задач не требуется высокой точности измерения данных. В этом случае машина имеет аппаратную возможность работать с байтами, диапазон чисел представленных байтом без знака составит [0, 28-1] или [0, 255]. Знаковый разряд — 15-ый у старшего байта и 7-ой у младшего, диапазон со знаком составит [-128, +127].
Машина может работать с числами в прямом, обратном и дополнительном кодах. Внутреннее представление чисел — двоичная система, причем старший разряд (слова или байта) — знаковый.
Знаковый разряд может принимать значения 0 или 1, причем 0 соответствует знаку «+», а 1 - знаку «-».
Введем понятие обратного и дополнительного кодов. В двоичной системе обратный код n-разрядного числа получают путем поразрядного инвертирования. Для прямого X и обратного Xобр кода в любой позиционной системе счисления справедливо
X+ Xобр =Qn- 1, (2.7)
где Q — основание системы. Из (2.7) следует, что для любого одноразрядного числа X будет справедливо
X + X = Z,
где Z — максимальная базисная цифра.
Так например, для двоичной системы Z = 1, для шестнадцатеричной Z = F. Это правило можно распространить на инвертирование n-разрядного числа любой позиционной системы счисления:
сумма каждого разряда прямого и обратного кода числа дает максимальную базисную цифру.
Примеры.
X = +10111001(2) +326(8) +1AF3(16)
Xобр = 01000110 451 E50C
11111111(2) 777(8) FFFF(16)
Дополнительный код n-разрядного числа в системе с основанием Q представляет собой дополнение данного числа до Q в степени n:
X + Xдоп = Qn . (2.8)
Примеры.
X = +10111001(2) +326(8) +1AF3(16)
Xдоп = 01000111 452 E50D
1 00000000(2) 1 000(8) 1 0000(16)
Можно сформулировать следующее правило:
для n-разрядного числа сумма прямого и дополнительного кода в каждом из n разрядов дает 0.
Из уравнений (2.7) и (2.8) можно сделать заключение о связи между обратным и дополнительным кодами числа Х:
Xдоп – Xобр = 1.
Для ЭВМ с заданным размером слова (n разрядов) выражение (2.8) принимает вид X + Xдоп = 0, так как разряд 2 n не умещается в разрядную сетку машинного слова.
Рассмотрим пример сложения чисел в прямом и дополнительном кодах с учетом знака.
Х= 6(8)= 0 110(2)
+ +
Хдоп = 1 010
0 0 000(2)
Отсюда следует, что взятие дополнительного кода эквивалентно изменению знака исходного числа в машине с ограниченной разрядной сеткой.