Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архитектура ЭВМ и систем. Лабораторная работа. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
1 Мб
Скачать
РОССИЙСКИЙ НОВЫЙ УНИВЕРСИТЕТ
___________________________________________________________
Д.Э. ФЕДОТОВА
АРХИТЕКТУРА ЭВМ И СИСТЕМ
ЛАБОРАТОРНАЯ РАБОТА
Москва
2009
УДК ББК Ф
Рецензенты:
Зав. кафедрой Математическое обеспечение вычислительных систем
МИРЭА, д.т.н., профессор Ткаченко В.М.
Зам. заведующего кафедрой Информационная безопасность
РосНОУ, д.т.н., профессор Скородумов Б.И.
Одобрено Научно-методическим советом
Российского нового университета
Федотова Д.Э.
Ф Архитектура ЭВМ и систем: Учебное
пособие. – М.: РосНОУ,
2009. – 124 с.
Данное пособие содержит характерные работы по языку Ассамблер для мик-
ропроцессоров i386–i486.
Показано, что архитектура центрального процессора тесно связана с системой
команд.
Рассмотрены представления данных в памяти ЭВМ, режимы адресации, вы-
полнение операцийв АЛУ, проектирование драйверов устройств.
Предназначено студентам вузов, изучающим архитектуру ЭВМ и систем, по-
лезно преподавателям и аспирантам.
УДК
ББК
© Федотова Д.Э., 2009 © РосНОУ, 2009
2
ВВЕДЕНИЕ
1. Что такое «системное программирование»?
Совокупность работ по созданию математического обеспече­ния ЭВМ называется системным программированием. Программы, входящие в состав системы математического обеспечения ЭВМ, называются системными программами.
Системное программирование 1 рода – это разработка таких программ, которые требуют знания системных соглашений в пол­ном объеме (операционные системы, средства поддержки ОС, сис
-
темы ввода-вывода и управления данными, пакеты прикладных про­грамм, проблемно-ориентированные трансляторы).
Системное программирование 2 рода – это разработка таких комплексов программ математического обеспечения, при создании которых требуется знание и выполнение лишь тех системных со­глашений, которыми должен владеть каждый программист-пользо­ватель.
1.1. Технология системного программирования при наличии объектной ЭВМ
Объектная ЭВМ – это та ЭВМ, для которой разрабатывается система математического обеспечения. Если объектная ЭВМ имеет­ся в наличии, но никакого математического обеспечения для нее еще нет, работы системных программистов производятся в следующей последовательности.
1. Разработка предварительного автокода 1:1 для объектной
ЭВМ.
2. Разработка транслятора с предварительного автокода на
язык объектной ЭВМ.
Это выполняется на инструментальной ЭВМ с помощью имеющихся на ней языков высокого уровня и относится к системному программированию 2 рода, т.к. предварительный транслятор не подчинен никаким системным соглашениям разраба­тываемого математического обеспечения.
3. Разработка системных программ для объектной ЭВМ на
языке предварительного автокода (программы операционной систе­мы, средства ее поддержки, программы
управления вводом-выво-
дом и данными, диагностические программы).
3
4. Трансляция и автономная отладка системных программ на
объектной ЭВМ.
5. Разработка языка Ассемблера (Ассемблер – язык програм-
мирования) объектной ЭВМ по типу автокода 1:1 или 1:несколько.
6. Разработка языка операционной системы объектной ЭВМ
(он называется «объектным языком»).
7. Разработка транслятора с языка Ассемблера в объектный
язык; этот транслятор пишется на предварительном
автокоде. Пред­полагается, что он будет размещаться в памяти объектной ЭВМ, т.е. будет р е з и д е н т н ы м .
Выполнение его будет обеспечиваться средствами ОС объект­ной ЭВМ, чего нельзя сказать о трансляторе с предварительного автокода. Если ассемблер размещается на инструментальной ЭВМ, он называется к
р о с с-а с с е м б л е р о м.
8. Трансляция ассемблера.
9. Отладка ассемблера на объектной ЭВМ, куда уже введена от-
лаженная ОС. Дальнейшая работа по программированию выполня­ется на языке Ассемблера объектной ЭВМ.
10. Программирование трансляторов с языков высокого уровня
на языке Ассемблера и
трансляция их на объектной ЭВМ с помо-
щью ассемблера.
11. Программирование на языках высокого уровня и трансляция
на объектной ЭВМ с помощью соответствующих трансляторов.
1.2. Технология системного программирования при отсутствии объектной ЭВМ
Если объектная ЭВМ разрабатывается параллельно с созданием ее математического обеспечения, к работе системных программи­стов добавится этап – проектирование ф у н к ц и о н а л ь н о й м о­д е л и объектной ЭВМ в кодах инструментальной ЭВМ, которая представляет собой программную модель рабочего цикла
объектной машины. Функциональная программная модель заставляет инстру­ментальную ЭВМ «выполнять» команды объектной машины в ре­жиме интерпретации.
В дальнейшем работа системных программистов организуется в соответствии с этапами 1-11 (см. п. 1.1) с той лишь разницей, что все работы, ра­нее выполнявшиеся на объектной ЭВМ, теперь выпол­няются на ее функциональной модели.
4
ЛАБОРАТОРНАЯ РАБОТА 1
АРХИТЕКТУРА МИКРОПРОЦЕССОРОВ I386–I486
Микропроцессор 80386 реализует набор из 146 команд, причем большинство из них аналогичны командам микропроцессора 8086 (К1810ВМ86). Основное различие в системах команд этих микро­процессоров связано с расширением разрядности (до 32) и введени­ем команд, обеспечивающих обработку битовой информации, защи­ту данных, хранящихся в памяти, и поддержку реализаций языков высокого уровня.
Общий перечень команд
Набор команд МП 80386 делится на девять групп в зависимости от типа выполняемых операций. В данном разделе дается общий пе­речень команд, разбитых на функциональные группы.
1. Пересылка данных и адресов
Пересылка данных без преобразования:
MOV Пересылка операнда PUSH Запись операнда в стек PUSHA Запись в стек содержимого всех регистров POP Чтение операнда из стека POPA Чтение из стека содержимого всех регистров XCHG Обмен между регистрами или памятью и ре-
гистром
XLAT Преобразование кодов
Пересылка данных с преобразованием:
MOVSX Пересылка байта или слова расширением
знака
MOVZX Пересылка байта или слова расширением
нулями
Ввод-вывод данных:
IN Ввод операнда из порта в регистр OUT Вывод
операнда из регистра в порт
Загрузка адреса селекторов:
LEA Загрузка адреса EA в регистр LDS Загрузка селектора в регистр DS LES Загрузка селектора в регистр ES
5
LFS Загрузка селектора в регистр FS LGS Загрузка селектора в регистр GS LSS Загрузка селектора в регистр SS
2. Арифметические операции
Сложение:
ADD Сложение операндов ADC Сложение операндов с признаком CF (пере-
нос) INC Инкремент операнда AAA ASCII коррекция результата сложения DAA Десятичная коррекция результата сложения
Вычитание:
SUB Вычитание операндов SBB Вычитание операндов и признака CF (заём) DEC Декремент операнда CMP Сравнение операндов NEG Изменение знака операнда (с переводом в
дополнительный код) AAS ASCII коррекция результата вычитания DAS Десятичная коррекция результата вычитания
Умножение:
MUL Беззнаковое умножение IMUL Знаковое (целочисленное) умножение AAM ASCII коррекция результата умножения
Деление:
DIV Беззнаковое деление IDIV Знаковое (целочисленное) деление AAD ASCII коррекция результата деления
Преобразование байтов, слов, двойных слов:
CBW Преобразование байта (AL) в слово (AX) CWDE Преобразование слова (AX) в
двойное слово
(EAX) CWD Преобразование слова (AX) в двойное слово
(DX, AX) CDQ Преобразование двойного слова (EAX) в
учетверенное слово (EDX, EAX)
6
3. Логические операции и сдвиги
Логические операции:
NOT Инверсия операнда (логическое НЕ) AND Конъюнкция операндов (логическое И) OR Дизъюнкция операндов (логическое ИЛИ) XOR Неравнозначность операндов (исключающее
ИЛИ) TEST Логическое сравнение операндов (установка
признаков ZF, SF, PF)
Сдвиги:
SHL/SAL Сдвиг влево SHR Логический сдвиг вправо SAR Арифметический сдвиг вправо SHLD Двухоперандный сдвиг влево SHRD Двухоперандный сдвиг вправо ROL Циклический сдвиг влево ROR Циклический сдвиг вправо RCL Циклический сдвиг влево через перенос (CF) RCR Циклический сдвиг вправо через перенос
(CF)
4. Операции с битами и строками битов
BT Проверка бита BTS Проверка и установка бита BTR Проверка и сброс бита BTC Проверка и инверсия бита BSF Прямое сканирование битов BSR Обратное сканирование битов
5. Операции со строками символов
LODS Загрузка символа в аккумулятор STOS Запись символа из аккумулятора INS Ввод символа OUTS Вывод символа MOVS Пересылка символа CMPS Сравнение символов SCAS Сканирование строки символов
7
6. Управление программой
Безусловная передача управления:
JMP Безусловный переход CALL Вызов подпрограммы RET Возврат из подпрограммы
Условные переходы:
JA/JNBE Переход, если выше (не ниже или равно) JAE/JNB/JC Переход, если (CF)=0: выше или равно (не
ниже) JB/JNAE/JC Переход, если (CF)=1: ниже (не выше или
равно) JBE/JNA Переход, если ниже или равно (не выше) JE/JZ Переход, если равно (нуль): (ZF)=1 JNE/JNZ Переход, если не равно (не нуль): (ZF)=0 JP/JPE Переход, если четность: (PF)=1 JNP/JPO Переход, если нечетность: (PF)=0
Условные переходы с учетом знака:
JG/JNLE Переход, если больше (не меньше или равно) JGE/JNL Переход, если больше или равно (не мень-
ше) JL/JNGE Переход, если меньше (не больше или рав-
но) JLE/JNG Переход, если меньше или равно (не боль-
ше) JS Переход, если отрицательно: (SF)=1 JNS Переход, если положительно: (SF)=0 JO Переход, если переполнение: (OF)=1 JNO Переход, если нет переполнения: (OF)=0
Условная установка байта:
SETA/SETNBE Установка, если выше (не ниже или равно) SETAE/SETNB Установка, если выше или равно (не ниже) SETB/SETNAE Установка, если ниже (не выше или равно) SETBE/SETNA Установка, если ниже или равно (не выше) SETE/SETZ Установка,
если равно (нуль): (ZF)=1 SETNE/SETNZ Установка, если не равно (не нуль): (ZF)=0 SETP/SETPE Установка, если четность: (PF)=1 SETNP/SETPO Установка, если нечетность: (PF)=0 SETG/SETNLE Установка, если не равно (не нуль) SETGE/SETNL Установка, если больше или равно (не
меньше)
8
SETL/SETNGE Установка, если меньше (не больше или
равно)
SETLE/SETNG Установка, если меньше или равно (не
больше) SETS Установка, если отрицательно: (SF)=1 SETNS Установка, если положительно: (SF)=0 SETO Установка, если переполнение: (OF)=1 SETNO Установка, если нет переполнения: (OF)=0
Прерывания:
INT Прерывание INT0 Прерывание по переполнению: (OF)=1 INT3 Прерывание в контрольной точке IRET Возврат из подпрограммы прерывания CLI Запрещение прерываний STI Разрешение прерываний
Организация
циклов:
LOOP Реализация циклов, пока (CX)=0 LOOPE/LOOPZ Реализация циклов, пока (CX)=0 или (ZF)=1 LOOPNE/LOOPNZ Реализация циклов, пока (CX)=0 или (ZF)=0 JCXZ (JECXZ) Реализация циклов, пока (CX)=0 или
(ECX)=0
Операции над признаками:
LAHF Загрузка признаков в регистр AH SAHF Запись содержимого AH в регистр призна-
ков PUSHF Запись содержимого регистра признаков в
стек POPF Чтение содержимого регистра признаков из
стека CLC Сброс признака переноса: (CF)=0 STC Установка
признака переноса: (CF)=1 CMC Инвертирование признака переноса CLD Сброс признака направления: (DF)=0 CTD Установка признака направления: (DF)=1
7. Поддержка языка высокого уровня
BOUND Проверка границ массива ENTER Обращение к процедуре LEAVE Выход из процедуры
9
8. Организация защиты памяти
SGDT Запись содержимого регистра таблицы гло-
бальных дескрипторов
SLDT Запись содержимого регистра таблицы ло-
кальных дескрипторов
SIDT Запись содержимого регистра таблицы деск-
рипторов прерываний
STR Запись содержимого регистра задачи LGD Загрузка регистра таблицы глобальных де-
скрипторов
LLDT Загрузка регистра таблицы локальных деск-
рипторов
LIDT Загрузка регистра таблицы дескрипторов
прерываний
LTR Загрузка
регистра задачи
CLTS Сброс признака переключения задачи:
(TS)=0
ARPL Коррекция запрошенного уровня привилегий LAR Загрузка прав доступа LSL Загрузка границы сегмента VERR Проверка доступности сегмента при чтении VERW Проверка доступности сегмента при записи LMSW Загрузка слова состояния машины (MSW) SMSW Запись слова состояния машины (MSW)
9. Управление процессором
ESC Подключение сопроцессора MOV Пересылка содержимого управляющих, от-
ладочных, тестирующих регистров WAIT Ожидание до поступления сигнала BUSY=1 NOP Отсутствие операции HLT Останов
Выполнение команд модифицируется при введении перед ними пре­фиксных байтов:
LOCK Блокировка магистрали SEG Замена сегмента
Префикс изменения разрядности адреса Префикс изменения разрядности операнда
REP/REPE/REPZ Повторение операций со строками REPNE/REPNZ Повторение операций
со строками
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]