Аргут а 44 инструкция

Базовый язык ассемблера (BAL)-это обычно используемый термин для низкоуровневого языка программирования. Используемого в IBM System/360 и последующих мэйнфреймах. Первоначально IBM Basic Programming Support (BPS/360) в системах с только 8 КБ основной памяти и только считывателемкарт. Перфораторомкарт и принтером для ввода/вывода — таким образом. Слово Однако полное имя и инициализм BAL for BPS/360 был представлен вместе с System/360 в 1964 году.

Ассемблеры на других операционных системах System/360 через System/370, System/390и System z, а также мэйнфреймы серии UNIVAC 90 производства Sperry Corporationи мэйнфреймы BS2000 производства

Fujitsu, унаследовали и расширили свой синтаксис. Последний производный язык известен как IBM High-Level Assembler (HLASM). Программисты. Использующие это семейство ассемблеров. Также называют их ALC (для кодирования языка ассемблера) или просто

BAL также является мнемоникой инструкции .[1]

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

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

BAL использует собственный набор команд этих машин. Таким образом. Он ближе к аппаратному обеспечению. Чем языки третьего поколения. Такие как COBOL.

Набор команд состоит из низкоуровневых операций, поддерживаемых аппаратным обеспечением, таких как:

Инструкция Мнемоника Описание
ЗАГРУЖАТЬ Л копирование значения из памяти в регистр
МАГАЗИН ST копирование значения из регистра в память
СРАВНИТЬ С сравнение значения регистра со значением в памяти
Сдвиг SLL, SRL перемещение битов регистра влево или вправо
ЗАПУСК ПОДКАНАЛА SSCH запуск подканальной операции ввода-вывода с помощью строки командных слов канала

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

Еще одна причина использования ассемблера заключается в том. Что не все функции операционной системы доступны на языках высокого уровня. Интерфейс прикладной программы операционных систем мэйнфреймов определяется как набор аппаратные инструкции Supervisor Call (SVC) [на z/OS] или Diagnostic (DIAG) [на z/VM] для вызова подпрограмм операционной системы. Можно использовать службы операционной системы из программ. Написанных на языках высокого уровня. С помощью подпрограмм ассемблера.

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

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

  • Необязательная метка или имя оператора-от одного до шести буквенно-цифровых символов. Начинающихся в столбце 1. Первый символ должен быть алфавитным.
  • Код операции или мнемоника могут начинаться в любом столбце справа от столбца 1, отделенном от метки оператора пробелом.
  • Поле операнда может начинаться в любом столбце справа от кода операции. Отделенном от кода операции по крайней мере одним пробелом. Пробелы недопустимы в операндах. За исключением символьных констант. Поле операнда. Состоящее из одного или нескольких операндов. Является необязательным в зависимости от кода операции.
  • Необязательные комментарии могут появляться справа от поля операнда. Разделенного по крайней мере одним пробелом.
  • Базовый язык ассемблера не допускает продолжения инструкции. Более поздние версии ассемблера указывают на продолжение по появлению любого символа в столбце 72 продолжаемого оператора. Базовый язык ассемблера требует. Чтобы столбец 72 был пустым.
  • Столбцы карт 73-80, называемые полем идентификации-последовательности, могут быть использованы программистом для любых целей. Но обычно содержат порядковые номера для использования перемешанной колоды карт.

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

Три основных типа инструкций содержатся в исходном коде программы. Написанной на ассемблере.

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

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

 * Это строка комментария * Загрузите целое число полного слова. Хранящееся в * местоположении с надписью L 3,ЗИГГИ SLA 4,5 сдвиньте значение в общем регистре 4 влево на 5 бит MVC TARGET,SOURCE перемещение символов из местоположения AP COUNT,=P'1' добавить 1 к значению в ячейке памяти 'COUNT' (упакованный десятичный формат) B СЛЕДУЮЩАЯ безусловная ветвь для обозначения ВОТ * * Это ярлык CLC TARGET,=C 'ADDRESS' Сравнить ячейку памяти 'TARGET' со строкой 'ADDRESS' ЕСТЬ ветвь. Если она равна метке программы 

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

 R3 EQU 3 ... L R3,ЗИГГИ 

Некоторые известные мнемонические инструкции предназначены BALRдля вызова. Хранящего обратный адрес в регистре до использования стеков,SVC,DIAGZAP, и. Последний вдохновил название утилиты SuperZAP программистом . Использующим псевдоним WAMOZART, cf. SuperZap в Бесплатном онлайн-словаре вычислений .

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

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

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

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

Базовый язык ассемблера не поддерживает макросы. Более поздние версии ассемблера позволяют программисту группировать инструкции в макросы и добавлять их в библиотеку. Которая затем может быть вызвана в других программах. Обычно с параметрами. Такими как средства препроцессора в C и родственных языках. Макросы могут включать в себя условные инструкции ассемблера. Такие как AIF (конструкция Это делает макросистему этого ассемблера очень мощной. Хотя многострочные макросы в языке Си являются исключением. Определения макросов в ассемблере легко могут состоять из сотен строк.

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

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

В отличие от системных вызовов Unix. Макросы не стандартизированы в разных операционных системах. Даже такая простая вещь. Как написание

Следующий фрагмент показывает, как логика

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

Ниже приводится вездесущая программа Hello world. Которая при выполнении под управлением операционной системы IBM. Такой как OS/VS1 или MVS, выводит слова

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

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

// EXEC PGM=ПРИВЕТ 

или, как вариант. Его можно вызвать как подпрограмму из такой программы:

 ПОЗВОНИТЕ 

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

Ассемблер пакета поддержки

Этот кросс-ассемблер работает на системе 7090 или 7094 и использовался во время разработки System/360.[3][4]

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

Ассемблер для BPS-это истинный Он предназначался для загрузки с карт и должен был работать на 8-килобайтной системе/360 (кроме модели 20). Он не поддерживает макрокоманды или расширенную мнемонику (например. BH вместо BC 2 для ветвления. Если код условия 2 указывает на высокое сравнение). Он может собрать только одну управляющую секцию и не допускает фиктивных секций (определений структуры). Заключенные в скобки выражения не допускаются. И выражения ограничиваются тремя терминами. Единственными операторами которых являются

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

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

Ассемблер D

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

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

Ассемблер был предназначен для работы на системе OS/360 с минимум 32 КБ оперативной памяти. А сам ассемблер. Требующей 15 КБ.[7]:стр. 2 ассемблер Ф может работать под либо DOS/360 и OS/360 в системе с 64 Кб памяти. С помощью ассемблера. Требующих 44 КБ.[8][9][10] эти монтажники являются стандартной частью операционной системы OS/360; версию о том. Что был создан не был определен при системе поколение (SYSGEN).

Модель 44 Ассемблер системы

язык ассемблера IBM System/360 Model 44 Programming System является выбранным подмножеством языков. Доступных в программе поддержки программирования IBM System/360.Самое главное. Что ассемблер Model 44 не поддерживал макросы и операторы продолжения. С другой стороны. Он обладал рядом функций. Которых не было в других ассемблерах System/360,—в частности. Инструкциями по обновлению исходного набора данных изображений карт. Именованными общими именами и неявным определением SETAпеременных ассемблера.[11]

Ассемблер G

Университетом Ватерлоо (Ассемблер F был/является открытым исходным кодом). Улучшения в основном заключаются в лучшей обработке ввода-вывода и улучшенной буферизации. Что значительно ускоряет сборку.Ассемблер G

Ассемблер H

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

Ассемблер XF

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

Высокоуровневый ассемблер

Ассемблер высокого уровня (HLASM). Объявленный в 1992 году как лицензионная программа. Ассемблер поддерживает операционные системы и преемники MVS, VSE и VM. Начиная с выпуска 6, он теперь может работать под Linux на IBM Z и генерировать объектные файлы ELF или COFF.[16] Он имеет длинный список в основном улучшений удобства использования и включает в себя модификации SLAC (Stanford Linear Accelerator) для ассемблера H.CSECT/DSECT для location counter-это список активных в данный момент регистров [17] RSECTДиректива (Раздел управления только для чтения) позволяет ассемблеру проверять повторяемость на основе каждого раздела. RSECT ранее был [18]:p.43 HLASM является текущим ассемблером для IBM mainframe systems по состоянию на 2012 год.

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

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

Ассемблер IBM System/360 Model 44 Programming System Assembler обрабатывает язык. Который является convert to binary (CVB), convert to decimal (CVD), read direct (RDD) и write direct (WRD).[19] Он включает в себя четыре инструкции. Уникальные для модели 44: Изменить маску приоритета (CHPM), Загрузить PSW Special (LPSX), Прочитать Прямое слово (RDDW) и Написать прямое слово (WRDW). Он также включает директивы для обновления исходной программы, функции. Выполняемой служебными программами в других системах (SKPTO,REWND,NUM, OMITи ENDUP). Он предоставляет именованные общие и неявно определенные &SETAсимволы. Но также имеет некоторые ограничения.[19]:с. 53,73

IBM System/360 TSS assembler

Ассемблер для системы разделения времени System/360 Model 67 имеет ряд отличий в директивах для поддержки уникальных функций TSS. PSECTДиректива генерирует Прототип управляющего раздела, содержащего перемещаемые адресные константы и изменяемые данные. Используемые программой.

Ассемблеры, не относящиеся к IBM

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

  • Серия Univac 90/60, 90/70 и 90/80 от Unisys была разработана для принятия ассемблера IBM-формата. Поскольку серия машин была похожа на S/360 и S/370.
  • Серия Fujitsu BS2000 также была построена как рабочий аналог 370 из того же ресурса. Что и Univac. И до сих пор используется в некоторых частях Европы.]
  • Dignus LLC Systems/ASM-это HLASM-совместимый ассемблер. Который может работать изначально в системах IBM или как кросс-ассемблер.]
  • Бесплатная программа 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.[24]
  • GNU Assembler (gas) является частью коллекции компиляторов GNU (gcc) для Linux на OS/390 и IBM Z. Этот ассемблер имеет уникальный синтаксис. Который несовместим с другими ассемблерами для архитектур IBM.
Примечания
  • Радд, Энтони. Иллюстрированное руководство для программистов-ассемблеров z/Architecture. Создайте пространство (2012).

Внешние ссылки

В Wikibooks есть книга на тему: 360 Assembly