Математика

Физика

Химия

Биология

Техника и    технологии

Программирование на языке ассемблера и вычислительные системы IBM 360 и 370 У.Радд Москва 1979
Монография представляет собой учебное пособие по электронным вычислительным машинам Систем 360 и 370 фирмы IBM. Содержит сведения о функциональной структуре и машинном языке, методах отладки программ, связях между программами, управлении данными (последовательный метод доступа в DOS и OS). Изложение методически продумано и рассчитано на активное программирование. Все главы сопровождаются задачами и вопросами, в-приложении приведены таблицы для облегчения усвоения материала и словарь терминов.
Книгу могут использовать специалисты по программированию как справочное пособие по языку ассемблера, а преподаватели и студенты- различных вузов—как учебное пособие по программированию.

Предлагаемая вниманию читателя книга по логической структуре и программированию на языке ассемблера Систем 360 и 370 фирмы IBM не является первой публикацией по подобной проблематике. Казалось бы, что при написании такой книги невозможно не повторять ранее вышедшие работы. Однако автор нашел свой, оригинальный методический подход к предмету, что и определило главную ценность книги в целом. Основу подхода составила ориентация автора не на созерцательное изучение и запоминание фактов, а на активное программирование. Этого удалось достигнуть благодаря рассмотрению ряда вспомогательных макрокоманд и тщательному расположению материала в логической последовательности с постепенным возрастанием степени сложности. На каждом этапе вводится только тот материал, который необходим для усвоения читателем рассматриваемых в данный момент новых понятий. Речь идет не только о сведениях, непосредственно относящихся к логической структуре и языку ассемблера, но и о необходимой информации об операционных системах, делающей основной текст более рельефным, однако не перегружающей его. В результате уже после прочтения всего нескольких первых глав читатель может перейти к практическому программированию.
Книга построена таким образом, что, хотя она и опирается на сведения о структуре и программном обеспечении конкретных ЭВМ, рассматриваемые в ней основные положения применимы и к ЭВМ других типов. Перевод не сопровождается программными материа^а-ми, о которых упоминает автор в предисловии. Однако их восстановление не столь уж сложно и может явиться практической задачей, способствующей более активному восприятию материала читателями. При переводе без специальных оговорок в тексте исправлен ряд опечаток и неточностей подлинника.
Настоящая книга может использоваться для первого ознакомления с предметом, поскольку для ее чтения не требуется какой-либо специальной первоначальной подготовки. Она также будет полезна преподавателям и студентам вузов, специализирующимся в области вычислительной техники, программирования и автоматизированных систем управления.
Л. Райков

Предисловие

Предисловие
Данную монографию в первую очередь следует рассматривать как учебное пособие по языку ассемблера вычислительных машин Систем 360 и 370 фирмы IBM. Являясь базой курса по языкам типа ассемблера, книга содержит, кроме того, сведения о функциональной структуре и машинном языке ЭВМ, а также об основах программирования. Помимо этого, она может быть использована и как справочник по языку ассемблера.
Основное внимание в книге уделено не конкретным применениям, а изложению общих принципов. Новичок, только что приступивший к изучению вычислительной техники, обычно довольно смутно представляет, с какими конкретными применениями ему придется столкнуться в будущем. В сущности, ему необходимы лишь хорошие знания основ структуры и функционирования ЭВМ и программирования на языке ассемблера. Встретившись с новым типом команды или какой-либо новой задачей, специалист, овладевший основными концепциями вычислительной науки, сможет без труда ориентироваться в специальной литературе и ознакомиться с необходимой дополнительной информацией по конкретному интересующему его вопросу. По существу, вычислительная наука и программирование на языке ассемблера сходны с математикой в том плане, что, чем более основательны знания студента в фундаментальных вопросах предмета, тем он лучше подготовлен к применению своих знаний на практике и их расширению.
Изложение ориентировано на язык ассемблера операционной системы OS, используемый в ЭВМ Систем 360 и 370. Такой выбор оп-. ределяется следующими причинами: 1) широким распространением этих ЭВМ; 2) наличием у них большинства возможностей, которыми обладают современные высокопроизводительные ЭВМ; 3) уверенностью, что затраты на изучение не пропадут даром (в связи со столь широким распространением ЭВМ этого типа).
С методической точки зрения материал по языкам типа ассемблера трудно расположить в порядке возрастания логической сложности. В отличие от языка ФОРТРАН, изучение минимального подмножества которого позволяет студенту уже через две-три недели после начала занятий приступить к написанию и отладке собственных* программ, язык ассемблера не имеет подобного подмножества. Программирование самой простой арифметической задачи требует знания соглашений о . связи программ, команд ввода-вывода и правил преобразования данных, что является для начинающего непосильной задачей, особенно если от него требуется понимание того, что он делает.
Автор исходит из убеждения, что учащийся должен начать само-. стоятельное программирование как можно раньше. Для этого имеются следующие возможности:
1. Предложить использовать ряд средств языка, например макрокоманду DCB, без объяснения их смысла. Для учащегося, не знающего еще, что такое регистры, этот подход в лучшем случае приведет к недоразумениям, а в худшем — к потере веры в свои силы и желанию бросить занятия.
2. Написать программы ввода-вывода и преобразования данных на одном из языков высокого уровня, таком, как ФОРТРАН или КОБОЛ. В этом случае основная трудность состоит в том, что некоторые из учащихся могут не знать соответствующего языка или же на вычислительном центре не используется необходимый транслятор. •В силе остается и требование знать соглашения о связях.
В этой книге предпринята попытка изложить материал в логической последовательности и по возрастанию его сложности, стремясь при этом по возможности не выходить за пределы проблематики языка ассемблера. Для достижения поставленной цели вводится ряд специальных макрокоманд языка ассемблера. Так, макро INITIAL и EOJ обеспечивают сохранение содержимого регистров и установку регистров базы. Для управления вводом-выводом используются макро RWD (читать слово), WWD (писать слово), RCD (читать карту), PLN (печатать строку), действие которых сводится к вызову подпрограммы, выполняющей нужную функцию. Это позволяет отложить изложение вопросов связей между подпрограммами, манипулирования данными^; ввода-вывода до момента, когда учащийся будет обладать знаниями, необходимыми для их понимания.
Поскольку язык ассемблера теснейшим образом связан с логической структурой ЭВМ, его изучение весьма важно как для специалистов в области вычислительной науки, так и для пользователей. Это нашло отражение в рекомендации ACM (Association of Computer Machinery) принять вопросы структуры ЭВМ и программирования на языке ассемблера в качестве основы второго курса в программе по вычислительным наукам 1). Настоящая книга посвящена программированию на машинном языке и языке ассемблера и поэтому может служить основой для этого курса. Однако включение необходимого вводного материала позволяет пользоваться этой книгой и тем читателям, которые не имеют предварительной подготовки.
Полнота и строгость представленного материала таковы, что опытные программисты могут пользоваться книгой как справочным руко-
11 Curriculum 68, Recomendation for Academic Programs In Oinipntrr Science, Comm. ACM, 11 (1968), 151,
Предисловие 9
водством или для ознакомления с теми или иными конкретными вопросами машинного языка и языка ассемблера Систем 360 и 370 фирмы IBM. Знакомство с оглавлением книги убедит вас в справедливости сделанных замечаний.
В гл. 1 рассматриваются общие основы структуры ЭВМ. Глава 2 содержит введение в архитектуру Систем 360 и 370 и сведения о двоичной и шестнадцатеричной арифметиках. В гл. 3 обсуждается роль языка ассемблера и приведена общая процедура разработки и отладки программ.
Глава 4 описывает арифметические команды формата регистр — регистр и макро RWD и WWD.
В гл. 5 даются некоторые практические сведения об операционных системах, знание которых, необходимо для выполнения программы. После ознакомления с материалом первых пяти глав учащийся готов к написанию и отладке собственных программ. В соответствии с используемой автором методикой этого можно добиться за три недели занятий. В гл. 6 читатель впервые встречается с подробным изложением особенностей машинного языка.
В последующих пяти главах используется приведенная выше схема: знакомство с новыми типами команд, иллюстрации применения этих команд на ряде примеров и лишь затем объяснение соответствующих машинных команд и функций. Таким образом, описание машинного представления и функционирования данного программного средства вводится лишь после того, как читатель ознакомился с соответствующими общими принципами. Преподаватель, считающий более целесообразным акцентировать внимание на методах программирования, а не на общих принципах организации ЭВМ, может изложить материал в соответствующем духе.
Читатель, ознакомившийся с материалом первых одиннадцати глав, получает достаточные знания основ языка ассемблера. Остальной материал книги можно рассматривать как результат применения изложенных принципов.
За главой, посвященной методам отладки и «правилам хорошего тона» при программировании, следует ряд глав, посвященных таким темам, как поразрядные операции, форматы и преобразования данных, десятичная арифметика и соглашения о связях между программами. Затем рассматриваются средства управления данными и последовательный метод доступа в операционных системах DOS и OS.
Дополнительно к основному курсу далее освещаются более специальные вопросы, такие, как арифметика с плавающей точкой и соответствующие преобразования данных, макропрограммирование, редактирование и т. д.
Изучение первых одиннадцати глав предполагается последовательным; с остальными главами можно знакомиться в произвольном порядке в соответствии с конкретными интересами.
Программная поддержка, применение которой предполагается при работе с текстом, включает шесть макро и подпрограмму для выполнения операций ввода-вывода и преобразований данных. Полные листинги всех необходимых программ вместе с инструкциями по применению приведены в руководстве для преподавателя, дополняющем
книгу.
При желании преподаватель может воспользоваться другими способами организации ввода-вывода и связей с подпрограммами, нежели примененные в книге. В этом случае разделы, описывающие применение макрокоманд, могут быть опущены или заменены на новые, отвечающие использованным средствам. Разделы, касающиеся ввода-вывода и связи с подпрограммами, должны быть понятны читателю, ознакомившемуся с материалом первых одиннадцати глав.
Все главы содержат краткие резюме и сопровождаются задачами и вопросами по теме. В приложениях приведены таблицы, помогающие при изучении материала, и словарь терминов, а также рассмотрены методы построения блок-схем и применяемые при этом условные обозначения.
Я считаю своим долгом выразить признательность всем, кто постоянно помогал мне — от возникновения первоначального замысла до выхода книги в свет. Во многом мне помогли члены моей семьи. Госпожа Миранда Медика и другие сотрудники выполнили трудоемкую работу по перепечатке текста. Доктора Сисл Л. Смит и Джон М. Тай-лер и господин Рональд Кордец внесли много полезных предложений. Большую помощь оказал редактор, господин Карл В. Карлстрём, а также рецензенты, внесшие неоценимый вклад по обнаружению мелких и крупных ошибок и упущений, которые неизбежны в таких работах. Госпожа Мелани Роуз, господа Майкл Фармер и Уильям Майкле приняли большое участие в работе с рисунками и упражнениями.
У. Радд
К читателю
Современные ЭВМ оказывают все возрастающее влияние на многие сферы человеческой деятельности. В научной области вычислительные машины позволили решать задачи, которые раньше не поддавались решению из-за непомерного объема работы с данными и вычислений. ЭВМ облегчили решение проблем, связанных с космическими полетами, и находят все более широкое применение при управлении технологическими процессами. Построение большинства систем в области бухгалтерского учета и банковского дела, учета материальных ценностей и управления запасами, трудовых ресурсов, погрузочно-разгру-зочных работ и транспорта ориентировано на ЭВМ. Правительственные органы от местных до федеральных интенсивно применяют ЭВМ для архивных работ и бухгалтерского «учета. Университеты используют ЭВМ для архивных работ, бухгалтерского учета, учета кадров, а также для составления расписаний занятий и учета успеваемости. Многие библиотечные системы в настоящее время полностью автоматизированы, и ведутся работы по каталогизации информации огромных объемов, таких, как материалы судопроизводства или аннотации научных работ, с целью ввода ее в информационно-справочные системы, построенные на базе ЭВМ. Короче говоря, недалек тот день, когда ЭВМ будут использоваться везде, где необходима быстрая обработка больших объемов информации.
Эта книга посвящена ЭВМ, вычислительному процессу и языку ассемблера. Ее основная цель состоит в том, чтобы помочь вам больше узнать о вычислительных машинах путем изучения некоторых основных принципов их организации и программирования. В частности, это учебник по языку ассемблера. •
Язык ассемблера занимает особое место среди языков общения с ЭВМ. В отличие, например, от ФОРТРАНа, который практически не зависит от типа используемой ЭВМ, язык ассемблера тесно связан с применяемыми техническими средствами. В связи с этим, изучая язык ассемблера, вы должны ознакомиться с характеристиками конкретно используемой машины.
Поскольку язык ассемблера существенно зависит от ЭВМ, то и учебник по языку ассемблера мог бы, вообще говоря, описывать язык только для ЭВМ данного типа. Другой крайностью было бы изложение только общих принципов программирования на ассемблере и функционирования ЭВМ без привязки к какому-либо конкретному типу машин. В данной книге реализован компромиссный подход. С одной стороны ее можно рассматривать как учебник по принципам функционирования и программирования ЭВМ. С другой стороны здесь приводится подробное описание языка ассемблера ЭВМ Систем 360 и 370 фирмы IBM. Хотя вы будете знакомиться с конкретным языком ассемблера, рассматриваемые принципы применимы и к большинству других типов вычислительных машин. Вам, читатель, в определенной мере придется иметь дело с ЭВМ на протяжении всей вашей жизни. Материал, приведенный в книге, позволит получить необходимый минимум знаний о вычислительных машинах.
В качестве дополнительного материала можно рекомендовать сборник упражнений по языку ассемблера. Выполняя соответствующие упражнения, вы сможете контролировать степень усвоения материала по мере изучения отдельных тем.

Оглавление
От редактора перевода . • •....................... 5
Предисловие........................„....... 6
К читателю . . • ,............................ 10
1. Введение . , , > * ,........ 13

1.1. Вычислительная машина . . , ,.................. 14
1.1.1. Устройство управления ...-..............о, 15
1.1.2. Память........................... 15
1.1.3. Арифметическое устройство................... 18
1.1.4. Ввод-вывод и периферийные устройства.........0 . 18
1.2. Программирование ЭВМ ................ г . „ „ о о 21
Резюме.....:..............., . . е. . . „ . . „ 0 ,. 23
Упражнения.....................о....., , . 23
Список литературы ...«„..................... 23
2. Двоичная арифметика и устройство управления Системы 360...... 24
2.1. Двоичная целочисленная арифметика .*............. 24
2.1.1. Двоичная и шестнадцатеричная системы счисления . . . , . 24
2.1.2. Двоичная арифметика в дополнительных кодах . „ „ с о . . 30
2.2. Устройство управления Системы 360 ....... ...j „«,...»., 36
2.2.1. Машинный язык......„ „ ,.............. 38
2.2.2. Счетчик коТианд . . . * . . „ 0 „ „............. 39
2.2.3. Регистры общего назначения <<>•.. ..........о 39
2.2.4. Выполнение команд...................„ . 42
Резюме...................... . о ....о.... 43
Упражнения . . . . *...................•..... 44
Список литературы.......................... 46
3. Введение в -программирование . ,............"....... 47
3.1. Язык ассемблера......................... 47
3.1.1. Иерархия языков.......... „........... 47
3.1.2. Зачем изучать язык ассемблера? .,..„..„....... 51
3.2. «Предоставим это машине!».................... 55
3.2.1. Анализ задачи....................... 56
3.2.2. Алгоритм.......................... 61
3.2.3. Составление блок-схемы................... 61
3.2.4. Составление программы на алгоритмическом языке..... 63
3.2.5. Подготовка программы и данных............... 64
3.2.6. Трансляция на машинный язык............... 64
3.2.7. Выполнение......................... 64
3.2.8. Проверка и отладка.................... 64
3.3. Пользование руководствами . . -,.................. 66
3.4. Формат языка ассемблера...................... 68
Резюме................................ 72
Упражнения.............................. 73
Список литературы.......................... 74
4. Работа с регистрами , , ,....................... 75
4.1. Предварительные сведения ..................... 75
4.1.1. Типы команд........................ 75
4.1.2. Функции команд...................... 70
4.1.3. Символическое представление команд.............
4.1.4. Особые случаи в программе................. 77
4.2. Команды формата RR.......................
4.2.1. Команды пересылки..................... 79
4.2.2. Двоичная целочисленная арифметика............. 82
4.3. Ввод-вывод; команды RWD и WWU............... 90
Резюме................................
Упражнения..............................
Список литературы..........................
5. Структура программ и заданий ,................... 94
5.1. Структура программ....................... .
. 5.1.1. Команды перехода (передачи управления)..........
5.1.2. Команды сравнения и загрузки с установкой признака результата............................. 100
5.1.3. START, INITIAL, EOJ и END...............
5.2. Выполнение программы ,......................
5.2.1. Шаги задания......................... 100
5.2.2. Управление заданиями в системах, OS и OS/VS....... 108
5.2.3. Управление заданиями в системах DOS и OS/VS...... 111
5.2.4. Примеры..........................
5.3. Программная документация....................
Резюме................................ П7
Упражнения.....:........................
Список литературы.............. . ;........... 121
6. Память ..,,....'.... о .'.................. 122
6.1. Единицы информации . . * .................... 122
6.2. Команды формата RR.......................
6.3. Выдача ассемблера........................
6.3.1. Листинг ассемблера..................... 127
6.3.2. Ассемблер..........................
6.3.3. Сообщения об ошибках................... 132
6.4. Символические имена в языке ассемблера.............. 134
6.4.1. Команда DS......................... 134
6.4.2. Команда DC......................г . . 136
6.4.3. Предложение EQU..................... 139
Резюме................................ 141
Упражнения............................. 141
Список литературы........................... 143
7. Работа с памятью.................\......... 144
7.1. Команды работы с памятью.................... 144
7.1.1. Команды LOAD и STORE.................. 144
7.1.2. Арифметические команды..................
7.1.3. Команда сравнения.....................
7.1.4. Литералы..........................
7.2. Индексирование.......................... 152

Цена: 150руб.

Назад

Заказ

На главную страницу

Hosted by uCoz