
- •Программирование эвм
- •Int 21h ;кодом возврата 0 прерывания 21h
- •Работа с битами
- •Порядок выполнения работы
- •Устройства ввода-вывода
- •Ввод исходных данных с клавиатуры и вывод результатов на дисплей
- •Inc di ;смещение в видеопамяти на следующий символ
- •Порядок выполнения работы
- •Контрольные задания
- •Система команд процессора
- •Способы адресации
- •Влияние команд на регистр флагов
- •Расширенные регистры и типы данных процессоров x86
- •Система команд процессоров ia-32 и Intel 64
- •Int 21h ;системного прерывания 21h
- •Использование дальней подпрограммы
- •X dw 0aabBh, 0abbAh, 0baaBh, 0bbaAh ;исходные данные
- •Использование подпрограмм для ввода-вывода
- •Порядок выполнения работы
- •Контрольные задания
- •Дескрипторы
- •Порядок работы процессора в защищенном режиме
- •Использование дальней подпрограммы в защищенном режиме
- •Использование idt. Ввод данных с клавиатуры в защищенном режиме
- •Порядок выполнения работы
Работа с битами
В ассемблерных программах мы работаем на самом нижнем уровне не только в программно-аппаратном аспекте, но и в информационном. Здесь нет данных целого или символьного типа, а есть числа в дополнительном коде, размером в байт, слово, двойное слово и т. д. (Конечно, в математическом процессоре (FPU) или устройстве MMX имеются свои типы данных.) Кроме того, часто приходится работать с данными на уровне отдельных битов.
Следующий пример демонстрирует технику работы с битами. В современных процессорах используется следующий механизм передачи данных в память или устройства ввода-вывода. Допустим, в текущей транзакции по шине данных было выдано некоторое число. В следующей транзакции должно быть выдано другое число. Если это число отличается от предыдущего более чем половиной бит, то оно выдается в инвертированном виде, чтобы нужно было реально изменить состояние меньшего числа линий данных. О том, что число на шине данных инвертированное, свидетельствует специальный сигнал.
В следующем примере из области исходных данных читаются числа. Размер чисел — слово, 16 бит. Старший разряд — проверочный. Если он равен единице, то число инвертировано. В исходных данных в старшем разряде должен быть ноль. Если следующее число отличается от предыдущего восемью битами и более, то оно записывается в область результатов в инверсном виде.
В программе для определения значения очередного бита используется очень важный флаг процессора C — флаг переноса, который подробнее будет рассмотрен в дальнейшем.
;invert.asm
;инвертирование передаваемых данных, если в следующем слове
;больше половины бит изменилось
data segment
src dw 0111000111111111b
dw 0010100100000001b
res dw ?
data ends
code segment
assume cs:code, ds:data
begin: mov dx, data
mov ds, dx
mov cx, 0Fh ;счетчик цикла, число информационных битов
mov bx, 0 ;счетчик числа неравных битов
mov ax, src ;запись в AX первого числа
xor ax, src+2 ;исключительное ИЛИ первого и второго чисел
;цикл подсчета неравных битов
count: shr ax, 1 ;сдвиг AX на один бит вправо, младший бит в C
jnc next ;если C=0, к следующему витку цикла
inc bx ;если C0, инкремент счетчика неравных битов
next: loop count ;команда цикла, декремент CX и переход
;к следующему витку, пока CX0
mov ax, src+2 ;запись в аккумулятор второго числа
cmp bx, 8 ;число неравных битов больше 8-ми или меньше?
jl skip ;если меньше, инвертировать не надо
not ax ;если больше, число инвертируется
skip: mov res, ax
mov ax, 4C00h
int 21h
code ends
end begin
Порядок выполнения работы
Написать на языке ассемблера программу, выполняющую определенную задачу в соответствии с вариантом.
При помощи отладчика прогнать программу покомандно и после выполнения каждой команды фиксировать состояние аккумулятора, указателя команд, других регистров, задействованных в программе, ячеек памяти данных.
Результаты анализа работы программы оформить в виде таблицы. Последовательность строк в таблице должна соответствовать последовательности выполнения команд в период прогона программы, а не их последовательности в тексте программы. В строке, соответствующей данной команде, содержимое регистров и памяти должно быть таким, каким оно является после ее выполнения.
Проанализировать таблицу, выполнить необходимые сравнения, сделать выводы.
Общие признаки всех вариантов:
-
Два сегмента: сегмент данных и сегмент кода.
-
Исходные данные и результаты находятся в переменных (массивах), распределенных по обоим сегментам.
Частный признак — решаемая задача.
Сравнения:
-
Местонахождение операндов:
-
В памяти команд (в командах).
-
В памяти данных.
-
-
Местонахождение переменных:
-
В сегменте данных.
-
В сегменте кода.
-
Содержание отчета
-
Задание, конкретизированное вариантом.
-
Блок-схема алгоритма программы.
-
Листинг программы.
-
Таблица состояния системы после выполнения каждой команды программы. Формат таблицы — номер команды в последовательности выполнения, адрес команды, команда на машинном языке, команда на языке ассемблера, содержимое изменившихся регистров и ячеек памяти данных после выполнения данной команды.
-
Сравнения и выводы по результатам анализа таблицы и выполненным сравнениям.
Контрольные вопросы
-
Назовите возможные признаки компьютера не фон-неймановской архитектуры.
-
Возможные варианты реализации компьютера фон-неймановской архитектуры.
-
Альтернатива принципа хранимой программы.
-
Возможные варианты реализации принципа хранимой программы.
-
Преимущества и недостатки Принстонской и Гарвардской архитектур.
-
Варианты расположения данных программы. Какие из вариантов соответствуют переменным?
-
Варианты расположения переменных.
-
Совпадают ли понятия "память данных" и "сегмент данных"?
-
Минимальное множество регистров процессора компьютера фон-неймановской архитектуры.
-
Возможное множество регистров процессора компьютера не фон-неймановской архитектуры.
-
Общие признаки команд компьютера фон-неймановской архитектуры.
-
Частные признаки команд компьютера фон-неймановской архитектуры.
-
Возможные признаки команд компьютера не фон-неймановской архитектуры.
-
Скорость (степень, частота) изменения регистров процессора и областей памяти в зависимости и вне зависимости от специфики программы.
-
Как должен быть устроен компьютер, чтобы можно было обойтись без редактора, компилятора и компоновщика.
-
В каком порядке хранятся байты слова в памяти ЭВМ?
-
Минимальная и максимальная структура команды.
-
Является ли в общем случае зависимость между длиной команды и временем ее выполнения прямо пропорциональной?
-
Есть ли команды, у которых зависимость между длиной и временем выполнения прямо пропорциональна?
Контрольные задания
-
Определить длину данной команды.
-
Определить, какая информация содержится в данной команде.
-
Найти команды, при выполнении которых процессор производит определенное число обращений к памяти.
-
Найти команды, операнды которых находятся в регистрах процессора, в самих командах, в памяти данных.
Лабораторная работа №2. Взаимодействие процессора с памятью и устройствами ввода-вывода. Функционирование ЭВМ
Цель работы и рассматриваемые вопросы
Цель работы — изучение порядка функционирования ЭВМ, организации взаимодействия процессора с памятью и устройствами ввода-вывода.
Рассматриваемые вопросы:
-
Общая структура ЭВМ.
-
Порты ввода-вывода.
-
Контроллеры устройств ввода-вывода.
-
Дешифраторы.
-
Ресурсы устройств ввода-вывода.
-
Направления передачи информации в ЭВМ.
-
Информация, принимаемая процессором по шине данных.
-
Временные единицы функционирования процессора.
-
Характеристики и классификация запоминающих устройств.
-
Характеристики и классификация устройств ввода-вывода.
-
Классификация интерфейса процессора с устройствами ввода-вывода.
-
Ввод-вывод по прерыванию.
-
Ввод информации с клавиатуры.
-
Вывод информации на дисплей.
-
Таймер и встроенный динамик.
Вопросы с опережением:
-
Местонахождение операндов и способы адресации (ЛР3).
-
Влияние команд на флаги (ЛР3).
-
Типы данных (ЛР3).
-
Базовые и индексные регистры (ЛР3).
-
Сегментация, сегментные регистры (ЛР3, ЛР4).
Теоретическая информация
Общая структура и функционирование ЭВМ
Схема общей структуры ЭВМ. Шина данных, шина адреса, шина управления
В этой лабораторной работе необходимо представить структуру ЭВМ (рис.2) более детально по сравнению с рассмотренной ранее схемой архитектуры фон Неймана (рис.1). Тем не менее, эта схема также является достаточно общей. На ней не показаны многие устройства, входящие в состав большинства компьютеров.
Рис.2. Схема общей структуры ЭВМ
Здесь:
-
ЦП — центральный процессор (СРU, Central Processing Unit);
-
ШФ — шинный формирователь (в самом широком смысле этого слова);
-
ЗУ — запоминающее устройство (M, Memory);
-
ОЗУ — оперативное запоминающее устройство (RAM, Random Access Memory);
-
ПЗУ — постоянное запоминающее устройство (ROM, Read Only Memory);
-
В/В — ввод/вывод (I/O, Input/Output);
-
ВУ — внешнее устройство (устройство ввода-вывода), например, клавиатура, дисплей, датчики, исполнительные механизмы и т.п.;
-
ША — шина адреса (AB, Address Bus);
-
ШД — шина данных (DB, Data Bus);
-
ШУ — шина управления (CB, Control Bus);
-
ЧТЗУ (ВУ) — чтение ЗУ (ВУ) (R, RD — Read, RC — Receive);
-
ЗПЗУ (ВУ) — запись ЗУ (ВУ) (W, WR — Write, TR — Transmit);
-
ВМ — выбор микросхемы (CS, Crystal Select).
Элементы ЭВМ связаны между собой посредством сигнальных линий, которые объединяются в шины. В ЭВМ выделяется три типа шин:
-
шина данных;
-
шина адреса;
-
шина управления.
Ширина шины данных определяет максимальный размер операндов, которыми процессор может обмениваться с памятью или устройствами ввода-вывода за один раз, если они, конечно, не накладывают дополнительные ограничения.
Ширина шины адреса определяет размер адресного пространства:
AS = 2ABW,
где AS (Address Space) — размер адресного пространства;
ABW (Address Bus Wide) — ширина адресной шины.
Порты ввода-вывода. Дешифраторы
На данной схеме помимо основных устройств показаны интерфейсные (шинный формирователь, порт ввода-вывода) и дополнительные устройства (дешифраторы) ЭВМ.
Необходимо отметить, что периферийные устройства связаны с системой посредством портов ввода-вывода, которые по сути представляют собой те же регистры или их совокупности.
Многие периферийные устройства работают под управлением специального устройства — контроллера (адаптера). Например, выводом информации на монитор управляет видеоадаптер. Вводом информации с клавиатуры управляет контроллер клавиатуры. В таких случаях порты ввода-вывода находятся в соответствующих контроллерах.
Контроллеры устройств ввода-вывода помимо регистров могут иметь в своем составе память, которая может занимать часть адресного пространства процессора. Регистры устройств ввода-вывода также могут отображаться на основное адресное пространство.
Схема на рис.2 является общей. На ней не показаны контроллеры устройств ввода-вывода. На ней также не показаны и общие типы контроллеров, которые могут управлять работой нескольких устройств ввода-вывода: контроллер прерываний и контроллер прямого доступа к памяти. Если эти контроллеры используются, то они назначают связанным с ними устройствам ввода-вывода номера прерываний и каналов прямого доступа к памяти.
Дешифратор (DC, Decoder) служит для определения (выбора) того устройства, к которому обращается процессор для приема или передачи информации. Номера портов и диапазоны адресов памяти устанавливаются именно с помощью дешифраторов. Физический адрес, выдаваемый процессором по шине адреса через шинный формирователь, разделяется на две части. Старшие адресные линии соединены с дешифратором. Они адресуют одно из устройств в целом, включают или выключают его с помощью сигнала ВМ (CS). Младшие адресные линии соединены непосредственно с устройством и адресуют одну конкретную ячейку памяти или порт ввода-вывода.
Номера портов, диапазоны адресного пространства, номера прерываний и каналов прямого доступа в совокупности называются ресурсами, выделяемыми в ЭВМ различным устройствам.
Направления передачи информации в ЭВМ
Точкой отсчета для определения направления передачи информации в ЭВМ является процессор. Если информация движется к процессору, то это прием (чтение, ввод). Если информация движется от процессора, то это передача (запись, вывод) (табл.6).
Таблица 6.
Направления передачи информации в ЭВМ
Направление |
Память |
УВВ |
От процессора — передача (transmission) |
Запись (writing) |
Вывод (output) |
К процессору — прием (receiving) |
Чтение (reading) |
Ввод (input) |
Интерпретация информации, принимаемой процессором
Как уже было сказано, процессор при работе ЭВМ постоянно выполняет следующий цикл: чтение команды, ее дешифрацию и выполнение.
При выполнении команды процессор может обращаться к ячейкам памяти или портам ввода-вывода для приема-передачи данных.
Таким образом, принимая информацию по шине данных, процессор должен ее интерпретировать надлежащим образом. Варианты здесь следующие:
-
Код операции команды, в т. ч. вся необходимая информация для определения местоположения операндов (способа адресации).
-
Адрес ячейки памяти, адрес порта ввода-вывода.
-
Собственно данные, предназначенные для обработки (операнд).
Вся эта информация может находиться в одной команде. Кроме того, операнды могут находиться регистрах процессора, в памяти или портах ввода-вывода, а адреса операндов в памяти или устройствах ввода-вывода — в регистрах процессора.
Временные единицы функционирования процессора. Машинный такт, машинный цикл (цикл шины, транзакция), цикл команды
Процессор выполняет программу по командам, команды по машинным циклам, а машинные циклы по тактам.
Машинный такт — это наименьший временной интервал системы, один период тактовой частоты.
Машинный цикл (цикл шины, транзакция) — следующий по величине временной интервал системы. Цикл шины i8086 содержит, как минимум, четыре такта. Цикл шины характеризуется тем, что в течение этого временного промежутка процессор выполняет одну законченную операцию обмена информацией с памятью или устройством ввода-вывода. Таким образом, он характеризует внешние действия процессора.
Далее по порядку возрастания временных интервалов системы идет цикл команды, который состоит из одного или нескольких машинных циклов.
RISC-процессор выполняет команду за один такт, т. е. для этого типа процессоров понятия цикла команды, машинного цикла и такта совпадают. Многие процессоры семейства x86 относятся к классу CISC, но имеют элементы RISC. Процессоры x86, начиная с Pentium, могут выполнять до трех команд за один такт, начиная с Core 2 — до четырех команд на одно ядро.
Процессор i8086 имеет следующие типы циклов шины:
-
подтверждение прерывания;
-
ввод;
-
вывод;
-
останов;
-
извлечение кода операции команды;
-
чтение;
-
запись.
Память
Классификация внутренней памяти. ОЗУ и ПЗУ
По разным признакам можно выделять различные типы памяти ЭВМ. Главный признак классификации — возможность изменения информации в памяти в составе самой ЭВМ. По этому признаку выделяются:
-
Оперативное запоминающее устройство (ОЗУ, RAM — Random Access Memory).
-
Постоянное запоминающее устройство (ПЗУ, ROM — Read Only Memory).
ОЗУ является энергозависимой, а ПЗУ — энергонезависимой памятью. При выключении питания компьютера информация в оперативной памяти теряется. Информация в ПЗУ не меняется в процессе работы компьютера и сохраняется при выключении питания. Однако это не значит, что ее нельзя изменить в принципе. Многие ПЗУ допускают такую возможность. Однако изменение информации в большинстве типов ПЗУ осуществляется не в составе ЭВМ, а в специальном устройстве — программаторе ПЗУ. Процесс изменения информации в ПЗУ называется перепрограммированием.
ОЗУ персональных компьютеров содержит выполняющиеся в настоящий момент программы, в том числе операционную систему, загружаемые с устройств внешней памяти, и необходимые для их выполнения данные.
ПЗУ ЭВМ, специализированных для выполнения определенных задач, могут содержать управляющую программу, являющуюся по сути простой операционной системой. Например, в ПЗУ учебной ЭВМ УМК-80 записана программа "Монитор", которая выполняет все основные функции операционной системы: размещает программы пользователя в оперативной памяти, запускает их, обеспечивает взаимодействие с устройствами ввода-вывода и т. п.
ПЗУ персональных компьютеров содержит BIOS (Basic Input-Output System, базовую систему ввода-вывода). Поэтому оно называется ROM BIOS.
В составе персональных компьютеров есть также т. н. CMOS RAM — оперативная память, в которой хранятся настройки BIOS, которые можно поменять с помощью программы Setup BIOS. CMOS RAM питается от батарейки и поэтому сохраняет содержимое при выключении питания.
Обратно, содержимое ROM BIOS современных компьютеров может быть перезаписано новой версией BIOS, причем в составе самого компьютера. Такая возможность имеется у ПЗУ, изготовленных по технологии Flash. Никакого программатора для перепрограммирования Flash-ROM не требуется. Однако это делается, конечно, не в процессе обычной работы компьютера, а в особом режиме с помощью специальных программных средств.
Существуют и смешанные типы. Так, современные модули оперативной памяти DIMM SDRAM содержат в своем составе постоянную память SPD EEPROM (Serial Presence Detect), которая идентифицирует тип модуля, различные параметры организации, временные параметры.
Классификация ПЗУ
Классификация ПЗУ такова:
-
Однократно программируемые:
-
Масочные ПЗУ — программируемые в процессе изготовления путем наложения маски.
-
Электрически программируемые ПЗУ (ЭППЗУ) — программируемые после изготовления пережиганием плавких перемычек электрическим путем в программаторе.
-
-
Многократно программируемые (перепрограммируемые):
-
Электрически стираемое программируемое ПЗУ (ЭСППЗУ, EEPROM, electrically erasable programmable read-only memory):
-
Со стиранием ультрафиолетовым светом и электрической записью — УФППЗУ.
-
Классификация ОЗУ
Основные качественные признаки классификации и выделяемые по ним классы ОЗУ персональных компьютеров таковы:
-
Архитектура: FPM (Fast Page Mode), EDO (Extended Data OUT) и др.
-
Запоминающий элемент: конденсатор — динамическая память (DRAM, Dynamic RAM), триггер — статическая память (SRAM, Static RAM).
-
Конструктивное исполнение: SIMM (Single Inline Memory Module, модуль памяти с однорядным расположением контактов), DIMM (Dual Inline Memory Module, модуль памяти с двухрядным расположением контактов).
-
Наличие синхронизации тактовыми импульсами: асинхронная память, синхронная память (SDRAM, Synchronous DRAM).
-
Умножение скорости передачи по сравнению с частотой тактовых импульсов: RDRAM (Rambus DRAM, выпускается в конструктивах под названием RIMM (Rambus Inline Memory Module)) и DDR (Double Data Rate, память с удвоенной скоростью передачи данных, конструктив DIMM);
-
Многоканальность: двухканальная и трехканальная DDR (DDR II и DDR III).
Основные количественные признаки классификации ОЗУ таковы:
-
Емкость.
-
Размер ячейки: бит, тетрада, байт.
-
Время доступа.
-
Для синхронной памяти — тактовая частота и количество тактов, требующихся для доступа.
Способы увеличения производительности памяти. Многоуровневая организация оперативной памяти
Канал между процессором и памятью является фактором, ограничивающим производительность компьютера, "бутылочным горлышком" (bottle neck) фон-неймановской архитектуры.
Существует два способа увеличения производительности любого тракта (даже обычной автомобильной дороги):
-
Увеличение ширины (разрядности шины).
-
Увеличение скорости (тактовой частоты).
Влияет на производительность также время доступа к памяти для чтения или записи.
Важным способом увеличения производительности компьютера является многоуровневая организация оперативной памяти. Уровни выделяются по степени близости к ядру процессора, минимальное количество уровней — два:
-
Основная оперативная память — динамическая, менее дорогая и быстрая, более емкая.
-
Кэш-память (сверхоперативная память) — статическая, более дорогая и быстрая, менее емкая.
Существуют различные виды кэш-памяти, выделяемые по разным признакам. По признаку конструктивного исполнения (физической реализации) можно выделить:
-
Кэш-память в виде отдельных микросхем.
-
Кэш-память в одном корпусе с процессором, но на отдельном кристалле.
-
Кэш-память на одном кристалле с процессором.
Эти типы физической реализации, конечно, различаются архитектурными особенностями и другими характеристиками.
Кэш-память может быть разделена на уровни, которые также характеризуются увеличением производительности и уменьшением емкости по мере близости к ядру процессора.
В большинстве современных процессоров кэш-память находится на кристалле процессора и делится на два или три уровня, которые обозначаются L1, L2 и L3, соответственно.