|
Глава 1. Архитектура реального режима
Память и процессор
Среди устройств и узлов, входящих в состав компьютера, наиболее важными для выполнения
любой программы катаются оперативная память и центральный микропроцессор, который
мы для краткости будем в дальнейшем называть просто процессором. В оперативной
памяти хранится выполняемая программа вместе с принадлежащими ей данными; процессор
выполняет вычисления и другие действия, описанные в программе.
Сегментная структура программ Как
было показано выше, обращение к памяти осуществляется исключительно посредством
сегментов - логических образований, накладываемых на любые участки физического
адресного пространства. Начальный адрес сегмента, деленный на 16, т.е. без младшей
шестнадцатеричной цифры, заносится в один из сегментных регистров; после этого
мы получаем доступ к участку памяти, начинающегося с заданного сегментного адреса. Система
прерываний любого компьютера
является его важнейшей частью, позволяющей быстро реагировать на события, обработка
которых должна выполнятся немедленно: сигналы от машинных таймеров, нажатия клавиш
клавиатуры или мыши, сбои памяти и пр. Рассмотрим в общих чертах компоненты этой
системы.
Система ввода-вывода т.
е. комплекс средств обмена информацией с внешними устройствами, является важнейшей
частью архитектуры процессора и машины в целом. К системе ввода-вывода можно отнести
и способы подключения к системной шине различного оборудования, и процедуры взаимодействия
процессора с этим оборудованием, и команды процессора, предназначенные для обмена
данными с внешними устройствами. Индуктивность
контура Магнитное поле
Глава 2. Основы программирования
Подготовка и отладка программы Процесс
подготовки и отладки программы на языке ассемблера включает этапы подготовки исходного
текста, трансляции, компоновки и отладки. Подготовка исходного текста программы
выполняется с помощью любого текстового редактора, хотя бы редактора, встроенного
в программу Norton Commander, или еще более удобного редактора Norton Editor. Представление
данных В языке ассемблера
имеются средства записи целых и вещественных чисел, а также символьных строк и
отдельных символов. Целые числа могут быть со знаком и без знака, а также записанными
в двоично-десятичном формате. Для целых чисел и символов в составе команд микропроцессора
и, соответственно, в языке ассемблера, есть средства обработки - анализа, сравнения,
поиска и проч. Описание
данных Практически любая
программа содержит в себе перечень данных, с которыми она работает. Это могут
быть символьные строки, предназначенные для вывода на экран; числа, определяющие
ход выполнения программы или участвующие в вычислениях; адреса подпрограмм, обработчиков
прерываний или просто тех или иных полей программы; специальные коды, например,
коды цвета выводимых на экран символов и т.д Курс
лекций по информатике Архитектура персонального компьютера
Способы адресации Способом,
или режимом адресации называют процедуру нахождения операнда для выполняемой команды.
Если команда использует два операнда, то для каждого из них должен быть задан
способ адресации, причем режимы адресации первого и второго операнда могут как
совпадать, так и различаться. Переходы
Как уже отмечалось в гл. 1,
присущий процессору алгоритм выполнения программы заставляет его выполнять команды
программы друг за другом, в том порядке, как они были описаны в исходном тексте
программы и содержатся в выполнимом модуле. Однако часто программисту требуется
нарушить этот порядок, заставив процессор обойти некоторый участок программы,
перейти на выполнение другой ветви или передать управление подпрограмме, имея
в виду после ее завершения вернуться на прежнее место
Вызовы подпрограмм Практически
в любой программе, независимо от ее содержания, встречаются участки, которые требуется
выполнять (возможно, с небольшими изменениями) несколько раз по ходу программы.
Такие повторяющиеся участки целесообразно выделить из общей программы, оформить
в виде подпрограмм и обращаться к ним каждый раз, когда в основной программе возникает
необходимость их выполнения. Макросредства
ассемблера Современные
ассемблеры содержат в себе так называемые макросредства и по этой причине называются
иногда макроассемблерами. Общая идея макросредств заключается в том, что включением
в исходный текст программы предложений специального языка макросредств (макроязыка)
мы в какой-то степени управляем процессом трансляции программы
Глава 3. Команды и алгоритмы -
Организация приложений MS-DOS
- Циклы
и условные переходы Циклы,
позволяющие выполнить некоторый участок программы многократно, в любом языке являются
одной из наиболее употребительных конструкций. В системе команд МП 86 циклы реализуются,
главным образом, с помощью команды loop (петля), хотя имеются и другие способы
организации циклов. Во всех случаях число шагов в цикле определяется содержимым
регистра СХ, поэтому максимальное число шагов составляет 64 К.
-
Обработка строк Для
работы со строками, или цепочками символов или чисел (т.е. попросту говоря, с
массивами произвольных данных) в МП предусмотрен ряд специальных команд
-
Использование подпрограмм
Общая идея использования подпрограмм
очевидна: если в программе требуется многократно выполнять один и тот же фрагмент,
его можно оформить в виде подпрограммы и вызвать по мере необходимости
- Двоично-десятичные
числа В гл. 2 уже говорилось
о двоично-десятичных числах - специальном формате хранения данных, используемом
в ряде технических приложений. Часто эти числа называют BCD-числами (от binary-coded
decimal, двоично-кодированные десятичные числа). Для обработки BCD-чисел (сложения,
вычитания, умножения и деления) в МП 86 предусмотрены специальные команды. Рассмотрим
этот вопрос на комплексном примере обработки показаний КМОП-часов реального времени.
-
Программирование аппаратных
средств Программирование
аппаратуры - как штатных периферийных устройств компьютера, таких, как видеосистема,
клавиатура, последовательный или параллельный интерфейс и др., так и нестандартных
измерительных или управляющих устройств, подключаемых к компьютеру, если он используется
для автоматизации научных исследований или управления технологическим процессом
- является одним из важнейших и наиболее оправданных применения языка ассемблера
Глава 4. Расширенные возможности современных микропроцессоров -
Архитектурные особенности Операционная
система MS-DOS, язык ассемблера МП 86 и методы программирования микропроцессоров
корпорации Intel разрабатывались применительно к 16-разрядному процессору 8086
и тому режиму, который впоследствии получил название реального.
-
Дополнительные режимы адресации Режимы
адресации 32-разрядных процессоров разработаны, исходя из требований образования
32-битового смещения. Другими словами, они предназначены для 32-разрядных приложений,
в которых сегменты данных или стека (как, впрочем, и сегменты команд) могут иметь
размеры до 232 = 4 Гбайт.
- Использование
средств 32-разрядных процессоров в программировании Как
уже отмечалось, при разработке 16-разрядных программ реального режима, предназначенных
для выполнения по управлением операционной системы MS-DOS, вполне допустимо использование
ряда дополнительных возможностей 32-разрядных процессоров.
- Основы
защищенного режима Микропроцессоры
Pentium, так же, как и его предшественники (начиная с 80268), могут работать в
двух режимах: реального адреса и виртуального защищенного адреса. Обычно эти режимы
называют просто реальным и защищенным. В реальном режиме 32-разрядные микропроцессоры
функционируют фактически так же, как МП 86 с повышенным быстродействием и расширенным
набором команд.
Приложение. Система команд процессоров Intel -
Система команд процессоров Intel
- ААА
ASCII-коррекция регистра АХ после сложения,
AAD ASCII-коррекция регистра АХ перед делением, ААМ ASCII-коррекция
регистра АХ после умножения, AAS ASCII-коррекция регистра AL после вычитания
- ADC Целочисленное
сложение с переносом, ADD Целочисленное сложение, AND Логическое И, 386Р+ ARPL
Коррекция запрашиваемого уровня привилегий селектора, 386+ BOUND Проверка индекса
массива на выход за границы массива
-
386+BSF Прямое сканирование битов, 386+ BSR Обратное сканирование битов, 486+
BSWAP Обмен байтов, 386+ ВТ Проверка бита, 386+ ВТС Проверка и инверсия бита
- 386+ ВТК Проверка
и сброс бита, 386+BTS Проверка и установка бита, CALL Вызов подпрограммы, CBW
Преобразование байта в слово, 386+ CDQ Преобразование двойного слова в четверное
- CLC Сброс флага
переноса, CLD Сброс флага направления, CLI Сброс флага прерываний, 386Р+ CUTS
Сброс флага переключения задачи в управляющем регистре 0, CMC Инвертирование флага
переноса
- СМР
Сравнение, MPS Сравнение строк, CMPSB Сравнение строк по байтам, CMPSW Сравнение
строк по словам, 386+ CMPSD Сравнение строк по двойным словам
- 486+
CMPXCHG Сравнение и обмен, Pentium+ CMPXCHG8B Сравнение и обмен 8 байтов, Pentium+
CPUID Идентификация процессора, CWD Преобразование слова в двойное слово, 386+
CWDE Преобразование слова в двойное слово с расширением
- DAA
Десятичная коррекция в регистре AL после сложения, DAS Десятичная коррекция в
регистре AL после вычитания, DEC Декремент (уменьшение на 1), DIV Деление целых
чисел без знака, 386+ ENTER Создание стекового кадра для параметров процедуры
- HLT Останов, IDIV
Деление целых чисел со знаком, IMUL Умножение целых чисел со знаком , IN Ввод
из порта, INC Инкремент (увеличение на 1)
- 386+,
INS Ввод строки из порта, INSB Ввод байта из порта, INSW Ввод слова из порта,
INSD Ввод двойного слова из порта
- INT
Программное прерывание, INTO Прерывание по переполнению, IRET Возврат из прерывания,
386+ IRETD Возврат из прерывания в 32-разрядном режиме, Jcc Команды условных переходов
- JMP Безусловный
переход, LAHF Загрузка флагов в регистр АН, 386Р+ LAR Загрузка прав доступа, LDS
Загрузка указателя с использованием регистра DS, LEA Загрузка исполнительного
адреса
- 386+
LEAVE Выход из процедуры высокого уровня, LES Загрузка указателя с использованием
регистра ES, LSS Загрузка указателя с использованием регистра FS, LFS Загрузка
указателя с использованием регистра FS, LGS Загрузка указателя с использованием
регистра FS
-
386Р+ LGDT Загрузка регистра таблицы глобальных дескрипторов, 386Р+LIDT Загрузка
регистра таблицы дескрипторов прерываний, 386Р+LLDT Загрузка регистра таблицы
локальных дескрипторов 3863+ LMSW Загрузка слова состояния машины
-
LOCK Запирание шины, LODS Загрузка операнда из строки, LODSB Загрузка байта из
строки, LODSW Загрузка слова из строки
-
386+ LODSD Загрузка двойного слова из строки, L00P Циклическое выполнение, пока
содержимое СХ не равно нулю, L00PE/L00PZ Циклическое выполнение, пока равно/циклическое
выполнение, пока нуль, L00PNE/L00PNZ Циклическое выполнение, пока не равно/циклическое
выполнение, пока не нуль , 386Р+ LSL Загрузка границы сегмента
- 386Р+
LTR Загрузка регистра задачи TR, MOV Пересылка данных, 386Р+ MOV Пересыпка в\из
специальных регистров,
- MOVS
Пересылка данных из строки в строку, MOVSB Пересылка байта данных из строки в
строку MOVSW Пересылка слова данных из строки в строку, 386+ MOVSD Пересылка двойного
слова из строки в строку, 386+ MOVSX Пересылка с расширением знака, 386+ MOVZX
Пересылка с расширением нуля,
- MUL
Умножение целых чисел без знака NEG Изменение знака, дополнение до 2, NOP Холостая
команда, NOT Инверсия, дополнение до 1. логическое отрицание, OR Логическое ВКЛЮЧАЮЩЕЕ
ИЛИ, OUT Вывод в порт
-
OUTS Вывод строки в порт, OUTSB Вывод байта в порт, OUTSW Вывод слова в порт,
OUTSD Вывод двойного слова в порт
- POP
Извлечение слова из стека, 386+ РОРА Восстановление из стека всех регистров, 386+
POPAD Восстановление из стека всех регистров в 32-разрядном режиме, POPF Восстановление
из стека регистра флагов, 386+ POPFD Восстановление из стека расширенного регистра
флагов
- PUSH
Занесение операнда в стек, 386+ PUSHA Сохранение в стеке всех регистров, 386+
PUSHAD Сохранение в стеке всех регистров в 32-разрядном режиме 386+ PUSHFD Занесение
в стек содержимого расширенного регистра флагов, RCL Циклический сдвиг влево через
бит переноса
- RCR
Циклический сдвиг вправо через бит переноса, Pentium+P RDMSR Чтение особого регистра
модели, REP Повторение, REPE Повторение пока равно, REPZ Повторение пока нуль
REPNE Повторение пока равно , REPNZ Повторение пока не равно
-
RET Возврат из процедуры, RETN Возврат из ближней процедуры, 3RETF Возврат из
дальней процедуры
- ROL
Циклический сдвиг влево, ROR Циклический сдвиг вправо , SAHF Запись содержимого
регистра АН в регистр флагов, SAL Арифметический сдвиг влево, SAR Арифметический
сдвиг вправо
- SBB
Целочисленное вычитание с займом, SCAS Сканирование строки с целью сравнения,
SCASB Сканирование строки байтов с целью сравнения, SCASW Сканирование строки
слов с целью сравнения, 386+ SCASD Сканирование строки двойных слов с целью сравнения
- 386+ SETcc Установка
байта по условию, SHL Логический сдвиг влево, 386+ SHLD Логический сдвиг влево
с двойной точностью, SHR Логический сдвиг вправо, 386+ SHRD Логический сдвиг вправо
с двойной точностью
- 386Р+
SIDT Сохранение в памяти содержимого регистра таблицы дескрипторов прерываний
, 386Р+ SLDT Сохранение содержимого регистра таблицы локальных дескрипторов, 386Р+
SMSW Сохранение слова состояния машины , STC Установка флага переноса, STD Установка
флага направления
-
ST1 Установка флага прерывания , STOS Запись в строку данных, STOSB Запись байта
в строку данных, STOSW Запись слова в строку данных, 386+ STOSD Запись двойного
слова в строку данны
- 3S6P+
STR Сохранение содержимого регистра состояния задачи, SUB Вычитание целых чисел,
TEST Логическое сравнение, 386Р+ VERR Проверка сегмента на чтение, 386Р+ VERW
Проверка сегмента на запись
- 486+
XADD Обмен и сложение, XCHG Обмен данными между операндами, XLAT Табличная трансляция,
386+XLAT , 386+XLATB, XOR Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ
Заполните заявку и в кратчайшие сроки квалифицированные
специалисты выполнят ВАШ заказ за приемлемую цену Диплом, курсовая,
реферат диссертация, билеты к экзаменам, контрольная на заказ
|