- •140010, Г. Люберцы, Московской обл., Октябрьский пр-т, 403.
- •Глава 1. Архитектура реального режима
- •1.1. Память и процессор
- •Глава 1
- •Глава 1
- •1.2. Распределение адресного пространства
- •Глава 1
- •1.3. Регистры процессора
- •Глава 1
- •Глава 1
- •9 7H Шестнадцатернчное обозначение числа
- •Глава 1
- •1.4. Сегментная структура программ
- •Глава 1
- •Глава 1
- •Глава 1
- •1.5. Стек
- •Глава 1
- •1.6. Система прерываний
- •Глава 1
- •Глава I
- •1.7. Система ввода-вывода
- •Глава I
- •Глава 1
- •Глава 2. Основы программирования
- •2.1. Подготовка и отладка программы
- •Глава 2
- •Глава 2
- •Глава 2
- •Глава 2
- •Глава 2
- •2.2. Представление данных
- •Глава 2
- •Глава 2
- •2.3. Описание данных
- •Глава 2
- •Глава 2
- •2.4. Структуры и записи
- •Глава 2
- •Глава 2
- •2.5. Способы адресации
- •Глава 2
- •Глава 2
- •Глава 2
- •Глава 2
- •Глава 2
- •Глава 2
- •Глава 2
- •Глава 2
- •Глава 2
- •Глава 2
- •2.7. Вызовы подпрограмм
- •Глава 2
- •2.8. Макросредства ассемблера
- •Глава 2
- •Глава 2
- •Глава 2
- •Глава 3. Команды и алгоритмы
- •Глава 3
- •Глава 3
- •Глава 3
- •Глава 3
- •Глава 3
- •Глава 3
- •Глава 3
- •Глава 3
- •3.2. Циклы и условные переходы
- •Глава 3
- •Глава 3
- •3.3. Обработка строк
- •Глава 3
- •3.4. Использование подпрограмм
- •Глава 3
- •Глава 3
- •3.5. Двоично-десятичные числа
- •Глава 3
- •Глава 3
- •3.6. Программирование аппаратных средств
- •Глава 3
- •37Ah Порт управлсш!я
- •Глава 3
- •Глава 3
- •Глава 4. Расширенные возможности
- •4.1. Архитектурные особенности
- •Глава 4
- •4.2. Дополнительные режимы адресации
- •Глава 4
- •4.3. Использование средств 32-разрядных процессоров в программировании
- •Глава 4
- •Глава 4
- •Глава 4
- •4.4. Основы защищенного режима
- •Глава 4
- •Глава 4
- •Глава 4
- •Глава 4
- •Idiv Деление целых чисел со знаком
- •Imul Умножение целых чисел со знаком
- •In Ввод из порта
- •Inc Инкремент (увеличение на 1)
- •Int Программное прерывание
- •Into Прерывание по переполнению
- •Iret Возврат из прерывания
- •1 Lods Загрузка операнда из строки : lodsb Загрузка байта из строки lodsw Загрузка слова из строки
- •Операнд
- •Xadd память, регистр
- •Xchg Обмен данными между операндами
- •Xlat Табличная трансляция
- •Xor Логическое исключающее или
- •Содержание
Содержание
Предисловие 3
Введение 6
Глава 1. Архитектура реального режима 10
Память и процессор 10
Распределение адресного пространства 14
Регистры процессора 17
Сегментная структура программ 22
Стек 29
Система прерываний 31
Система ввода-вывода 35
Глава 2. Основы программирования 40
Подготовка и отладка программы 40
Представление данных 50
Описание данных 54
Структуры и записи 59
Способы адресации 62
Переходы 74
Вызовы подпрограмм 82
Макросредства ассемблера 86
Глава 3. Команды и алгоритмы 96
Организация приложений MS-DOS 96
Циклы и условные переходы 123
Обработка строк 130
Использование подпрограмм 134
Двоично-десятичные числа 139
Программирование аппаратных средств 148
Глава 4. Расширенные возможности современных микропроцессоров 160
Архитектурные особенности 160
Дополнительные режимы адресации 163
Использование средств 32-разрядных процессоров в программировании 165
Основы защищенного режима 175
Приложение. Система команд процессоров Intel 197
ААА ASCII-коррекция регистра АХ после сложения 198
AAD ASCII-коррекция регистра АХ перед делением 198
ААМ AS СП-коррекция регистра АХ после умножения 199
AAS ASCII-коррекция регистра AL после вычитания 199
ADC Целочисленное сложение с переносом 199
ADD Целочисленное сложение 201
AND Логическое И 202
386Р+ ARPL Коррекция запрашиваемого уровня привилегий селектора 202
386+ BOUND Проверка индекса массива на выход за границы массива 202
386+ BSF Прямое сканирование битов .203
386+ BSR Обратное сканирование битов 203
486+ BSWAP Обмен байтов 204
Содержание
386+ ВТ Проверка бита 204
386+ ВТС Проверка и инверсия бита 205
386+ ВТК Проверка и сброс бита 206
386+ BTS Проверка и установка бита 206
CALL Вызов подпрограммы 207
CBW Преобразование байта в слово 210
386+ CDQ Преобразование двойного слова в четверное 210
CLC Сброс флага переноса 210
CLD Сброс флага направления 210
CLI Сброс флага прерываний 211
386Р+ CLTS Сброс флага переключения задачи в управляющем регистре 0 211
CMC Инвертирование флага переноса 211
СМР Сравнение 211
CMPS Сравнение строк 212
CMPSB Сравнение строк по байтам 212
CMPSW Сравнение строк по словам 212
386+ CMPSD Сравнение строк по двойным словам 215
486+ CMPXCHG Сравнение и обмен 215
Pentium+ CMPXCHG8B Сравнение и обмен 8 байтов 216
Pentium+ CPU1D Идентификация процессора 218
CWD Преобразование слова в двойное слово 218
386+ CWDE Преобразование слова в двойное слово с расширением 219
DAA Десятичная коррекция в регистре AL после сложения 219
DAS Десятичная коррекция в регистре AL после вычитания 220
DEC Декремент (уменьшение на 1} 220
DIV Деление целых чисел без знака 221
386+ ENTER Создание стекового кадра для параметров процедуры 222
HLT Останов ; 224
IDIV Деление целых чисел со знаком 224
IMUL Умножение целых чисел со знаком 225
IN Ввод из порта 227
INC Инкремент (увеличение на 1) 228
386+
INS Ввод строки из порта 228
INSB Ввод байта из порта 228
1NSW Ввод слова из порта 228
INSD Ввод двойного слова из порта 228
INT Программное прерывание 229
INTO Прерывание по переполнению 230
IRET Возврат из прерывания 230
386+ 1RETD Возврат из прерывания в 32-разрядном режиме 230
Jcc Команды условных переходов :..231
JMP Безусловный переход 232
LAHF Загрузка флагов в регистр АН 234
386Р+ LAR Загрузка прав доступа 235
LDS Загрузка указателя с использованием регистра DS 235
LEA Загрузка исполнительного адреса 236
386+ LEAVE Выход из процедуры высокого уровня 237
LES Загрузка указателя с использованием регистра ES 237
386+
LFS Загрузка указателя с использованием регистра FS 238
LGS Загрузка указателя с использованием регистра FS 238
Содержание
'
LSS Загрузка указателя с использованием регистра FS 238
386Р+ LGDT Загрузка регистра таблицы глобальных дескрипторов 238
3S6P+ LIDT Загрузка регистра таблицы дескрипторов прерываний 238
386Р+ LLDT Загрузка регистра таблицы локальных дескрипторов 239
3863+ LMSW Загрузка слова состояния машины 239
LOCK Запирание шины 239
LODS Загрузка операнда из строки 241
LODSB Загрузка байта из строки 241
LODSW Загрузка слова из строки 241
386+ LODSD Загрузка двойного слова из строки 241
LOOP Циклическое выполнение, пока содержимое СХ не равно нулю 242
LOOPE/LOOPZ Циклическое выполнение, пока равно/циклическое
выполнение, пока нуль 243
LOOPNE/LOOPNZ Циклическое выполнение, пока не равно/циклическое
выполнение, пока не нуль 243
3S6P+ LSL Загрузка границы сегмента 244
386Р+ LTR Загрузка регистра задачи TR 244
MOV Пересыпка данных 245
3S6P+ MOV Пересылка в\из специальных регистров 246
MOVS Пересылка данных из строки в строку 246
MOVSB Пересылка байта данных из строки в строку 246
MOVSW Пересылка слова данных из строки в строку 246
386+ MOVSD Пересылка двойного слова из строки в строку 249
386+ MOVSX Пересылка с расширением знака 249
386+ MOVZX Пересылка с расширением нуля 250
MUL Умножение целых чисел без знака 250
NEG Изменение знака, дополнение до 2 :. 252
NOP Холостая команда 252
NOT Инверсия, дополнение до 1, логическое отрицание 253
OR Логическое ВКЛЮЧАЮЩЕЕ ИЛИ 253
OUT Вывод в порт 254
386+
OUTS Вывод строки в порт 255
OUTSB Вывод байта в порт 255
OUTSW Вывод слова в порт 255
OUTSD Вывод двойного слова в порт 255
POP Извлечение слова из стека 256
3S6+ РОРА Восстановление из стека всех регистров 257
386+ РОРАЦ Восстановление из стека всех регистров в 32-разрядном режиме.. 257
POPF Восстановление из стека регистра флагов 257
386+ POPFD Восстановление из стека расширенного регистра флагов 258
PUSH Занесение операнда в стек 258
3S6+ PUSHA Сохранение в стеке всех регистров 259
386+ PUSHAD Сохранение в стеке всех регистров в 32-разрядном режиме .... 259 386+ PUSHFD Занесение в стек содержимого расширенного регистра флагов.. 259
RCL Циклический сдвиг влево через бит переноса 260
RCR Циклический сдвиг вправо через бит переноса 261
Pentium+P RDMSR Чтение особого регистра модели - 262
REP Повторение : 262
REPE Повторение пока равно 262
REPZ Повторение пока нуль 262
REPNE Повторение пока равно 262
REPNZ Повторение пока не равно 262
Содержание
RET Возврат из процедуры 262
RETN Возврат из ближней процедуры 262
RETF Возврат из дальней процедуры 262
ROL Циклический сдвиг влево 263
ROR Циклический сдвиг вправо 265
SAHF Запись содержимого регистра АН в регистр флагов 266
SAL Арифметический сдвиг влево 266
SAR Арифметический сдвиг вправо 267
SBB Целочисленное вычитание с займом 268
SCAS Сканирование строки с целью сравнения 270
SCASB Сканирование строки байтов с целью сравнения 270
SCASW Сканирование строки слов с целью сравнения 270
386+ SCASD Сканирование строки двойных слов с целью сравнения 271
386+ SETcc Установка байта по условию 272
SHL Логический сдвиг влево 273
386+ SHLD Логический сдвиг влево с двойной точностью 273
SHR Логический сдвиг вправо 274
386+ SHRD Логический'сдвиг вправо с двойной точностью 275
3S6P+ SIDT Сохранение в памяти содержимого регистра таблицы
дескрипторов прерываний 276
3S6P+ SLDT Сохранение содержимого регистра таблицы локальных
дескрипторов 276
3S6P+ SMSW Сохранение слова состояния машины 277
STC Установка флага переноса 277
STD Установка флага направления 277
STJ Установка флага прерывания 277
STOS Запись в строку данных 277
STOSB Запись байта в строку данных 277
STOSW Запись слова в строку данных 277
386+ STOSD Запись двойного слова в строку данных 279
3S6P+ STR Сохранение содержимого регистра состояния задачи 279
SUB Вычитание целых чисел 279
TEST Логическое сравнение 280
386Р+ VERR Проверка сегмента на чтение 282
386Р+ VERW Проверка сегмента на запись 282
486+ XADD. Обмен и сложение 282
XCHG Обмен данными между операндами 282
XLAT Табличная трансляция 283
3S6+XLAT 283
386+XLATB 283
XOR Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ 284