Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Архитектура ЭВМ и систем. Лабораторная работа. Учебное пособие
.pdf
РОССИЙСКИЙ НОВЫЙ УНИВЕРСИТЕТ
___________________________________________________________
Д.Э. ФЕДОТОВА
АРХИТЕКТУРА ЭВМ И СИСТЕМ
ЛАБОРАТОРНАЯ РАБОТА
Москва
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
