Математика | ||||
Скэнлон Л. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера: Пер. с англ. — 2-е изд., стереотип. - М.: Радио и связь. 1991. - 336 с.: ил. ISBN 5-256-00956-7 В книге автора из США рассмотрен широкий круг вопросов, связанных с программированием на языке ассемблера для персональных ЭВМ IBM PC и XT. Приведены полные системы команд микропроцессоров Intel 8088 и 8087. Рассмотрены вопросы использования ресурсов операционной системы DOS и управления внешними устройствами, работа с клавиатурой и звуковым генератором, программы обработки прерываний системы ввода-вывода. Приведено большое число примеров и задач с решениями. Для программистов. | ||||
ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ Принято считать, что знание языка ассемблера необходимо лишь профессиональным программистам. Это подкрепляется тем, что большинство научно-инженерных и экономических задач гораздо легче программировать на языках высокого уровня, таких как Бейсик, Фортран, Паскаль, а наличие огромного числа готовых прикладных программ для персональных ЭВМ IBM PC и XT позволяет во многих случаях вообще обойтись без программирования в обычном смысле этого слова. Тем не менее интерес к языку ассемблера для персональных ЭВМ IBM PC и XT постоянно растет, и не только среди профессиональных программистов. Объясняется это тем, что для самостоятельного выполнения простых доработок готовых программ и дополнения возможностей, предоставляемых трансляторами языков программирования высокого уровня, существует целый арсенал популярных и недорогих средств, таких как программы анализа и редактирования двоичных файлов, отладчики и ловушки прерываний и т. д. Грамотное применение этих средств сокращает затраты времени на доработку и отладку программ, а также повышает эффективность использования персональных ЭВМ. Однако для этого пользователю необходимо иметь определенный минимум знаний языка ассемблера, а также структуры и функции операционной системы PC DOS. Предлагаемая читателю книга Л. Скэнлона рассчитана на предоставление подобного минимума знаний, позволяющего уверенно выполнять небольшие ассемблерные вставки в программах на языках Бейсик, Фортран и Паскаль, а также пользоваться пакетами программ типа Norton Utilities и PC Tools для несложного редактирования исполняемых программных файлов (например, для замены или перевода на русский язык выдаваемых ими сообщений). Эту книгу можно рекомендовать широкому кругу пользователей персональных ЭВМ, совместимых с IBM PC и XT. Кроме того, ее можно рассматривать как элементарное введение в операционную систему PC DOS и язык ассемблера для персональных ЭВМ fBM PC и XT, вполне доступное старшеклассникам и студентам вузов. И. В. Емелин СОДЕРЖАНИЕ ЭТОЙ КНИГИ В гл. 1 мы дадим общее представление о микропроцессоре 8088 - "мозге" персональной ЭВМ IBM PC - и обсудим его роль в системе. В начале гл. 2 обсуждаются общие свойства Ассемблеров, а затем дается описание Макроассемблера фирмы IBM. Все Ассемблеры PC-совместимых ЭВМ выполняют одну и ту же работу: они транслируют понятные Вам команды в числовые коды, которые понятны микропроцессору ЭВМ. Следовательно, большинство из описываемых нами принципов применимы к любому другому Ассемблеру, который может оказаться в Вашем распоряжении. В гл. 2 представлена также простая программа и показано, как ее ввести в ЭВМ, оттранслировать и исполнить (вызвать). В гл. 3 описана система команд микропроцессора 8088, т. е. команды языка ассемблера, с помощью которых обеспечивается взаимодействие с Вашей ЭВМ IBM PC. Команды в этой книге описаны не в алфавитном порядке, а в зависимости от их принадлежности к функциональным группам. Другими словами, мы группируем сложение с вычитанием, умножение с делением и т. д. При таком подходе Вы не только понимаете, что делают команды, но и получаете представление об их взаимосвязях. В гл. 4 показано, какие сочетания команд надо использовать для выполнения довольно сложных математических операций, которые в системе команд микропроцессора непосредственно не предусмотрены. В гл. 5 обсуждаются операции над списками и таблицами. Персональные ЭВМ IBM PC и XT имеют встроенную управляющую программу, называемую BIOS (Basic I / О System - основная система ввода-вывода), которая обеспечивает взаимодействие с оборудованием системы. Другими словами, она обеспечивает все необходимое, что требуется для взаимодействия микропроцессора с клавиатурой, экраном, дисководом, принтером и другими периферийными устройствами. Следовательно, система BIOS выполняет функции "главного администратора" ЭВМ и обладает многими полезными возможностями, знание которых позволит Вам сберечь часы, затрачиваемые на программирование. В гл. 6 показано, как реализовать эти возможности. В гл. 7, 8 обсуждаются программы, которые изображают на экране простые графические образы и генерируют звуки (даже музыку !) с помощью динамика, встроенного в ЭВМ IBM PC. В гл. 9 рассмотрены макроопределения. Макроопределение представляет собой мини-программу, которая помещается в текст основной программы просто упоминанием имени. Применение макроопределений может упростить разработку программ на языке ассемблера до уровня программ на языке Бейсик. В этой главе приводится также "библиотека" из более чем 30 полезных макроопределений. В гл. 10 описано использование объектных библиотек, т. е. дисковых файлов, содержащих уже оттранслированные программы. Фактически объектная библиотека представляет собой набор готовых к употреблению инструментов, которые Ваша программа может выбрать по мере необходимости. Возможность создания объектных библиотек введена фирмой IBM в Макроассемблер версии 2. В гл. 11 описано еще одно новое свойство Макроассемблера версии 2:он позволяет Вам разрабатывать структурированные программы на языке ассемблера. Под "структурированной" мы понимаем программу, содержащую операторы высокого уровня, подобные операторам IF-THEN и FOR-NEXT в Бейсике. Структурирование ускорит Вашу работу над программой и сделает ее более легкой для понимания. Наконец в гл. 12 мы обсудим математический сопроцессор 8087,представляю-щий собой дополнительную микросхему, которая может выполнять сложные арифметические операции. Для удобства читателя в книгу включены пять приложений. В приложении А даны таблицы, которые помогут преобразовывать шестнадцатеричные числа в десятичные и наоборот. В приложении Б показаны символы и образы, которые можно изобразить на экране. В приложениях В и Г в алфавитном порядке перечислен набор команд микропроцессора 8088 и показано, сколько времени занимает выполнение каждой из команд, сколько байтов памяти занимает каждая команда и на какие флаги состояния она воздействует. Приложение Д представляет собой "руководство по пользованию диском", в котором описано, как использовать программы, находящиеся на дополнительно поставляемом диске. Большинство глав завершается упражнениями. Некоторые из них помогут проверить, насколько Вы поняли материал главы, другие дополнят Ваше знание материала. ЧТО ТРЕБУЕТСЯ ПРИ ЧТЕНИИ ЭТОЙ КНИГИ Для работы над книгой Вам нужна персональная ЭВМ IBM PC, имеющая по крайней мере один дисковод, или персональная ЭВМ IBM XT. Вам потребуются также два пакета программ: Ассемблер и дисковая операционная система DOS (Disk Operating System) фирмы IBM. ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА Эта книга построена как дополнение к руководству по Макроассемблеру и руководствам, поставляемым вместе с ЭВМ, поэтому, скорее всего, другая литература Вам не понадобится. Однако всякий серьезный пользователь ЭВМ IBM PC должен иметь копию технического руководства (Technical Reference) по персональной ЭВМ IBM, PC (или ХТ),представляющего собой бесценный источник технических деталей. Наряду с прочим материалом это руководство содержит полный и хорошо документированный листинг встроенной в ЭВМ управляющей программы BIOS. , Если Ваша ЭВМ снабжена операционной системой DOS версии 2.1 (или более поздней), то полезно приобрести копию технического руководства по операционной системе DOS фирмы IBM (DOS Technical Reference), содержащего детальные сведения об организации хранения данных на диске, о процедурах DOS, к которым можно обращаться из программ на языке ассемблера, и о других возможностях системы. Наконец, для получения детальных сведений об интегральных микросхемах системы Вам могут понадобиться следующие справочные документы: The iAPX 86, 88 User's Manual; The $086 Family User's Manual; iAPX 88 Book; iAPX 88/10 Data Sheet. Их можно заказать в литературном отделе фирмы Intel Corporation по адресу 3065 Bowers Ave.; Santa Clara, CA 95051. ИЗМЕНЕНИЯ В ЭТОМ ИЗДАНИЙ 'Обладатели предыдущих изданий этой книги, наверное, обратят внимание на некоторые изменения, сделанные в данном издании. Некоторые из них отражают новые функции, предусмотренные в Макроассемблере версии 2.00; к ним относятся новые главы, посвященные объектным библиотекам и структурному программированию (гл. 10,11). Кроме того, автором добавлена глава, описывающая макроопределения (гл. 9). а также расширены и дополнены многие разделы с учетом личного опыта и предложений читателей. Короче говоря, автор попытался сделать эту книгу более полезной как для чтения, так и для справок. Язык ассемблера представляет собой очаровательное и эффективное средство программирования, и автор надеется, "что читатель получит столько же удовлетворения от его использования, сколько получил автор от написания этой книги. Лео Д. Скэнлон, июнь 1985г. ОГЛАВЛЕНИЕ Предисловие к русскому изданию. ... 5 Предисловие. Зачем нужен язык ассемблера?.................... 6 Введение. Интенсивный курс систем счисления для ЭВМ.............. 1C 8.1. Двоичная система счисления .... 10 Восемь битов образуют байт..... 11 Сложение двоичных чисел...... 12 Числа со знаком............. 13 8.2. Шестнадцатеричная система счисления.................. 14 Применение шестнадцатеричных чисел..................... 15 Упражнения................ 15 Глава 1. Введение в программирование на языке ассемблера........... 16 1.1. Что такое язык ассемблера?..... 16 1.2. Происхождение микропроцессора 8088.......................... 16 1.3. Общие сведения о микропроцессоре 8088 . . . .'..... 18 Адресация.................. 18 Возможности программирования . 19 Область портов ввода-вывода ... 20 Распределение памяти......... 20 Прерывания................ 20 Адресная шина и шина данных . . 21 1.4. Внутренние регистры.......... 21 Регистры данных............. 21 Регистры сегментов .•.......... 22 Регистры указателей и индексов . 23 Указатель команд............ 23 Флаги..................... 24 Упражнения................ 26 Глава 2. Пользование Ассемблером 26 2.1. Что такое Ассемблер?.......... 26 2.2. Разработка программы на языке ассемблера.................. 27 Редактор................... 27 Ассемблер.................. 28 Загрузчик LINK.............. 28 Отладчик DEBUG............. 28 Разработка программы методом "сверху вниз"............... 29 2.3. Операторы исходной программы. . 30 334 Константы в операторах исходной программы................. 30 2.4. Команды языка ассемблера..... 30 Поле метки................. 31 Поле мнемокода............. 31 Поле операнда............... 32 Поле комментариев........... 32 2.5. Псевдооператоры............. 32 Псевдооператоры данных...... 33 Псевдооператоры управления листингом.................. 41 2.6. Операции................... 42 Арифметические операции...... 42 Логические операции........ 45 Операции отношения......... 46 Операции, возвращающие значения.................. 47 Операции присваивания атрибутов................. 48 2.7. Ввод, трансляция и исполнение программы................ 49 Создание рабочего диска Ассемблера.......'......... 50 Пример программы.......... 50 Ввод программы............ 52 Трансляция программы....... 53 Листинг исходной программы . . 54 Создание исполняемого файла. . 56 Исполнение программы....... 56 Другие виды листинга........ 60 2.8. Модели структуры программы . . 61 2.9. Дополнительные псевдооператоры 63 Псевдооператоры данных..... 63 Условные псевдооператоры.... 65 Листинговые псевдооператоры. . 68 2.10. Обзор ключевых моментов. ... 69 Упражнения............... 71 Глава 3. Система команд микропроцессора 8088................... 72 3.1. Об этой главе............... 72 3.2. Режимы адресации........... 72 Регистровая и непосредственная адресация................. 74 Режимы адресации па*мяти .... 75 3.3. Типы команд............... 78 3.4. Команды пересылки данных ... 82 Команды общего назначения... 83 Команды ввода-вывода....... 87 Команды пересылки адреса.... 87 Команды пересылки флагов ... 88 3.5. Арифметические команды ..'... 89 Форматы арифметических данных 90 Команды сложения.......... 91 Команды вычитания......... 95 Команды умножения........ 99 Команды деления........... 101 Команды расширения знака ... 102 3.6. Команды манипулирования битами................... 102 Логические команды......... 102 Команды сдвига и циклического сдвига................... 106 3.7. Команды передачи управления. . 108 Команды безусловной передачи управления................ 110 Команды условной передачи управления................ 114 Команды управления циклами . 118 3.8. Команды обработки строк..... 119 Префиксы повторения........ 121 Команды пересылки стррк..... 122 Команды сравнения строк..... 124 Команды сканирования строк . . 126 Команды загрузки и сохранения строки................... 127 3.9. Команды прерывания........ 128 3.10. Команды управления микропроцессором.......... 131 Команды управления флагами 131 Команды внешней синхронизации ............. 132 Команда холостого хода...... 133 3.11. Обзор ключевых моментов главы.................... 133 Упражнения............... 136 Глава 4. Операции вал числами повышенной точности........... 137 4.1. Умножение................ 137 Умножение двух 32-битовых чисел без знака............. 138 Умножение двух 32-битовых чисел со знаком............ 140 4.2. Деление................... 142 4.3. Извлечение квадратного корня. . 145 Упражнения............... 147 Глава 5. Манипулирование структурами данных............ 147 5.1. Неупорядоченные списки...... 148 Добавление элемента к неупорядоченному списку ... 148 Удаление элемента из неупорядоченного списка . . . 149 Поиск максимума и минимума в неупорядоченном списке .... 151 5.2. Сортировка неупорядоченных данных................... 152 Пузырьковая сортировка...... 152 5.3. Упорядоченные списки....... 157 Поиск в упорядоченном списке 157 Вставка элемента в упорядоченный список................ 161 Удаление элемента из упорядоченного списка....... 162 5.4. Табличные функции......... 163 Табличные функции в качестве замены формул............. 164 Табличные функции и преобразование кодов...... 168 Таблицы переходов.......... 169 5.5. Текстовые файлы............ 170 Упражнения............... 172 Глава 6. Пользование системными ресурсами.................... 172 6.1. Память вычислительной системы 172 6.2. Прерывания системы BIOS..... 174 Векторы прерываний микропроцессора 8088........ 176 Векторы прерывания микроконтроллера 8259....... 178 Входные точки системы BIOS. . . 179 Вызовы процедур пользователя 187 Указатели системных таблиц . . . 188 6.3. Прерывания операционной системы DOS ..............-188 Тип 21 (вызовы функций)..... 194 Программа выдачи сообщений об ошибках операционной системы DOS версии 2.............. 202 6.4. Работа с клавиатурой......... 205 Система ASCII.............. 205 Принцип действия клавиатуры ЗВМ IBM PC............... 206 Коды символов и scan-коды . . . 208 Прерывания для работы с клавиатурой.............. 212 6.5. Преобразование чисел из ASCII-кодов в двоичную систему...... 214 Преобразование строки ASCII-кодов в двоичное число........... 215 Преобразование двоичного числа в строку ASCII-кодов........ 220 Упражнения............... 221 Глава 7. Простые способы получения графических изображений........ 221 7.1. Режимы изображения......... 221 7.2. Изображаемые символы....... 222 Набор символов...........'. 222 Команды дисплея........... 225 Простые приемы построения изображений............... 225 7.3. Основы оживления изображений. 228 Старый трюк с движением "рожицы"................. 229 7.4. Создание сложных изображений с помощью таблицы образа .... 230 Универсальная процедура изображения............... 231 Упражнения............... 234 Глава 8. Да будет звук!........ 235 8.1. Лринцип работы динамика..... 235 8.2. Программирование динамика. . . 236 Процедура ВЕЕР системы BIOS. . 236 Более универсальный генератор звуков................... 236 8.3. Музыка, музыка, музыка..... 238 Процедура исполнения мелодии 240 Музыка с клавиатуры........ 242 Глава 9. Макроопределения..... 244 9.1. Введение в макроопределения.. 244 Сравнение макроопределений и процедур................ 245 Макроопределения ускоряют программирование.......... 245 Состав макроопределений..... 246 9.2. Псевдооператоры Макроассемблера ................ 247 Псевдооператоры общего назначения................ 247 Псевдооператоры повторения . . 250 Условные псевдооператоры.... 251 Псевдооператоры управления листингом................ . 253 9.3. Операции в макроопределениях 253 9.4. Задание макроопределений в исходных программах.......... 254 9.5. Библиотека макроопределений 255 Создание библиотеки макроопределений .......... 256 Указание для задания макроопределений .......... 256 Считывание библиотеки макроопределений в программу 256 Описание макроопределений. . . 257 Текст макроопределений...... 265 Глава 10. Библиотеки объектных модулей..................... 277 10.1. Составление библиотеки объектных модулей......... 278 10.2. Выполнение операций над библиотекой объектных модулей . . 278 Как получить каталог библиотеки................ 279 10.3. Пользование библиотеками объектных модулей......... 279 Глава 11. Структурное программирование.............. 279 11.1. Структурные операторы и струк» туры логики управления...... 280 Условия в структурах логики управления................ 281 11.2. Структура^ ............... 281 Структура IF с частицей ELSE .. 283 Функционирование структуры IF 283 Варианты операнда.......... 284 11.3. Структура DO.............. 285 Структура DO UNTIL......... 286 Структура DO WHILE......... 286 Струк-ypaDO COMPLEX...... 287 Дополнительные операнды .... 288 11.4. Структура SEARCH.......... 289 Структура SEARCH UNTIL..... 290 Структура SEARCH WHILE..... 290 Структура SEARCH COMPLEX . . 292 Дополнительные операнды .... 292 11.5. Ограничения на использование условий NCXZ и CXZ........ 293 11. 6. Составление структурированных программ................. 293 Процедура................ 293 Использование программы SALUT 295 Переформатирование исходных текстов программой SALUT .... 296 Глава 12. Математический сопроцессор 8087............... 297 12.1. Внутренние регистры........ 297 Стек сопроцессора 8087....... 298 Формат чисел с плавающей точкой.................... 298 12.2. Типы данных.............. 298 12.3. Система команд............ 299 12.4. Программирование сопроцессора 8087 на макроассемблере......... 302 Константы................. 302 Псевдооператоры определения данных................... 302 12.5. Заключение............... 303 Ответы к упражнениям.......... 304 Приложение А. Преобразование шестнадцатеричных чисел в десятичные и обратно..................... 311 Приложение Б. Набор ASCII-символов персональной ЭВМ IBM PC ........ 312 Приложение В. Времена исполнения команд микропроцессором 8088 .... 312 Приложение Г. Система команд микропроцессора 8088........... 319 Приложение Д. Руководство по пользованию диском . !.......... 322 Указатель терминов............. 327 Указатель команд и псевдооператоров 333 Цена: 300руб. |
||||