Глава 1 Введение
Программирование на языке Ассемблера
Персональный компьютер фирмы IBM
Эта книга
Глава 2 Основы компьютерных вычислений
Двоичная арифметика
Двоичное дополнение
Шестнадцатерчное представление
Язык машины и язык ассемблера
Синтаксис языка ассемблера
Принципы работы ассемблера
Биты, байты и слова
Нумерация бит
Набор символов
Принципы работы компьютерa
Процедуры
Стек
Прерывания
Глава 3 Микропроцессор 8088
Модель программирования 8088
Регистры общего назначения
Регистры адресации
Прямая адресация
Вычисление адресов
Адресация через Базу + смещение
База + индекс + смещение
Мод-р/м байт
Физическая адресация
Регистры сегмента
Переназначение сегмента
оператор SEGMENT
оператор ASSSUME
Управляющие регистры
Указатель инструкций (IP),
Указатель стека (SP),
Регистр флагов,
Флаг Знака,
Флаг нуля,
Флаг четности,
Флаг переноса,
Дополнительный флаг переноса,
Флаг переполнения,
Флаг захвата,
Флаг прерывания,
Флаг направления,
Векторы прерываний
Глава 4 Команды процессора 8088
Пересылка данных
Пересылка,
Обмен,
Ввод и вывод,
Загрузка исполнительного адреса,
Загрузка указателя,
Передача флагов,
Перевод,
Операции со стеком
Передача параметров
Арифметические команды
Сложение,
Вычитание,
Однооперандная арифметика,
Сравнение,
Десятичная коppекция,
Символьная коppекция: сложение и вычитание,
Умножение,
Символьная коppекция: умножение,
Деление,
Символьная коppекция: деление,
Преобразование,
Арифммметический пример
Логические операции
Операции сдвига и вращения
Операции на строках
Загрузить и сохранить,
REP префикс,
Пересылка строк,
Сканирование и сравнение,
Инструкции передачи управления
Близкая и далекая передача управления,
Адресация переходов
Безусловный переход
Переходы по условию
Проверки кодов условий
Управление циклами
Управляющие инструкции
Установка флагов
Специальые команды
Глава 5 Использование ДОС и Ассемблера
Дисковая операционная система
Система файлов
Директории
Командный процессор
Функции ДОС
Блок управления файла (FCB)
Фалы .COM и .EXE
Создание программы на языке ассемблера
Ассемблер и макроассемблер
Таблица символических имен
Перекрестные ссылки
Редактор
Могомодульность
EXTRN и PUBLIC
Операция слияния (редактирования)
Карта слияния
DEBUG
Перевод из .EXE формы в .COM форму
Глава 6 Свойства Макроассемблера
Макроопределение
Аргументы макроса
Ассемблирование по условию
Повторение макроса
Макрооператоры
Команда INCLUDE
Сегменты
Структуры
Записи
Глава 7 Числовой процессор 8087
Операции 8087
Типы данных 8087
Представление в виде числа с плавающей точкой
Форматы действительных чисел
Определение действительных чисел
Модель программирования 8087
Стек - регистр
Управляющее слово
Слово cостояния
Набор инструкций 8087
Инструкции пересылки данных
Инструкции управления
Арифметические инструкции
Инструкции сравнения
Степенные и тригонометрические функции
Примеры
Степени десяти
Десять в степени X
Изображение чисел с десятичной точкой
Квадратное уравнение
Синус угла
Отладка программ с использованием 8087
Глава 8 Персональный компьютер IBM
Системное оборудование
Динамик
Клавиатура
Реальное время
Возможности cистемы
Видеоадаптеры
Адаптеры монохромного дисплея и принтера
Адаптер цветного графического монитора
Текстовый режим
Графический режим
Цветовой режим в 320*200 APA
Графика высокого разрешения
Адаптер паралельного принтера
Адаптер асинхронных коммуникаций
Адаптер управления играми
Адаптер дайвера дискеты
Память прямого доступа
Глава 9 ROM BIOS
Некоторые замечания по содержаию ROM BIOS
Самотестирование при включении питания
Прерывания ROM BIOS
Драйверы доступа
Процедуры пользователя
Блоки параметров
Область данных ROM BIOS
Программы драйверов доступа
Системный сервис
Принтер и асинхронные коммуникации
Клавиатура
Данные клавиатуры
Процедура BIOS клавиатуры изнутри
Кассета
Дискета
Области данных дискеты
Команды чтения и записи
Команда проверки
Команда форматирования
Дисплей
Области данных дисплея
Функции ввода-вывода дисплея
Установка режима
Движение изоражения
Запись и чтение символов
Текст в графических режимах
Графика
Запись на телетайп
Глава 10 Расширения и подпрограммы языка ассемблера
Расширения системы ввода-вывода
Выход в ДОС и сохранение резидента
Загрузка в верхие области памяти
Подпрограммы на языке ассемблера
Применение команды Бэйсика BLOAD к процедуре ассемблера
Короткая встроенная программа
Скомпилированные программы языков высокого уровня
Заключение
Перейти на страницу
ассемблера с остальными компонентами системы. Эта книга для тех, кто начинает программировать на языке ассемблера. Для пользования ею желательно наличие некоторого предварительного опыта в программировании на языках высокого уров ня. В ней не обсуждается формирование алгоритмов и техника программирования. Пользование этой книгой может оказаться затруднительным для вас, если вы не располагаете опытом написания программ на языках Бэйсик, Паскаль или подобных. Тем не менее, эта книга представляет материал в такой форме, которая позволит вам начать программировать на языке ассемблера даже если вы ничего не знаете о внутренней организации компьютера.
Первый раздел книги, состоящий из глав 1 и 2, посвящен принципам работы
ЭВМ. Особое внимание в нем уделяется тем функциям компьютера, которые обычно
не заметны пользователям языков высокого уровня. Сюда относятся двоичная
арифметика и представление данных. В первом разделе также рассматриваются
основные операции ассемблера. Этот раздел может быть пропущен программистами
с опытом работы на языке ассемблера.
Вторая часть книги, включающий главы 3,4 и 7, является описанием процессора,
импользуемого персональным в IBM - Intel 8088. Она включает в себя описание
микропроцессора 8088 (в дальнейшем слово "микропроцессор" будет опускаться
везде, где его нет в оригинале - прим. перев.), его регистров и способов
адресации. Книга представляет набор команд 8088 вместе с примерами, показывающими
ипользование большинства из этих команд. Глава 7 отведена числовому сопроцессору
8087. В ней описываются дополнительные типы данных и команды, реализуемые
8087. В этой главе gриведено несколько примеров для демонстрации работы
числового сопроцессора.
Если предыдущая часть книги достаточно обширна чтобы охватить почти
все системы использующие семейство процессоров 8086/8088, то заключительные
разделы непосредственно связаны с персональным компьютером IBM. Главы 5
и 6 посвящены созданию и использованибю программ на IBM PC. Вы научитесь
пользоваться "инструментарием" языка ассемблера, который включает в себя
строковый редактор, ассемблер, редактор связей, а также общее описание
Дисковой Операционой Системы, которая описывается здесь как программная
среда. В главе 6 описаны некоторые специальные средства доступные как элементы
макро-ассемблера. Сюда входят не только макрокоманды , но и специальные
средства определения данных присущие программированию на языке ассемблера.
Главы 8,9 и 10 охватывают аппаратное оборудование и "микрокопрограммную"
составлящую IBM PC (персонального компьютера IBM). Здесь основное внимание
уделяется специфическим аспектам IBM PC и применению на нем программирования
на языке ассемблера. Особенно интересна глава 10, в которой описывается
техника связи программ на языке асемблера с другими программами или системами.
Эта глава содержит несколько различных методов приспособления ассемблерной
программы к другим программам или превращения этой программы в постоянное
дополнение к системе.
Автор был членом группы, которая разработала и построила IBM PC. Я хочу поблагодарить всех сотрудников фирмы, которые помогали мне в подготовке этого текста. Особая благодарность Дэйву О'Коннору и Джуд Маккарти, моим менеджерам в этот период. Но более всего я признателен моей жене, Синтии (Cynthia) за ее помощь и поддержку.
Дэвид Дж. Брэдли