- •Глава 1. Предисловие Основные принципы построения вычислительных машин и систем
- •Пример современной многоуровневой вычислительной машины с шестью уровнями
- •Уровни детализации структуры вычислительной машины
- •Принципы построения вычислительной машины
- •Принцип двоичного кодирования
- •Принцип программного управления
- •Принцип однородности памяти
- •Принцип адресности
- •Структура фон-неймановской архитектуры вычислительной машины
- •Типы структур вычислительных машин и систем
- •Структуры вычислительных машин
- •Структуры вычислительных систем
- •Перспективы совершенствования архитектуры вм и вс
- •Технологические и экономические аспекты
- •Тенденции развития больших интегральных схем
- •Перспективные направления исследований в области архитектуры
- •Глава 2. Цифровой логический уровень
- •Представление информации в вычислительных системах
- •Представление числовых данных в вм.
- •Числа в форме с фиксированной точкой.
- •Числа в форме с плавающей точкой
- •Размещение числовых данных в памяти
- •Представление нечисловой информации в вм
- •Символьная информация
- •Видеоинформация
- •Аудиоинформация
- •Система кодирования чисел.
- •Прямой код.
- •Обратный код.
- •Модифицированные коды.
- •Код с исправлением ошибок
- •Коды Хемминга
- •Физическое представление информации в вм.
- •Вентили, интегральные схемы.
- •Основные элементы эвм
- •Триггер.
- •Сумматоры
- •Тактовые генераторы.
- •Микросхемы процессоров и шины
- •Микросхемы процессоров. Цоколевка типичного цп
- •Архитектура и набор команд.
- •Типы процессоров
- •Регистры процессора
- •Типы шин Системные шины. Локальные шины
- •Системные шины
- •Локальные шины
- •Иерархия шин
- •Вычислительная машина с одной шиной
- •Вычислительная машина с двумя видами шин.
- •Вычислительная машина с тремя видами шин
- •Арбитраж шин
- •Принципы работы шины
- •Глава 3 Функциональная организация фон - неймановской вычислительной машины
- •Функциональная схема фон-неймановской вычислительной машины
- •Узлы уу
- •Узлы алу
- •Основная память.
- •Модуль ввода/вывода
- •Цикл команды.
- •Пример выполнения программы.
- •Система прерываний.
- •Глава 4. Память.
- •Организация памяти.
- •Основные принципы.
- •Основные технические характеристики зу.
- •Иерархическая структура памяти.
- •Основная память.
- •Классификация устройств основной памяти.
- •Блочная организация основной памяти
- •Организация микросхем памяти
- •Режимы работы памяти.
- •Основные запоминающие устройства
- •Стековая память
- •Ассоциативная память
- •Полностью ассоциативная кэш-память.
- •Постоянное запоминающее устройство
- •Виртуальная память
- •Понятие виртуальной памяти
- •Страничная организация памяти
- •Сегментно-страничная организация памяти.
- •Внешняя память
- •Магнитные диски
- •Оптическая память
- •Магнитные ленты
- •Глава 5 Язык Ассемблер
- •Структура программы на языке Ассемблер
- •Основные типы операндов
- •Типы операторов
- •Режимы адресации
- •Директивы ассемблера
- •Инструкции пересылки данных и двоичной арифметики
- •Запись программ на языке Ассемблер
- •Пример вычисления арифметического выражения
- •Циклические и разветвляющиеся программы
- •Примеры использования операторов переходов и цикла при работе с массивами чисел
- •Применение логических инструкций
- •Логические инструкции
- •Примеры использования логических команд
- •Пример выполнения работы
- •Обработка символьной информации с помощью функций dos
- •Программные прерывания и системные вызовы
- •Описание функций работы с клавиатурой и дисплеем диспетчера функций ms dos
- •Функции 01н
- •Функции 02н
- •Функция 09н
- •Функция оан
- •Функция 0Bh
- •Пример выполнения работы
- •Глава 6 Типы вычислительных систем и их архитектурные особенности
- •Классификация вычислительных платформ и архитектур
- •Классификация Флинна.
- •Классификация Хокни
- •Классификация Хэндлера
- •Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд
- •Конвейеры
- •6.2.2 Суперскалярная архитектура.
- •Мультипроцессоры с памятью совместного использования.
- •Основные классы вс
- •Машины класса simd
- •Машины класса mimd
- •Основные направления развитие архитектуры вычислительных машин
- •Суперспекулятивная архитектура
- •Трассирующая архитектура
- •Многопотоковый процессор
- •Многоядерная архитектура
- •«Плиточная» архитектура
- •Многоэтажная архитектура
- •Оптическая (фотонная) архитектура
- •Квантовая архитектура
- •Нейроархитектура
Основные типы операндов
Постоянные или непосредственные операнды — число, строка, имя или выражение, имеющие некоторое фиксированное значение. Имя не должно быть перемещаемым, то есть зависеть от адреса загрузки программы в память. К примеру, оно может быть определено операторами equ или =.
num equ 5
imd = num-2
mov al,num ;эквивалентно mov al,5
;5 здесь непосредственный операнд
add [si],imd ; imd=3 - непосредственный операнд
mov al,5 ;5 - непосредственный операнд
Адресные операнды — задают физическое расположение операнда в памяти с помощью указания двух составляющих адреса: сегмента и смещения
mov ax,0000h
mov ds,ax ; ds – регистр сегмента данных
mov ax,ds:0000h ;записать слово в ax из области памяти
; по физическому адресу 0000:0000
Счетчик адреса — специфический вид операнда. Он обозначается знаком $. Транслятор подставляет вместо него текущее значение счетчика адреса.
jmp $+3 ; безусловный переход на команду mov
; команда jmp занимает 2 байта.
cld ; длина команды cld составляет 1 байт
mov al,1
Регистровый операнд — это просто имя регистра. В программе на ассемблере можно использовать имена всех регистров общего назначения и большинства системных регистров.
mov al,4 ;константу 4 заносим в регистр al
mov dl,pass+4 ;байт по адресу pass+4 в регистр dl
add al,dl ;команда с регистровыми операндами
В более общем случае операнды могут входить как составные части в более сложные образования, называемые выражениями.
Типы операторов
Возможные типы операторов ассемблера и синтаксические правила формирования выражений ассемблера.
арифметические операторы;
операторы сдвига;
операторы сравнения;
логические операторы;
индексный оператор;
оператор переопределения типа;
оператор переопределения сегмента;
оператор именования типа структуры;
оператор получения сегментной составляющей адреса выражения;
оператор получения смещения выражения.
Краткая характеристика операторов:
Арифметические операторы. К ним относятся: унарные «+» и «–», бинарные «+» и «–», умножения «*», целочисленного деления «/», получения остатка от деления «mod».
Эти операторы расположены на уровнях приоритета 6, 7, 8,
tab_size equ 50 ;размер массива в байтах
size_el equ 2 ;размер элементов
;вычисляется число элементов массива и заносится в регистр cx
mov cx,tab_size / size_el ;оператор «/»
Операторы сдвига выполняют сдвиг выражения на указанное количество разрядов
mask_b equ 10111011 ;исходное состояние маски
mov al,mask_b shr 3 ;al=00010111
Логические операторы выполняют над выражениями побитовые операции. Выражения должны быть абсолютными, то есть такими, численное значение которых может быть вычислено транслятором.
flags equ 10010011
mov al,flags xor 01h ;al=10010010
;пересылка в al поля flags с инвертированным правым битом
Индексный оператор [ ] - транслятор их наличие воспринимает как указание сложить значение выражение_1 за этими скобками с выражение_2, заключенным в скобки (<выражение_1 >[<выражение_2>]).
mov ax, mas[si] ;пересылка слова по адресу mas+(si) в регистр ax
Оператор получения смещения выражения offset позволяет получить значение смещения выражения в байтах относительно начала того сегмента, в котором выражение определено
.data ;сегмент данных
pole dw 5
...
.code ;сегмент программы
...
mov ax, seg pole
mov es, ax
Операторы сравнения (возвращают значение “истина” или “ложь”) предназначены для формирования логических выражений. Логическое значение “истина” соответствует цифровой единице, а “ложь” — нулю.
tab_size equ 30 ;размер таблицы
…
mov al,tab_size ge 50 ;загрузка размера таблицы в al
cmp al,0 ;если tab_size < 50, то
je m1 ;переход на m1
…
m1: …
Если значение tab_size больше или равно 50, то результат в al равен 0ffh, а если tab_size меньше 50, то al равно 00h. Команда cmp сравнивает значение al с нулем и устанавливает соответствующие флаги в flags/eflags. Команда je на основе анализа этих флагов передает или не передает управление на метку m1.
CMP – сравнивает два операнда путем вычитания второго операнда из первого. Значения операндов при этом не меняются. Используется для дальнейшего анализа командой условного перехода.
1-ый операнд = Рг или переменная, 2-ой операнд = число, Рг или переменная (cmp ax,bx; cmp ax,3; cmp d,ax).
Оператор переопределения типа ptr применяется для переопределения или уточнения типа метки или переменной, определяемых выражением. Тип может принимать одно из следующих значений: byte, word, dword, qword, tbyte, near, far.
d_wrd dd 0
...
mov al, byte ptr d_wrd+1 ;пересылка второго байта из двойного слова
Переменная d_wrd имеет тип двойного слова. Если возникнет необходимость обращения не ко всей переменной, а только к одному из входящих в нее байтов (например, ко второму), то при использовании команды mov al,d_wrd+1 транслятор выдаст сообщение о несовпадении типов операндов. Оператор ptr позволяет непосредственно в команде переопределить тип и выполнить команду.
Оператор переопределения сегмента : (двоеточие) заставляет вычислять физический адрес относительно конкретно задаваемой сегментной составляющей: «имя сегментного регистра», «имя сегмента» из соответствующей директивы SEGMENT или «имя группы». Микропроцессор на аппаратном уровне поддерживает три типа сегментов — кода, стека и данных. Для выборки на выполнение очередной команды микропроцессор должен обязательно посмотреть содержимое сегментного регистра cs и только его. В этом регистре содержится (пока еще не сдвинутый) физический адрес начала сегмента команд. Для получения адреса конкретной команды микропроцессору остается умножить содержимое cs на 16 (что означает сдвиг на четыре разряда) и сложить полученное 20-разрядное число с относительным (математическим) адресом.
