Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
28.03.2016
Размер:
33.59 Mб
Скачать

В. Юров

ASSEMBLER

В учебнике рассматриваются вопросы программирования на языке ассемблера для компьютеров на базе микропроцессоров фирмы Intel. Основу книги составляет материал, являющийся частью курса, читаемого автором в высшем учебном заведении и посвященного вопросам системного программирования. По сравнению с предыдущей книгой автора — «Assembler: учебный курс», книга существенно переработана. В нее добавлены разделы, посвященные программированию под Windows, и описанию команд процессоров Pentium III.

К книге прилагается дискета, которая содержит все листинги программ, рассматриваемых в учебнике, и соответствующий пояснительный материал.

Для студентов вузов, программистов и всех желающих изучить язык

Assembler.

Краткое содержание

 

Предисловие

9

Урок 1. Общие сведения об ЭВМ

14

Урок 2. Архитектура персонального компьютера

26

Урок 3. Простая программа на ассемблере

57

Урок 4. Жизненный цикл программы на ассемблере

66

Урок 5. Структура программы на ассемблере

86

Урок 6. Система команд микропроцессора

111

Урок 7. Команды обмена данными

133

Урок 8. Арифметические команды

153

Урок 9. Логические команды

184

Урок 10. Команды передачи управления

202

Урок 11. Цепочечные команды

229

Урок 12. Сложные структуры данных

250

Урок 13. Макросредства языка ассемблера

278

Урок 14. Модульное программирование

310

Урок 15. Прерывания

353

Урок 16. Защищенный режим работы микропроцессора

380

Урок 17. Обработка прерываний в защищенном режиме.

404

Урок 18. Создание Windows-приложений на ассемблере

419

Урок 19. Архитектура и программирование сопроцессора

500

Урок 20. ММХ-технология микропроцессоров Intel

564

Вместо заключения

623

Содержание

 

Предисловие

9

Урок 1. Общие сведения об ЭВМ

14

Урок 2. Архитектура персонального компьютера

26

Архитектура ЭВМ

27

Набор регистров

38

Организация памяти

46

Типы данных

51

Формат команд

54

Обработка прерываний

55

Урок 3. Простая программа на ассемблере

57

Урок 4. Жизненный цикл программы на ассемблере

66

Трансляция программы

71

Компоновка программы

77

Отладка программы

79

Утилита МАКЕ

83

Урок 5. Структура программы на ассемблере

86

Синтаксис ассемблера

88

Директивы сегментации

98

Простые типы данных ассемблера

105

Урок 6. Система команд микропроцессора

111

Системы счисления

112

Двоичная система счисления

113

Шестнадцатеричная система счисления

114

Десятичная система счисления

116

Перевод чисел из одной системы счисления в другую

116

Перевод в десятичную систему счисления

116

Перевод в двоичную систему счисления

116

Перевод в шестнадцатеричную систему счисления

117

Перевод дробных чисел

118

Числа со знаком

121

Структура машинной команды

123

Способы задания операндов команды

126

Функциональная классификация машинных команд

131

Урок 7. Команды обмена данными

133

Пересылка данных

135

Ввод-вывод в порт

137

Работа с адресами и указателями

143

Преобразование данных

145

Работа со стеком

147

Урок 8. Арифметические команды

153

Общий обзор

154

Целые двоичные числа

155

Десятичные числа

157

Арифметические операции над целыми двоичными числами

159

Сложение двоичных чисел без знака

159

Сложение двоичных чисел со знаком

160

Вычитание двоичных чисел без знака

162

Вычитание двоичных чисел со знаком

164

Вычитание и сложение операндов большой размерности

165

Умножение двоичных чисел без знака

166

Умножение двоичных чисел со знаком

168

Деление двоичных чисел без знака

168

Деление двоичных чисел со знаком

170

Вспомогательные команды для целочисленных операций

170

Команды преобразования типов

170

Другие полезные команды

172

Арифметические операции над двоично-десятичными числами

173

Неупакованные BCD-числа

174

Упакованные BCD-числа

180

Урок 9. Логические команды

184

Логические данные

186

Логические команды

187

Команды сдвига

191

Линейный сдвиг

192

Циклический сдвиг

194

Дополнительные команды сдвига

196

Примеры работы с битовыми строками

198

Рассогласование битовых строк

198

Вставка битовых строк

199

Извлечение битовых строк

200

Пересылка битов

200

Урок 10. Команды передачи управления

202

Безусловные переходы

208

Команда безусловного перехода jmp

208

Процедуры

212

Условные переходы

217

Команда сравнения cmp

218

Команды условного перехода и флаги

220

Команды условного перехода и регистр ecx/cx

222

Организация циклов

222

Урок 11. Цепочечные команды

229

Пересылка цепочек

233

Команда movs

234

Команды пересылки байтов, слов и двойных слов

235

Сравнение цепочек

236

Команда cmps

236

Команды сравнения байтов, слов и двойных слов

239

Сканирование цепочек

239

Команда scas

240

Сканирование строки байтов, слов, двойных слов

242

Загрузка элемента цепочки в аккумулятор

242

Команда lods

242

Загрузка в регистр al/ax/eax байтов, слов, двойных слов

244

Перенос элемента из аккумулятора в цепочку

244

Команда stos

244

Сохранение в цепочке байта, слова, двойного слова из регистра

246

al/ax/eax

 

Ввод элемента цепочки из порта ввода-вывода

247

Вывод элемента цепочки в порт ввода-вывода

247

Урок 12. Сложные структуры данных

250

Массивы

252

Описание и инициализация массива в программе

252

Доступ к элементам массива

254

Типовые операции с массивами

261

Структуры

264

Описание шаблона структуры

265

Определение данных с типом структуры

265

Методы работы со структурой

266

Объединения

268

Записи

270

Описание записи

271

Определение экземпляра записи

271

Работа с записями

273

Дополнительные возможности обработки

275

Урок 13. Макросредства языка ассемблера

278

Псевдооператоры equ и =

280

Макрокоманды

283

Макродирективы

291

Директивы WHILE и REPT

292

Директива IRP

293

Директива IRPC

294

Директивы условной компиляции

294

Директивы компиляции по условию

295

Директивы генерации ошибок

302

Константные выражения в условных директивах

305

Дополнительное управление трансляцией

307

Урок 14. Модульное программирование

310

Технологии программирования

311

Структурное программирование

312

Концепция модульного программирования

313

Процедуры в языке ассемблера

315

Организация интерфейса с процедурой

317

Связь ассемблера с языками высокого уровня

330

Связь Pascal—ассемблер

333

Команды enter и leave

343

Связь С—ассемблер

346

Урок 15. Прерывания

353

Контроллер прерываний

357

Программирование контроллера прерываний 18259А

362

ICW1 — определить особенности последовательности приказов

363

ICW2 — определение базового адреса

363

ICW3 — связь контроллеров

364

ICW4 — дополнительные особенности обработки прерываний

366

OCW1 — управление регистром масок IMR

366

OCW2 — управление приоритетом

366

OCW3 — общее управление контроллером

367

Каскадирование микросхем i8259A

368

Реальный режим работы микропроцессора

369

Обработка прерываний в реальном режиме

371

Урок 16. Защищенный режим работы микропроцессора

380

Системные регистры микропроцессора

382

Регистры управления

383

Регистры системных адресов

384

Регистры отладки

385

Структуры данных защищенного режима

386

Пример программы защищенного режима

391

Подготовка таблиц глобальных дескрипторов GDT

392

Запрет обработки аппаратных прерываний

397

Переключение микропроцессора в защищенный режим

398

Работа в защищенном режиме

399

Переключение микропроцессора в реальный режим

401

Разрешение прерываний

402

Стандартное для MS-DOS завершение работы программы

402

Урок 17. Обработка прерываний в защищенном режиме

404

Шлюз ловушки

411

Шлюз прерывания

412

Шлюз задачи

413

Инициализация таблицы IDT

415

Обработчики прерываний

416

Программирование контроллера прерываний 8259А

416

Загрузка регистра IDTR

417

Урок 18. Создание Windows-приложений на ассемблере

419

Каркасное Windows-приложение на C/C++

423

Каркасное Windows-приложение на ассемблере

435

Стартовый код (строки 54-73)

445

Главная функция (строки 74-162)

447

Обработка сообщений в оконной функции

456

Средства TASM для разработки Windows-приложений

459

Углубленное программирование на ассемблере для Win32

462

Ресурсы Windows-приложений на языке ассемблера

463

Меню в Windows-приложениях

464

Перерисовка изображения

472

Окна диалога в Windows-приложениях

480

Урок 19. Архитектура и программирование сопроцессора

500

Архитектура сопроцессора

502

Регистр состояния swr

507

Регистр управления cwr

508

Регистр тегов twr

509

Форматы данных

509

Двоичные целые числа

510

Упакованные целые десятичные (BCD) числа

511

Вещественные числа

512

Специальные численные значения

516

Система команд сопроцессора

520

Команды передачи данных

522

Команды загрузки констант

525

Команды сравнения данных

525

Арифметические команды

528

Команды трансцендентных функций

537

Команды управления сопроцессором

549

Исключения сопроцессора и их обработка

554

Исключение недействительная операция

555

Деление на ноль

556

Денормализация операнда

556

Переполнение и антипереполнение

556

Неточный результат

556

Немаскируемая обработка исключений

557

Использование отладчика

559

Общие рекомендации по программированию сопроцессора

561

Урок 20. ММХ-технология микропроцессоров Intel

564

MMX-расширение архитектуры микропроцессора Pentium

566

Модель целочисленного MMX-расширения

566

Особенности команд MMX-расширение

568

Система команд

574

Отладка программ

578

Пример применения ММХ-технологии

593

Дополнительные целочисленные ММХ-команды (Pentium III)

606

ХММ-расширение архитектуры микропроцессора Pentium

608

Модель ХММ-расширения

609

Система команд

611

Вместо заключения

623