Язык ассемблера IBM Basic и его последователи

Языки ассемблера для IBM System/360 и последующих мэйнфреймов
Базовый язык ассемблера
Парадигмаязык ассемблера
РазработчикИБМ
Впервые появился1964
ОСБазовая поддержка программирования IBM , базовая операционная система/360
Лицензиябесплатно
Сборщик D/E/F/G/H/XF
Парадигмамакро язык ассемблера
РазработчикИБМ
Впервые появился1966
ОСIBM OS/VS , DOS/VS , VM/370 и связанные с ними
Лицензияразнообразный
Ассемблер высокого уровня
Парадигмамакро язык ассемблера
РазработчикИБМ
Впервые появился1992
Стабильный релиз
Версия 1 Выпуск 6
ОСIBM MVS/ESA и преемники, VM/ESA и преемники, VSE/ESA и преемники
Лицензиязапатентованный
Веб-сайтhttps://www.ibm.com/products/high-level-assembler-and-toolkit-feature
Основные внедрения
Ассемблер высокого уровня

Язык ассемблера IBM Basic и его последователи — это серия языков ассемблера и ассемблеров, созданных для мэйнфреймовой системы IBM System/360 и ее последователей вплоть до IBM Z.

Первый из них, Basic Assembly Language ( BAL ), является крайне ограниченным языком ассемблера , представленным в 1964 году и использовавшимся в системах 360 с всего лишь 8 КБ основной памяти и только с картридером , перфоратором и принтером для ввода/вывода , как часть IBM Basic Programming Support (BPS/360). Basic Assembler для BAL также был доступен как часть Basic Operating System/360 (BOS/360).

Впоследствии для System/360 появился язык ассемблера, который имел более мощные функции и удобство использования, такие как поддержка макросов . Этот язык и линейка ассемблеров, которые его реализовали, продолжали развиваться для System/370 и последующих архитектур, наследуя и расширяя его синтаксис. Некоторые в компьютерной индустрии называли их общим термином «Basic Assembly Language» или «BAL». [1] Однако многие этого не делали, и сама IBM обычно называла их просто «System/360 Assembler Language», [2] как «Assembler» для данной операционной системы или платформы, [3] или подобными именами. Конкретные ассемблеры были известны под такими именами [a] , как Assembler E, Assembler F, Assembler H и т. д. Программисты, использующие этот язык и это семейство ассемблеров, также называют их ALC (Assembler Language Coding) или просто «ассемблер».

Последний производный язык известен как IBM High-Level Assembler ( HLASM ).

Общая характеристика

Поскольку BAL является языком ассемблера , он использует собственный набор инструкций архитектуры мэйнфрейма IBM, на которой он работает, System/360 .

Преемники BAL используют собственные наборы инструкций архитектур мэйнфреймов IBM, на которых они работают, включая System/360 , System/370 , System/370-XA , ESA/370 , ESA/390 и z/Architecture .

Простота машинных инструкций означает, что исходный код программы, написанной на ассемблере, обычно будет намного длиннее, чем эквивалентная программа, скажем, на COBOL или Fortran . В прошлом скорость написанных вручную ассемблерных программ часто считалась компенсатором этого недостатка, но с появлением оптимизирующих компиляторов, C для мэйнфреймов и других достижений ассемблер утратил большую часть своей привлекательности. Однако IBM продолжает совершенствовать ассемблер, и он по-прежнему используется, когда первостепенное значение имеет скорость или очень точное управление. Однако все последователи BAL от IBM включили сложную функцию макросов, которая позволяет писать гораздо более компактный исходный код.

Другая причина использования ассемблера заключается в том, что не все функции операционной системы могут быть доступны на языках высокого уровня. Интерфейсы прикладных программ мэйнфреймовых операционных систем IBM определяются как набор инструкций языка ассемблера «макро», которые обычно вызывают инструкции Supervisor Call ( SVC) [например, на z/OS] или Diagnose ( DIAG) [например, на z/VM] для вызова подпрограмм операционной системы. Возможно использовать службы операционной системы из программ, написанных на языках высокого уровня, с помощью подпрограмм ассемблера.

Формат оператора ассемблера

Некоторые программисты использовали форму кодирования ассемблера для языков ассемблера IBM 360 и их последователей.
В 1970-х годах при использовании языка ассемблера IBM 370 были широко распространены перфокарты и печатные листинги ассемблера.

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

  • Необязательная метка или имя оператора — это строка буквенно-цифровых символов, начинающаяся в столбце 1. Первый символ должен быть буквенным. Более поздние версии добавили @, #, $ и _ к допустимым символам, используемым в метках, и увеличили размер с начальных шести до восьми символов, а затем до почти неограниченной длины.
  • Код операции или «мнемоника» может начинаться в любом столбце справа от столбца 1, отделенном от метки оператора пробелом. Код операции будет всего лишь машинной инструкцией (макросы не были доступны), что обычно составляет 1, 2, 3 или редко 4 буквы. Код операции был улучшен, чтобы разрешить до восьми символов, а затем до фактически неограниченной длины.
  • Поле операнда может начинаться в любом столбце справа от кода операции, отделенном от кода операции как минимум одним пробелом. Пробелы недопустимы в операндах, за исключением символьных констант. Поле операнда, состоящее из одного или нескольких операндов, является необязательным в зависимости от кода операции.
  • Необязательные комментарии могут отображаться справа от поля операнда, разделенные как минимум одним пробелом.
  • В языке Basic Assembly не допускается продолжение оператора. Более поздние версии ассемблера указывают на продолжение появлением любого непустого символа в столбце 72 продолжаемого оператора. В языке Basic Assembly требуется, чтобы столбец 72 был пустым.
  • «Полный комментарий к карточке» отмечен звездочкой (*) в столбце 1.
  • Столбцы карт 73–80, называемые полем идентификационной последовательности, могут использоваться программистом в любых целях, но обычно содержат порядковые номера для пересортировки перемешанной колоды карт.

Базовый язык ассемблера также допускает альтернативный формат оператора, начинающийся со столбца 25, что позволяет вставлять собранную инструкцию в ту же карту, начиная со столбца 1. Эта возможность не была продолжена в более поздних версиях ассемблера.

Типы инструкций

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

Инструкции по сборке

Инструкции ассемблера, иногда называемые директивами , псевдооперациями или псевдооперациями в других системах, являются запросами к ассемблеру для выполнения различных операций в процессе генерации кода. Например, CSECTозначает «начать раздел кода здесь»; DSECTпредоставляет определения данных для структуры, но не генерирует код; DCопределяет константу для размещения в объектном коде.

Одной из наиболее важных инструкций ассемблера является USING, которая поддерживает адресацию смещения базы архитектуры S/360. Она направляет ассемблер в определении того, какой регистр базы и смещение он должен использовать для относительного адреса. В BAL она была ограничена формой

 ИСПОЛЬЗОВАНИЕ база,рег-1,...,рег-n

Адреса машинных инструкций на S/360 указывают смещение (0–4095 байт) от значения в базовом регистре ; хотя более поздние версии архитектуры добавили форматы относительного адреса, старые форматы все еще используются многими инструкциями. USINGпозволяет программисту сообщить ассемблеру, что указанные базовые регистры предположительно содержат адрес «базы», ​​база+4096 (если указано несколько регистров) и т. д. Это только обеспечивает сокращение для программиста, которому в противном случае пришлось бы указывать базовый регистр в каждой инструкции. Программисты по-прежнему несут ответственность за фактическую загрузку адреса «базы» в регистр перед написанием кода, который зависит от этого значения.

Соответствующая DROPассемблерная инструкция отменяет предыдущую USING.

Машинные инструкции (мнемоника)

Существует связь один к одному с машинными инструкциями . Полный набор мнемонических инструкций описан в руководстве Principles of Operation [4] для каждого набора инструкций. Примеры:

* Это строка комментария * Загрузить целое число, хранящееся в * местоположение с меткой «ZIGGY» в общем регистре 3: Л 3,ЗИГГИ SLA 4,5 сдвигает значение в общем регистре 4 влево на 5 бит MVC TARGET,SOURCE перемещает символы из местоположения «SOURCE» в «TARGET» AP COUNT,=P'1' добавить 1 к значению в ячейке памяти 'COUNT' (упакованный десятичный формат) B NEXT безусловный переход к метке «NEXT» ЗДЕСЬ EQU * Это этикетка CLC TARGET,=C'ADDRESS' Сравнить ячейку памяти 'TARGET' со строкой 'ADDRESS' Ветвь BE THERE, если она равна метке программы «THERE»

Общепринятые стандарты, хотя и не обязательные, включают идентификацию регистров общего назначения с мнемоникой. В отличие от ассемблеров для некоторых других систем, таких как язык ассемблера X86 , мнемоники регистров не являются зарезервированными символами, а определяются через EQUоператоры в другом месте программы. Это улучшает читаемость программ на языке ассемблера и обеспечивает перекрестную ссылку использования регистров. Таким образом, обычно вы можете увидеть следующее в программе на ассемблере:

R3 EQU 3 ... Л Р3,ЗИГГИ

Некоторые известные мнемоники инструкций: BALR[b] для вызова, сохраняющего адрес возврата и код условия в регистре, SVC[ c] DIAG , [d] и ZAP. [5]

Машинные инструкции System/360 имеют длину в одно, два или три полуслова (от двух до 6 байт). Первоначально существовало четыре формата инструкций, обозначенных первыми двумя битами поля кода операции; z/Architecture добавила дополнительные форматы.

Макросы и условная сборка

Ассемблер Basic Programming Support не поддерживал макросы . Более поздние версии ассемблера, начиная с Assembler D [6], позволяют программисту группировать инструкции в макросы и добавлять их в библиотеку, которую затем можно вызывать в других программах, обычно с параметрами, такими как возможности препроцессора в C и родственных языках. Макросы могут включать условные инструкции ассемблера, такие как AIF(конструкция 'if'), используемые для генерации различного кода в соответствии с выбранными параметрами. Это делает макрокоманды этого ассемблера очень мощными. Хотя многострочные макросы в C являются исключением, определения макросов в ассемблере могут легко состоять из сотен строк.

Макросы операционной системы

Большинству программ потребуются службы от операционной системы , и ОС предоставляет стандартные макросы для запроса этих служб. Они аналогичны системным вызовам Unix . Например, в MVS (позже z/OS), (с параметром) динамически выделяет блок памяти и извлекает следующую логическую запись из файла.STORAGEOBTAINGET

Эти макросы зависят от операционной системы; в отличие от нескольких языков более высокого уровня, языки ассемблера мэйнфреймов IBM не предоставляют независимые от операционной системы операторы или библиотеки для выделения памяти, выполнения операций ввода-вывода и т. д., а различные операционные системы мэйнфреймов IBM несовместимы на уровне системных служб. Например, запись последовательного файла будет кодироваться по-разному в z/OS и z/VSE.

Примеры

Следующий фрагмент показывает, как логика «Если ПОЛ = 'М', добавить 1 к МУЖСКОМУ; в противном случае добавить 1 к ЖЕНСКОМУ» будет выполняться на ассемблере.

 CLI SEX,C'M' Мужчина? BNE IS_FEM Если нет, выполните переход L 7,MALES Загрузить текущее значение MALES в регистр 7 LA 7,1(7) добавить 1 ST 7,MALES сохранить результат B GO_ON Закончил с этой частью IS_FEM EQU * Метка L 7,FEMALES Загрузить текущее значение в FEMALES в регистр 7 LA 7,1(7) добавить 1 ST 7,FEMALES сохранить результат GO_ON EQU * - остальная часть программы - * MALES DC F'0' Счетчик для MALES (изначально=0) ЖЕНЩИНЫ DC F'0' Счетчик для ЖЕНЩИН (изначально=0)

Ниже приведена широко распространенная программа «Hello, World!» , которая при запуске в операционной системе IBM, такой как OS/VS1 или MVS , выводит на пульте оператора слова «Hello, World!»:

HELLO CSECT Название этой программы — «HELLO» * Зарегистрируйтесь здесь и получите 15 баллов при входе от OPSYS или звонящего. STM 14,12,12(13) Сохранение регистров 14,15 и 0–12 в области сохранения вызывающего абонента LR 12,15 Установить базовый регистр с адресом точки входа программы ИСПОЛЬЗОВАНИЕ HELLO,12 Сообщите ассемблеру, какой регистр мы используем для pgm. base LA 15,СОХРАНИТЬ сейчас Укажите на нашу собственную зону сохранения ST 15,8(13) Установить переднюю цепь ST 13,4(15) Смещенная назад цепь LR 13,15 Установить R13 на адрес новой области сохранения * - конец уборки (аналогично для большинства программ) - WTO «Привет, мир!» Запись оператору (макрос операционной системы) * L 13,4(13) восстановить адрес в области сохранения, предоставленной вызывающим абонентом XC 8(4,13),8(13) Очистить прямую цепочку LM 14,12,12(13) Восстановить регистры как на момент ввода DROP 12 Противоположность «ИСПОЛЬЗОВАНИЯ» SR 15,15 Установить регистр 15 в 0, чтобы код возврата (R15) был равен нулю. BR 14 Вернуться к звонящему *  СОХРАНИТЬ DS 18F Определить 18 полных слов для сохранения регистров вызывающей программы КОНЕЦ ПРИВЕТ Это конец программы

WTOэто макрос ассемблера, который генерирует вызов операционной системы. Благодаря сохранению регистров и последующему восстановлению и возврату эта небольшая программа может использоваться как пакетная программа, вызываемая непосредственно языком управления заданиями операционной системы (JCL) следующим образом:

// EXEC PGM=ПРИВЕТ  

или, в качестве альтернативы, его можно ВЫЗВАТЬ как подпрограмму из такой программы:

ЗВОНИТЕ «ПРИВЕТ»

Версии

Распечатка пакетного задания, показывающая идентификационную страницу для Assembler G

За исключением ассемблеров для IBM System/360 Model 20 , ассемблеры IBM были в значительной степени совместимы снизу вверх. Различия были в основном в сложности разрешенных выражений и в обработке макросов. Ассемблеры OS/360 изначально обозначались в соответствии с их требованиями к памяти.

Базовая поддержка программирования ассемблера

Ассемблер для BPS — это настоящий «базовый ассемблер». Он был предназначен для загрузки с карт и мог работать на 8 КБ System/360 (кроме Model 20). Он не поддерживает макрокоманды или расширенные мнемоники (такие как BH вместо BC 2 для перехода, если код условия 2 указывает на высокое сравнение). Он может собирать только одну секцию управления и не допускает фиктивных секций (определений структур). Выражения в скобках не допускаются, а выражения ограничены тремя терминами, причем единственными операторами являются «+», «-» и «*». [7] : 59–61 

Базовый ассемблер операционной системы

Базовая операционная система имеет две версии ассемблера. Обе требуют 16 КБ памяти, одна из них находится на ленте, а другая на диске. [8] : 7–8 

Ассемблер D

Ассемблер D был ассемблером DOS/360 для машин с объемом памяти 16 КБ. Он выпускался в двух версиях: 10-КБ вариант для машин с минимальным объемом памяти 16 КБ и 14-КБ вариант для машин с 24 КБ. Ассемблер F-уровня также был доступен для машин DOS с объемом памяти 64 КБ и более. Ассемблеры D предлагали почти все возможности более высоких версий. [9] : 7 

Ассемблер E и F

Ассемблер E был разработан для работы в системе OS/360 с минимальным объемом оперативной памяти 32 КБ, при этом самому ассемблеру требовалось 15 КБ. [10] : 2  Ассемблер F может работать как под DOS/360, так и под OS/360 в системе с объемом памяти 64 КБ, при этом самому ассемблеру требовалось 44 КБ. [11] [12] [13] Эти ассемблеры являются стандартной частью OS/360; сгенерированная версия была указана при генерации системы (SYSGEN).

Ассемблер H

Assembler H работает на OS/360 и более поздних версиях ; он был быстрее и мощнее Assembler F, но макроязык не был полностью совместим.

Assembler H Version 2 был анонсирован в 1981 году и включает поддержку Extended Architecture (XA), включая директивы AMODEи RMODE. [14] : 3-28  Он был снят с продажи в 1994 году, а поддержка закончилась в 1995 году. Он был заменен High Level Assembler. [15]

Ассемблер XF

Assembler XF — это в основном совместимое обновление Assembler F, включающее новые инструкции архитектуры System/370. Эта версия предоставляет общий ассемблер для систем OS/VS, DOS/VS и VM. Другие изменения включают ослабление ограничений на выражения и обработку макросов. Assembler XF требует минимальный размер раздела/региона 64 КБ (виртуальный). Рекомендуемый размер — 128 КБ. [16] : 73 

Ассемблер высокого уровня

High Level Assembler или HLASM был выпущен в июне 1992 года, заменив IBM Assembler H Version 2. [17] [18] Он был транслятором по умолчанию для System/370 и System/390 и поддерживал операционные системы MVS, VSE и VM. По состоянию на 2023 год это текущий язык программирования ассемблера IBM для ее операционных систем z/OS , z/VSE , z/VM и z/TPF на мэйнфреймах z/Architecture . Выпуск 6 и более поздние версии также работают на Linux и генерируют объектные файлы ELF или GOFF (эту среду иногда называют Linux на IBM Z ). [19] Работая в IBM, Джон Роберт Эрман создал и был ведущим разработчиком HLASM [e] и считается «отцом высокоуровневого ассемблера». [21]

Несмотря на название, HLASM сам по себе не обладает многими функциями, обычно ассоциируемыми с ассемблером высокого уровня . Название может происходить от дополнительных возможностей макроязыка, таких как возможность писать определяемые пользователем функции. Ассемблер в основном похож на Assembler H и Assembler(XF), включая модификации SLAC (Stanford Linear Accelerator). Среди добавленных функций были указание CSECT/ DSECTдля счетчика местоположения, зависимые [f] и помеченные [g] USING операторы, список USINGактивных в данный момент операторов, указание того, считывается или записывается переменная в перекрестной ссылке, и разрешение имен символов со смешанным регистром. [22] Директива RSECT(Read-only Control Section) позволяет ассемблеру проверять реентерабельность на основе раздела. RSECTранее была «недокументирована и непоследовательно реализована в Assembler H». [23] : 41 

Набор инструментов ассемблера высокого уровня

High Level Assembler Toolkit — это отдельное дополнение к High Level Assembler. Набор инструментов содержит: [24]

  • Набор макросов структурного программирования
    • ЕСЛИ/ИНАЧЕ/КОНЕЦЕСЛИ
    • ДЕЛАТЬ/КОНЕЦДЕЛАТЬ
    • STRTSRCH/ORELSE/ENDLOOP/ENDSRCH
    • КОРПУС/КОРПУС/ТОРЦЕВОЙ КОРПУС
    • ВЫБРАТЬ/КОГДА/ИНАЧЕ/КОНЕЦ.
  • Дизассемблер .
  • «Инструмент понимания программ» ( помощь в реинжиниринге ).
  • Утилита Source XREF (средство перекрестных ссылок).
  • Интерактивная отладочная функция.
  • Улучшенный SuperC (инструмент сравнения исходного кода).

Специализированные версии

7090/7094 Поддержка Ассемблера Пакета

Пакет поддержки IBM 7090/7094, известный как SUPPAK, «состоит из трех программ, разработанных для того, чтобы программы, написанные для System 360, можно было собирать, тестировать и запускать на IBM 709, 7090, 7094 или 7094 II».

Этот кросс-ассемблер работает на системах 7090 или 7094 и использовался во время разработки System/360. [7] [25] Этот ассемблер поддерживает шестибитный набор символов BCD , а также восьмибитный EBCDIC .

Ассемблеры IBM System/360 Model 20

IBM поставляла два ассемблера для Model 20: Model 20 Basic Assembler и Model 20 DPS/TPS Assembler. Оба поддерживали только инструкции, доступные в Model 20, включая уникальные инструкции CIO, TIO, XIOB, SPSW, BAS, BASR, и HPR. [26] : 110  Basic Assembler — это немного более ограниченная версия System/360 Basic Assembler; [27] в частности, символы ограничены четырьмя символами в длину. Эта версия способна работать в системе с 4 КБ памяти, а поддержка макросов ограничена макросами IOCS . Версии для карт — это двухпроходные ассемблеры, которые поддерживают только ввод/вывод с карты. Версии, резидентные на ленте, являются однопроходными, использующими магнитную ленту для промежуточного хранения. Программы, собранные с помощью CPS Assembler, могут адресовать максимум 16 КБ. [27] : 7–8 

Ассемблер DPS/TPS представляет собой несколько ограниченную версию ассемблера System/360 BPS/BOS. [26] : 132–134 

Ассемблер IBM System/360 Model 44 PS

Системный ассемблер программирования IBM System/360 Model 44 обрабатывает язык, который является «избранным подмножеством» языка ассемблера OS/360 и DOS/360.

Наиболее существенно, что ассемблер Model 44 не поддерживает макросы и операторы продолжения. С другой стороны, у него есть ряд функций, которых нет в других ассемблерах System/360, в частности, инструкции по обновлению исходного набора данных изображения карты , названные common, и неявное определение SETAпеременных ассемблера. [28]

Он не поддерживает инструкции хранения-в-хранилище (SS) или инструкции преобразования в двоичный формат ( CVB), преобразования в десятичный формат ( CVD), прямого чтения ( RDD) и прямой записи ( WRD). [29] Он включает четыре инструкции, уникальные для модели 44: изменение маски приоритета ( CHPM), загрузка специального PSW ( LPSX), прямое чтение слова ( RDDW) и прямая запись слова ( WRDW).

Он также включает директивы для обновления исходной программы, функции, выполняемой служебными программами в других системах ( SKPTO, REWND, NUM, OMITи ENDUP). [29] : 53, 73 

Ассемблер IBM System/360 TSS

Ассемблер для System/360 Model 67 Time Sharing System имеет ряд отличий в директивах для поддержки уникальных функций TSS. PSECTДиректива генерирует Prototype Control Section, содержащий перемещаемые адресные константы и изменяемые данные, используемые программой. [30] : 143 

Ассемблер G

«Assembler G» — это набор модификаций, внесенных в Assembler F в 1970-х годах Университетом Ватерлоо (Assembler F был/есть с открытым исходным кодом). Улучшения в основном касаются лучшей обработки ввода/вывода и улучшенной буферизации, что значительно ускоряет сборку. [31] «Assembler G» никогда не был продуктом IBM.

Сборщики не-IBM

Для специальных сред существовало несколько IBM-совместимых ассемблеров. [32]

  • Серии Univac 90/60, 90/70 и 90/80 от Unisys были разработаны для поддержки ассемблера формата IBM, поскольку эта серия машин была аналогична S/360 и S/370.
  • Серия Fujitsu BS2000 также была создана как аналог 370 из того же ресурса, что и Univac, и до сих пор используется в некоторых частях Европы. [33]
  • Dignus LLC Systems/ASM — это совместимый с HLASM ассемблер, который может работать как нативно на системах IBM, так и в качестве кросс-ассемблера. [34]
  • Бесплатное программное обеспечение PC/370 , написанное Доном Хиггинсом, позднее было приобретено Micro Focus .
  • z390 — ассемблер и эмулятор System 390, также написанный Доном Хиггинсом и запрограммированный на Java . Он имеет открытый исходный код и доступен по адресу http://www.z390.org/
  • Университет штата Пенсильвания разработал пакет под названием ASSIST , который включает ассемблер и интерпретатор System 370.
  • Tachyon Software LLC продает Tachyon Assembler Workbench , работающий на Windows, Linux/x86, Linux для S/390 и zSeries, AIX и Solaris. [35]
  • GNU Assembler (gas) является частью GNU Compiler Collection (gcc) для Linux на OS/390 и IBM Z. Этот ассемблер имеет уникальный синтаксис, несовместимый с другими ассемблерами для архитектур IBM.

Важность

Первоначально все операционные системы System/360 были написаны на языке ассемблера, и все системные интерфейсы были определены макроопределениями. Доступ из языков высокого уровня (HLL) был ограничен тем, что предоставлял этот язык, и другие системные вызовы должны были быть закодированы как подпрограммы ассемблера, вызываемые из программ HLL. Кроме того, IBM разрешила настройку функций ОС путем установки через то, что было известно как Exits — пользовательские процедуры, которые могли расширять или изменять обычные функции ОС. Эти выходы должны были быть закодированы на языке ассемблера. Позже IBM перекодировала OS/360 на системный язык программирования PL/S , но, за исключением короткого пробного периода, решила не выпускать компилятор PL/S для пользователей. В результате этих факторов язык ассемблера широко использовался в системах IBM в течение многих лет.

Смотрите также

Примечания

  1. ^ IBM указывает целевые размеры своего программного обеспечения буквами
    • D 16 КБ
    • E 32 Киб
    • F 64 КБ
    • G 128 КБ
    • H 256 КБ
    • Я 512 КБ
  2. ^ Большинство случаев использования BALR были заменены BASRаналогичными инструкциями.
  3. ^ Многие варианты использования SVCбыли заменены инструкцией PC.
  4. ^ VM используется DIAGкак HVCинструкция.
  5. ^ HLASM выполнил требование SHARE по включению усовершенствований Грега Мушиала [20] в Assembler H в поддерживаемый продукт.
  6. ^ Зависимым USINGназывается тот, который указывает перемещаемое выражение вместо списка регистров:
     ИСПОЛЬЗОВАНИЕ IHADCB,SYSPRINT ... TM DCBOPTCD,DCBOPTC Тест OPTCD в SYSPRINT ...
  7. ^ Помеченный USING— это тот, который влияет только на инструкции, которые явно ссылаются на него, квалифицируя выражение с помощью метки:
     LA R4,СИСИН LA R5, СИСТЕМНЫЙ ПРИНТПРИ ИСПОЛЬЗОВАНИИ IHADCB,R4ИСПОЛЬЗУЯ IHADCB,R5 ... TM IN.DCBOFLGS,DCBOFTM Тест OFLGS в SYSIN ... TM OUT.DCBOPTCD,DCBOPTC Тест OPTCD в SYSPRINT ...

Ссылки

  1. ^ Например, см. McQuillen, Kevin (1975). System/360–370 Assembler Language (OS) . Фресно, Калифорния: Mike Murach & Associates. стр. 17. LCCN  74-29645.
  2. ^ Например, Введение программиста в язык ассемблера IBM System/360 . Покипси, Нью-Йорк: International Business Machines Corporation. 1969.
  3. ^ Например, на «желтой карточке», шестая страница разворота, отмечено как для OS/VS, VM/370 и DOS/VS: «System/370 Reference Summary» (Документ). Уайт-Плейнс, Нью-Йорк: IBM Corporation. Ноябрь 1976 г.Четвертое издание.
  4. ^ IBM System/360 Principles of Operation (PDF) . IBM Systems Reference Library. IBM Corporation. A22-6821-0 . Получено 6 декабря 2018 г.
  5. ^ "HLASM - Список всех кодов операций, расширенных мнемоник и кодов функций, отсортированных по мнемоникам" . Получено 14 января 2013 г.
  6. ^ "IBM System/360 Basic Programming Support" (PDF) . bitsavers . стр. 61 . Получено 6 сентября 2023 г. .
  7. ^ ab IBM System/360 Basic Programming Support Basic Assembler Language (PDF) . IBM Systems Reference Library. IBM Corporation. Февраль 1965 г. C20-6503-0 . Получено 5 апреля 2022 г. .
  8. ^ IBM System/360 Basic Operating System Language Specifications Assembler (диск/лента 16K) (PDF) . IBM Systems Reference Library. IBM Corporation. Декабрь 1965 г. C24-3414-1 . Получено 5 апреля 2022 г. .
  9. ^ IBM Corporation (1970). IBM System/360 Disk and Tape Operating Systems Assembler Language (PDF) . Получено 2024-09-19 .
  10. ^ IBM System/360 Operating System Assembler (32K) Руководство по программной логике (PDF) . IBM. 1966. Y26-3598-0.
  11. ^ IBM System/360 Disk Operating System Assembler [F] Program Logic (PDF) . IBM. 1968. Y26-3716-0.
  12. ^ IBM System/360 Operating System Assembler (F) Program Logic (PDF) . IBM. 1971. GY26-3700-2.
  13. ^ Язык ассемблера ОС, выпуск ОС 21 (PDF) . IBM. 1974. GC28-6514-9.
  14. ^ Корпорация IBM (1984). MVS/Extended Architecture Conversion Notebook (PDF) .
  15. IBM Corporation (20 декабря 1996 г.). "5668-962 IBM Assembler H Version 2 Release 1.0" . Получено 8 октября 2012 г.
  16. ^ IBM Corporation (1973). Руководство программиста по ассемблеру OS/VS (PDF) . Получено 19 сентября 2024 г.
  17. ^ IBM Corporation. "IBM High Level Assembler and Toolkit Feature - История выпусков" . Получено 21 октября 2012 г.
  18. IBM Corporation (5 мая 1992 г.). "Письмо-объявление 292-244: IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE" . Получено 21 октября 2012 г.
  19. ^ IBM Corporation (2008). Руководство пользователя по ассемблеру высокого уровня для Linux на zSeries (PDF) .
  20. Грег Мушиал (20 июля 1983 г.), «Модуль 24: Усовершенствования и улучшения SLAC ассемблера IBM H-Level для версии 2.8», SLAC VM NOTEBOOK , Стэнфордский центр линейных ускорителей
  21. ^ "Путеводитель по коллекции Джона Р. Эрмана". Онлайн-архив Калифорнии . X5621.2010. Архивировано из оригинала 2022-10-15 . Получено 2022-10-15 .[1]
  22. ^ "IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE". Письма-объявления . IBM Corporation. 5 мая 1992 г. 292-244 . Получено 8 октября 2012 г.
  23. ^ IBM High Level Assembler for MVS & VM & VSE Release 2 Presentation Guide (PDF) . Redbooks. IBM . Декабрь 1995 г. SG24-3910-01. Архивировано из оригинала (PDF) 2016-01-23 . Получено 29 сентября 2023 г. .
  24. ^ IBM Corporation. "Toolkit Feature components". IBM . Получено 5 сентября 2023 г. .
  25. ^ IBM 7090/7094 Support Package for IBM System/360 (PDF) . IBM Systems Reference Library. IBM Corporation. Ноябрь 1964 г. C28-6501-2 . Получено 5 апреля 2022 г. .
  26. ^ ab IBM Corporation (апрель 1970 г.). IBM System/360 Model 20 Disk and Tape Programming Systems Assembler Language (PDF) . Получено 2 октября 2023 г. .
  27. ^ ab IBM Corporation (май 1969 г.). IBM System/360 Model 20 Card Programming Support Basic Assembler Language (PDF) . Получено 2 октября 2023 г. .
  28. ^ IBM Corporation (1966). IBM System/360 Model 44 Programming System Assembler Language (PDF) . стр. 73 . Получено 2 июля 2019 г. .
  29. ^ ab IBM Corporation (1966). IBM System/360 Model 44 Programming System Assembler Language (PDF) . Получено 2024-09-19 .
  30. ^ Корпорация IBM (1976). Руководство программиста ассемблера систем разделения времени IBM (PDF) .
  31. ^ Стэнфордский центр линейного ускорителя. "GENERALIZED IBM SYSTEM 360 SOFTWARE MEASUREMENT (SLAC-PUB-715)" (PDF) . Получено 8 октября 2012 г. .
  32. ^ Alcock, David. "Часто задаваемые вопросы по z/Architecture Assembler от Dave". Planet MVS . Получено 15 декабря 2012 г.
  33. ^ Руководства Fujitsu ASSEMH доступны по адресу http://manuals.ts.fujitsu.com/index.php?id=1-2-2926-15435 (дата обращения: 27.02.2016)
  34. ^ Dignus, LLC. "Systems/ASM" . Получено 15 декабря 2012 г.
  35. ^ Tachyon Software LLC. "Tachyon Software" . Получено 15 декабря 2012 г.
  • Руководство по IBM High Level Assembler
  • Введение для программистов в язык ассемблера IBM System/360 (текст для студентов)
  • Справочник по языку ассемблера высокого уровня для z/OS, z/VM и z/VSE
  • Пунктуальный программист: ассемблер мэйнфреймов IBM
  • Базовый язык программирования ассемблера для мэйнфреймов IBM
  • Введение в программирование на ассемблере OS/390 (архив)
  • Веб-компилятор IBM Assembler F для небольших экспериментов
  • ASSIST – Система ассемблера для обучения студентов и системного обучения
Взято с "https://en.wikipedia.org/w/index.php?title=IBM_Basic_assembly_language_and_successors&oldid=1248916555"