Jump to content

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

(Перенаправлено с HLASM )
Базовый язык ассемблера
Парадигма язык ассемблера
Разработчик ИБМ
Впервые появился 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. созданных

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

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

Последний производный язык известен как 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 определяются как набор «макро» инструкций языка ассемблера, которые обычно вызывают вызов супервизора ( SVC) [например, в z/OS] или Диагностика ( DIAG) [например, в z/VM] инструкции для вызова подпрограмм операционной системы. Можно использовать службы операционной системы из программ, написанных на языках высокого уровня, с помощью подпрограмм ассемблера.

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

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

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

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

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

Виды инструкций

[ редактировать ]

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

Инструкции ассемблера

[ редактировать ]

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

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

         USING base,reg-1,...,reg-n

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

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

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

[ редактировать ]

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

 * This is a comment line
 * Load the fullword integer stored at the
 * location labeled 'ZIGGY' into general register 3:
       L     3,ZIGGY
       SLA   4,5             shift the value in general register 4 left by 5 bits
       MVC   TARGET,SOURCE   move characters from location 'SOURCE' to 'TARGET'
       AP    COUNT,=P'1'     add 1 to value in memory location 'COUNT' (packed decimal format)
       B     NEXT            unconditional branch to label 'NEXT'
 HERE  EQU   *               This is a label
       CLC   TARGET,=C'ADDRESS'  Compare memory location 'TARGET' to string 'ADDRESS'
       BE    THERE               branch if equal to program label 'THERE'

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

 R3    EQU  3
       ...
       L    R3,ZIGGY

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

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

Следующий фрагмент показывает, как на ассемблере будет выполняться логика «Если SEX = 'M', добавить 1 к MALES, иначе добавить 1 к FEMALES».

          CLI   SEX,C'M'       Male?
          BNE   IS_FEM         If not, branch around
          L     7,MALES        Load current value of MALES into register 7
          LA    7,1(7)        add 1 
          ST    7,MALES        store back the result
          B     GO_ON          Finished with this portion
 IS_FEM   EQU   *              A label
          L     7,FEMALES      Load current value in FEMALES into register 7 
          LA    7,1(7)         add 1 
          ST    7,FEMALES      store back the result
 GO_ON    EQU   *              - rest of program -
 *
 MALES    DC    F'0'           Counter for MALES (initially=0)
 FEMALES  DC    F'0'           Counter for FEMALES (initially=0)

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

 HELLO    CSECT               The name of this program is 'HELLO'
 *                            Register 15 points here on entry from OPSYS or caller.
          STM   14,12,12(13)  Save registers 14,15, and 0 thru 12 in caller's Save area
          LR    12,15         Set up base register with program's entry point address
          USING HELLO,12      Tell assembler which register we are using for pgm. base
          LA    15,SAVE       Now Point at our own save area
          ST    15,8(13)      Set forward chain
          ST    13,4(15)      Set back chain
          LR    13,15         Set R13 to address of new save area
 *                            -end of housekeeping (similar for most programs) -
          WTO   'Hello, World!' Write To Operator (Operating System macro)
 *
          L     13,4(13)      restore address to caller-provided save area
          XC    8(4,13),8(13) Clear forward chain
          LM    14,12,12(13)  Restore registers as on entry
          DROP  12            The opposite of 'USING'
          SR    15,15         Set register 15 to 0 so that the return code (R15) is Zero
          BR    14            Return to caller
 *           
 SAVE     DS    18F           Define 18 fullwords to save calling program registers 
          END  HELLO          This is the end of the program

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

// EXEC PGM=HELLO

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

 CALL 'HELLO'
Распечатка пакетного задания с идентификационной страницей для Assembler G

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

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

[ редактировать ]

Ассемблер для BPS — это настоящий «базовый ассемблер». Он предназначался для загрузки с карт и работал на системе System/360 с памятью 8 КБ (кроме модели 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 работает на OS/360 и последующих версиях ; он был быстрее и мощнее, чем Ассемблер F, но язык макросов не был полностью совместим.

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

Ассемблер XF

[ редактировать ]

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

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

[ редактировать ]

High Level Assembler или HLASM был выпущен в июне 1992 года, заменив IBM Assembler H версии 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. [и] и считается «отцом ассемблера высокого уровня». [21]

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

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

[ редактировать ]

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

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

[ редактировать ]

Сборщик пакетов поддержки 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 предоставила два ассемблера для модели 20: базовый ассемблер модели 20 и ассемблер модели 20 DPS/TPS. Оба поддерживают только инструкции, доступные на модели 20, включая уникальные инструкции. CIO, TIO, XIOB, SPSW, BAS, BASR, и HPR. [26] : 110  Базовый ассемблер — это несколько более ограниченная версия базового ассемблера System/360; [27] в частности, длина символов ограничена четырьмя символами. Эта версия способна работать в системе с памятью 4 КБ, а поддержка макросов ограничена макросами IOCS . Версии карт представляют собой двухпроходные ассемблеры, которые поддерживают только ввод/вывод карт. Резидентные версии на ленте являются однопроходными и используют магнитную ленту для промежуточного хранения. Программы, собранные с помощью ассемблера CPS, могут адресовать максимум 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, в частности инструкции по обновлению исходного набора данных образа карты , называемого общим, и неявное определение 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 имеет ряд отличий в директивах для поддержки уникальных функций TSS. PSECT Директива генерирует раздел управления прототипом, содержащий перемещаемые адресные константы и изменяемые данные, используемые программой. [30] : 143 

Ассемблер Г

[ редактировать ]

«Ассемблер G» — это набор модификаций, внесенных в Ассемблер F в 1970-х годах Университетом Ватерлоо (исходный код Ассемблера F был/есть с открытым исходным кодом). Улучшения в основном заключаются в улучшенной обработке ввода/вывода и улучшенной буферизации, что значительно ускоряет сборки. [31] «Ассемблер G» никогда не был продуктом 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 (gcc) для Linux на OS/390 и IBM Z. Этот ассемблер имеет уникальный синтаксис, несовместимый с другими ассемблерами для архитектур IBM.

Важность

[ редактировать ]

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

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ IBM указывает целевые размеры своего программного обеспечения буквами
    • Д 16 КиБ
    • Е 32 Киб
    • Ф 64 КиБ
    • Г 128 КиБ
    • H 256 КиБ
    • Я 512 КиБ
  2. ^ Большинство вариантов использования BALR были заменены на BASR и подобные инструкции.
  3. ^ Многие варианты использования SVC были заменены PC инструкция.
  4. ^ Перепрофилирование виртуальной машины DIAG как HVC инструкция.
  5. ^ HLASM выполнил требование SHARE, чтобы включить улучшения Грега Мушиала. [20] на Ассемблер H в поддерживаемый продукт.
  6. ^ Иждивенец USING тот, который задает перемещаемое выражение вместо списка регистров:
             USING IHADCB,SYSPRINT
             ...
             TM    DCBOPTCD,DCBOPTC       Test OPTCD in SYSPRINT
             ...
    
  7. ^ Маркированный USING это тот, который влияет только на инструкции, которые явно ссылаются на него, уточняя выражение меткой:
             LA    R4,SYSIN
             LA    R5,SYSPRINT
    IN       USING IHADCB,R4
    OUT      USING IHADCB,R5
             ...
             TM    IN.DCBOFLGS,DCBOFTM        Test OFLGS in SYSIN
             ...
             TM    OUT.DCBOPTCD,DCBOPTC       Test OPTCD in SYSPRINT
             ...
    
  1. ^ Например, см. Маккуиллен, Кевин (1975). Язык ассемблера (ОС) System/360–370 . Фресно, Калифорния: Майк Мурач и партнеры. п. 17. LCCN   74-29645 .
  2. ^ Например, Введение программиста в язык ассемблера IBM System/360 . Покипси, Нью-Йорк: Международная корпорация Business Machines. 1969.
  3. ^ Например, на шестой странице разворота «желтой карточки», помеченной как OS/VS, VM/370 и DOS/VS: «Справочная информация по System/370» (документ). Уайт-Плейнс, Нью-Йорк: Корпорация IBM. Ноябрь 1976 г. Издание четвертое.
  4. ^ Принципы работы IBM System/360 (PDF) . Справочная библиотека по системам IBM. Корпорация IBM. А22-6821-0 . Проверено 6 декабря 2018 г.
  5. ^ «HLASM — список всех кодов операций, расширенных мнемоник и кодов функций, отсортированных по мнемонике» . Проверено 14 января 2013 г.
  6. ^ «Базовая поддержка программирования IBM System/360» (PDF) . битсейверы . п. 61 . Проверено 6 сентября 2023 г.
  7. ^ Jump up to: а б Поддержка базового программирования IBM System/360 на базовом языке ассемблера (PDF) . Справочная библиотека по системам IBM. Корпорация IBM. Февраль 1965 г. C20-6503-0 . Проверено 5 апреля 2022 г.
  8. ^ Ассемблер спецификаций базового языка операционной системы IBM System/360 (диск/лента 16 КБ) (PDF) . Справочная библиотека по системам IBM. Корпорация IBM. Декабрь 1965 г. C24-3414-1 . Проверено 5 апреля 2022 г.
  9. ^ Корпорация IBM (1970). Язык ассемблера операционных систем для дисковых и ленточных операционных систем IBM System/360 (PDF) .
  10. ^ IBM System/360 Operating System Assembler (32K) Руководство по логике программы (PDF) . ИБМ. 1966. И26-3598-0.
  11. ^ Ассемблер операционной системы IBM System/360 Disk [F] Логика программы (PDF) . ИБМ. 1968. И26-3716-0.
  12. ^ Логика программы на ассемблере операционной системы IBM System/360 (F) (PDF) . ИБМ. 1971. GY26-3700-2.
  13. ^ Язык ассемблера ОС, версия ОС 21 (PDF) . ИБМ. 1974. GC28-6514-9.
  14. ^ Корпорация IBM (1984). Блокнот по преобразованию MVS/расширенной архитектуры (PDF) .
  15. ^ Корпорация IBM (20 декабря 1996 г.). «5668-962 IBM Assembler H Версия 2 Выпуск 1.0» . Проверено 8 октября 2012 г.
  16. ^ Корпорация IBM (1973). Руководство программиста на ассемблере OS/VS (PDF) .
  17. ^ Корпорация IBM. «Функции IBM High Level Assembler and Toolkit — история выпусков» . Проверено 21 октября 2012 г.
  18. ^ Корпорация IBM (5 мая 1992 г.). «Анонсирующее письмо 292-244: IBM ВЫСОКИЙ УРОВЕНЬ АССЕМБЛЕРА/MVS, VM и VSE» . Проверено 21 октября 2012 г.
  19. ^ Корпорация IBM (2008 г.). Ассемблер высокого уровня для Linux в Руководстве пользователя zSeries (PDF) .
  20. ^ Грег Мушиал (20 июля 1983 г.), «Модуль 24: Усовершенствования SLAC и улучшения ассемблера IBM H-Level для версии 2.8» , НОУТБУК SLAC VM , Стэнфордский центр линейных ускорителей
  21. ^ «Путеводитель по коллекции Джона Р. Эрмана» . Интернет-архив Калифорнии . Х5621.2010. Архивировано из оригинала 15 октября 2022 г. Проверено 15 октября 2022 г. [1]
  22. ^ «IBM ВЫСОКИЙ УРОВЕНЬ АССЕМБЛЕРА/MVS & VM & VSE» . Информационные письма . Корпорация IBM. 5 мая 1992 г. 292-244 . Проверено 8 октября 2012 г.
  23. ^ Презентация IBM High Level Assembler для MVS, VM и VSE Release 2 (PDF) . Красные книги. ИБМ . Декабрь 1995 г. SG24-3910-01. Архивировано из оригинала (PDF) 23 января 2016 г. Проверено 29 сентября 2023 г.
  24. ^ Корпорация IBM. «Компоненты Toolkit Feature» . ИБМ . Проверено 5 сентября 2023 г.
  25. ^ Пакет поддержки IBM 7090/7094 для IBM System/360 (PDF) . Справочная библиотека по системам IBM. Корпорация IBM. Ноябрь 1964 г. C28-6501-2 . Проверено 5 апреля 2022 г.
  26. ^ Jump up to: а б Корпорация IBM (апрель 1970 г.). Язык ассемблера систем программирования дисковых и ленточных систем IBM System/360 Model 20 (PDF) . Проверено 2 октября 2023 г.
  27. ^ Jump up to: а б Корпорация IBM (май 1969 г.). Поддержка программирования карт IBM System/360 Model 20 на базовом языке ассемблера (PDF) . Проверено 2 октября 2023 г.
  28. ^ Корпорация IBM (1966). Язык ассемблера системы программирования IBM System/360 Model 44 (PDF) . п. 73 . Проверено 2 июля 2019 г.
  29. ^ Jump up to: а б Корпорация IBM (1966). Язык ассемблера системы программирования IBM System/360 Model 44 (PDF) .
  30. ^ Корпорация IBM (1976). Руководство программиста по ассемблеру IBM Time Sharing System (PDF) .
  31. ^ Стэнфордский центр линейных ускорителей. «ОБЩЕЕ ИЗМЕРЕНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ IBM System 360 (SLAC-PUB-715)» (PDF) . Проверено 8 октября 2012 г.
  32. ^ Алкок, Дэвид. «Часто задаваемые вопросы по ассемблеру z/Architecture Дэйва» . Планета МВС . Проверено 15 декабря 2012 г.
  33. ^ Руководства Fujitsu ASEMH доступны по адресу http://manuals.ts.fujitsu.com/index.php?id=1-2-2926-15435 (Проверено 27 февраля 2016 г.).
  34. ^ Дигнус, ООО. «Системы/АСМ» . Проверено 15 декабря 2012 г.
  35. ^ ООО «Тахион Софтвер». «Тахионное программное обеспечение» . Проверено 15 декабря 2012 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f1616efc400c9e57a5aaad6b7cac0686__1708233900
URL1:https://arc.ask3.ru/arc/aa/f1/86/f1616efc400c9e57a5aaad6b7cac0686.html
Заголовок, (Title) документа по адресу, URL1:
IBM Basic assembly language and successors - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)