Морер У. 79 Язык ассемблера для персонального компьютера Эпл: Пер. с англ. — М.: Мир, 1987. —430 с. В книге американского специалиста описывается язык ассемблера персональной ЭВМ Эпл, построенной на базе микропроцессора 6502. Рассматривается система команд ЭВМ, способы адресации, работа с 8-разрядными и 16-разрядными числами. Значительное внимание уделяется технике составления и оптимизации программ на языке ассемблера, а также их отладки. Для преподавателей средних школ, техникумов, студентов вузов, специалистов различных отраслей народного хозяйства. Предисловие переводчика
Предлагаемая читателю книга представляет собой добротно написанное учебное пособие по языку ассемблера персональной микроЭВМ Эпл. Поскольку основой этой машины является микропроцессор 6502, с таким же успехом можно сказать, что в книге описывается язык ассемблера этого микропроцессора.
МикроЭВМ Эпл (Эпл II, ЭплП+, ЭплПе, Эпл III), выпускаемые корпорацией Apple Computer, относятся к числу наиболее популярных и распространенных во всем мире персональных ЭВМ. Оперативная память достаточно большой емкости (48К или 64К байт), встроенное системное программное обеспечение на ПЗУ (монитор и интерпретатор Бейсик), дисплей для вывода алфавитно-цифровой и графической информации, наличие дисковой памяти и дисковой операционной системы DOS, возможность использования языков программирования высокого уровня (Паскаль, Кобол) и другие характерные для современных персональных ЭВМ черты делают эту машину чрезвычайно удобной для проведения инженерно-технических расчетов, анализа экспериментальных данных, построения персональных обучающих систем. Конструкцией ЭВМ предусмотрена возможность подключения интерфейсных плат для управления дополнительными периферийными устройствами, в том числе нестандартным электронным оборудованием, а также использования ПЗУ или ППЗУ небольшой емкости для хранения управляющих программ.
Концепция персональных ЭВМ предполагает, в частности, широкое использование готового программного обеспечения (текстовые процессоры, программы планирования бюджета, средства создания персональных баз данных, программы межмашинной связи по телефонным линиям и обращения к информационным системам коллективного пользования и т. д.), что позволяет во многих случаях обойтись без программирования. Для решения же вычислительных задач и проведения научно-технических расчетов, а также для управления аппаратно-программными средствами ЭВМ (графические системы, звуковой генератор, порты ввода-вывода и т. д.) используется язык Бейсик. Основные недостатки этого языка —низкая скорость выполнения написанных на нем программ и ограниченные возможности по созданию программ управления нестандартным оборудованием. Существенно большие возможности предоставляет язык ассемблера, широко используемый при разработке
программного обеспечения измерительно-вычислительных комплексов и других систем реального времени.
Книга У. Морера является одним из наиболее полных и удачных в методическом отношении пособий по изучению языка .ассемблера процессора 6502. Начиная с простейших представлений об организации ЭВМ и хранении в ней двоичной информации, автор последовательно описывает средства языка ассемблера, подробно останавливаясь на их использовании при выполнении арифметических и логических операций, организации циклов и переходов, операциях с массивами, обработке символьной информации и т. д.
Процессор 6502 имеет 8-битовую разрядность, что серьезно ограничивает его вычислительные возможности. В книге большое внимание уделяется приемам работы с 16-разрядными (2-байтовыми) операндами, использование которых требует специальной техники программирования.
При организации на базе микроЭВМ измерительных систем реального времени особую важность приобретает оптимизация программы по памяти и времени .выполнения. Автор уделяет должное внимание данной проблеме. Кроме специальной главы, посвященной этому вопросу, в книгу включено большое количество примеров и задач на оптимизацию программ.
Известно, что отладка и корректировка программ на языке ассемблера весьма трудоемки и требуют специальных приемов и системных средств. Большой раздел книги, посвященный этому не слишком освещенному в литературе .вопросу, содержит много полезных рекомендаций, ценность которых выходит за рамки конкретного языка, изучаемого в книге.
Следует заметить, что для процессора 6502 разработано несколько ассемблеров —от мини-ассемблера, обладающего минимальными возможностями, до мощного ассемблера TLA, поддерживающего аппарат макрокоманд и условного ассемблирования. Ассемблер LISA, описанный в книге, несмотря на более скромные возможности, является, пожалуй, наиболее распространенным.
Книгу отличает ясность и последовательность изложения. Большое количество упражнений, сопровождаемых ответами и пояснениями, помогут читателю глубже разобраться ,в рассматриваемых вопросах. Книга может быть рекомендована инженерно-техническим работникам любых специальностей, желающим освоить программирование микропроцессора 6502 или его аналогов, а также студентам, аспирантам и преподавателям вузов.
Перевод книги выполнен И. П. Пчелинцевым (статьи 67— 77) и К. Г. Финогеновым (остальные).
К. Г. Финогенов
Предисловие
Книга является пособием для студентов, изучающих второй язык программирования, после того как ими освоен Бейсик (или, возможно, Паскаль, Фортран или ПЛ/1). Она может быть использована .в университетах, колледжах, школах, а также для самостоятельного изучения. Автор пользуется ею в Университете Джорджа Вашингтона, на факультете электротехники и вычислительной техники.
Бейсик, так же как и другие алгебраические языки, например Фортран и Паскаль, в значительной степени машинно-независим. Вы можете написать программу на Бейсике для одной ЭВМ и ожидать, что для ее выполнения на другой ЭВМ вам придется внести в программу лишь минимальные изменения. В этой книге, однако, вы познакомитесь с языком ассемблера и машинным языком, которые оказываются совершенно различными для разных семейств ЭВМ.
Учитывая это обстоятельство, нам прежде всего надо решить, на какую ЭВМ ориентироваться. В этой книге предполагается, что вы работаете на ЭВМ Эпл, которая является одной из самых популярных ЭВМ в мире. (Говоря «Эпл», мы всегда будем понимать Эпл П+, Эпл Не, либо Эпл III, работающую в режиме эмуляции). Эпл представляет собой вычислительную систему, собственно вычислительной частью которой служит процессор 65021'. Таким образом, в этой книге рассматривается язык ассемблера и машинный язык процессора 6502.
Для практического освоения этих языков вам понадобится ассемблер. Это специальная программа, обрабатывающая программы на языке ассемблера примерно так же, как различные системы Бейсик, используемые на ЭВМ Эпл, обрабатывают программы на языке Бейсик. Мы будем предполагать, что у вас есть какой-либо из ассемблеров LISA 1.5, LISA 2.5 48К или LISA 2.5 64K2)i3). В целом ряде обзоров признавалось, что ас-
'> Процессор 6502, в силу технологических особенностей его выполнения называется микропроцессором. Он изготавливается фирмой MOS Technology, Inc. в г. Морристауне, шт. Пенсильвания. ЭВМ Эпл выпускается фирмой Apple Computer Corporation в г. Купертино, шт. Калифорния.
2) Все они разработаны фирмой Laser Ware. Заметьте, что ассемблер LISA не имеет ничего общего с ЭВМ LISA, выпускаемой корпорацией Apple Computer.
3) LISA представляет собой ассемблер (т. е. системную программу, предназначенную для преобразования исходного текста программы пользователя на языке ассемблера в машинные коды), оснащенный средствами создания и редактирования исходного текста, выгрузки его на диск и сохранения там в в виде файла и т. д. (см. табл. ШЗ).'— Прим. перев.
Содержание
Предисловие переводчика 5
Предисловие 7
Статья 1. Коды 13 Статья 2. Двоичные числа 15 Статья 3. Двоичные сложение и вычитание 19 Статья 4. Шестнадцатеричная система 22 Статья 5. Шестнадцатеричные сложение и вычитание 25 Статья 6. Регистры, ячейки и байты 27 Статья 7. Многобайтовые величины и дополнение до двух 30 Статья 8. Загрузка регистров и запись в память 34 Статья 9. Инкремент и декремент - 37 Статья 10. Машинный язык и язык ассемблера 40 Статья 11. Ассемблер и псевдокоманды 43 Статья 12. Двухбайтовые числа и адресные выражения 46 Статья 13. Индексированные переменные и индексные регистры 49 Статья 14. Система счисления с основанием 256 53 Статья 15. Сложение в процессоре 6502 55 Статья 16. Связь между переносом и займом 59 Статья 17. Вычитание в процессоре 6502 62 Статья 18. Команды пересылки и комментарии 65 Статья 19. Переходы и метки 68 Статья 20. Сравнение, флажок нуля и переходы 72 Статья 21. Циклы 75 Статья 22. Дополнительные сведения о циклах и флажке нуля 79 Статья 23. Смещения 82 Статья 24. Символьные коды 86 Статья 25. Ввод-вывод, подпрограммы и «EQU» 90 Статья 26. Объявления констант 94 Статья 27. Программный счетчик и относительная адресация 97 Статья 28. Флажок знака и команды сравнения 101 Статья 29. Сравнение двухбайтовых величин 105 Статья 30. Инкремент, декремент и дополнение двухбайтовых величин \07 Статья 31. Умножение и деление на два ПО Статья 32. Массивы двухбайтовых величин П4 Статья 33. Умножение на десять И? Статья 34. Циклический и 16-разрядный сдвиги 121 Статья 35. Обработка битов и паритет 125 Статья 36. Просмотр таблиц и вычисление времени выполнения программы 12° Статья 37. Компромисс между требуемым объемом памяти и временем
выполнения '31
Статья 38. Двоичные умножение и деление |34
Статья 39. Подпрограмма умножения '^
Статья 40. Подпрограмма деления }^д
Статья 41. Входное и выходное преобразования Jf I
Статья 42. Законченные программы J^i
Статья 43. Ручное ассемблирование J|j?
Статья 44. Ручные проверка и прогонка }й!
Статья 45. Ошибки смешивания, наложения и стартового адреса '°
Статья 46. Команды программы LISA 170 Статья 47. Пошаговое выполнение и трассировка 174 Статья 48. Отладка с точками останова 178 Статья 49. Принцип разрыва телефонной линии и двоичный поиск 182 Статья 50. Заплаты в программах на языке ассемблера 185 Задача 1 для решения на ЭВМ 188 Статья 51. Вызов программ на языке ассемблера из программ на Бейсике 189 Статья 52. Логическое И • 193 Статья 53. Логическое ИЛИ 197 Статья 54. Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ 199 Статья 55. Проверка битов 202 Статья 56. Флажок переполнения 205 Статья 57. Сохранение и восстановление переменных 209 Статья 58. Адреса возврата и косвенные переходы 212 Статья 59. Стеки 215 Статья 60. Команды, ориентированные на использование стека - 218 Задача 2 для решения на ЭВМ 222 Статья 61. Использование аппаратного стека 223 Статья 62. Программа входного преобразования , 226 Статья 63. Программа выходного преобразования 230 Статья 64. Преимущества аппаратного стека 235 Статья 65. Двоично-десятичные числа и десятичный режим 238 .Статья 66. Упакованные строки 241 Статья 67. Регистр состояния 244 Статья 68. Прерывания 247 Статья 69. Команды ввода данных 251 Статья 70. Команды вывода данных 255 Задача 3 для решения на ЭВМ 258 Статья 71. Очереди и метод опроса 258 Статья 72. Звуковое устройство и программирование в реальном времени 262 Статья 73. Дополнительные средства описания строк 266 Статья 74. Команды для нулевой страницы 270 Статья 75. Предындексная косвенная адресация 274 Статья 76. Постиндексная косвенная адресация 277 Статья 77. Длинные массивы 281 Статья 78. Модификация адресов 295 Статья 79. Параметры подпрограмм 288 Статья 80. Модификация данных в командах с непосредственной адресацией 292 Задача 4 для решения на ЭВМ 295 Статья 81. Модификация относительных адресов 296 Статья 82. Массивы строк 299 Статья 83. Массивы шестнадцатеричных цифр 303 Статья 84. Сортировка 307 Статья 85. Упорядочение по алфавиту 310 Статья 86. Поиск в упорядоченном массиве 313 Статья 87. Двумерные массивы 317 Статья 88. 16-разрядные числа со знаком 321 Статья 89. Отрицательное индексирование 324 Статья 90. Паритет при работе с магнитной лентой 327 Задача 5 для решения на ЭВМ ' 330 Статья 91. Дисковая операционная система ЭВМ Эпл 331 Статья 92. Дальнейшие сведения о текстовых файлах 336 Статья 93. Эмуляторы 339 Статья 94. Интерпретаторы 342
Статья 95. Ассемблеры и компиляторы 345
Статья 96. Структурное программирование 348
Статья 97. Двоичные и шестнадцатеричные дроби 352 Статья 98. Действительные числа и представление с плавающей точкой 355
Статья 99. Операции с плавающей точкой 358
Статья 100. Вычисления с преобразованием типов 359
Задача 6 для решения на ЭВМ 363
Приложение 366
Ответы к упражнениям, помеченным звездочками 390
.Литература 420
Лоелметный указатель 422


Hosted by uCoz