stringtranslate.com

Lenguaje ensamblador básico de IBM y sucesores

El lenguaje ensamblador IBM Basic y sus sucesores es una serie de lenguajes ensambladores y ensambladores creados para el sistema mainframe IBM System/360 y sus sucesores a través de IBM Z.

El primero de ellos, el Lenguaje Ensamblador Básico ( BAL ), es un lenguaje ensamblador extremadamente restringido , introducido en 1964 y utilizado en sistemas 360 con sólo 8 KB de memoria principal, y sólo un lector de tarjetas , una perforadora de tarjetas y una impresora para entrada/salida , como parte del soporte de programación básica de IBM (BPS/360). El ensamblador básico para BAL también estaba disponible como parte del sistema operativo básico/360 (BOS/360).

Posteriormente apareció un lenguaje ensamblador para System/360 que tenía características y usabilidad más potentes, como soporte para macros . Este lenguaje, y la línea de ensambladores que lo implementaron, continuaron evolucionando para el Sistema/370 y las arquitecturas posteriores, heredando y ampliando su sintaxis. Algunos en la industria informática se refieren a estos bajo el término genérico "Lenguaje ensamblador básico" o "BAL". [1] Sin embargo, muchos no lo hicieron, y la propia IBM generalmente se refería a ellos simplemente como "Lenguaje ensamblador System/360", [2] como el "Ensamblador" para un sistema operativo o plataforma determinado, [3] o nombres similares. Los ensambladores específicos se conocían con nombres [a] como Assembler E, Assembler F, Assembler H, etc. Los programadores que utilizan este lenguaje y esta familia de ensambladores también se refieren a ellos como ALC (para codificación en lenguaje ensamblador), o simplemente "el ensamblador".

El último lenguaje derivado se conoce como IBM High-Level Assembler ( HLASM ).

Características generales

Al ser un lenguaje ensamblador , BAL utiliza el conjunto de instrucciones nativo de la arquitectura del mainframe IBM en la que se ejecuta, System/360 .

Los sucesores de BAL utilizan los conjuntos de instrucciones nativos de las arquitecturas de mainframe de IBM en las que se ejecutan, incluidos System/360 , System/370 , System/370-XA , ESA/370 , ESA/390 y z/Architecture .

La simplicidad de las instrucciones de la máquina significa que el código fuente de un programa escrito en ensamblador generalmente será mucho más largo que el de un programa equivalente en, digamos, COBOL o Fortran . En el pasado, a menudo se pensaba que la velocidad de los programas ensambladores codificados a mano compensaba este inconveniente, pero con la llegada de la optimización de los compiladores, C para mainframe y otros avances, el ensamblador ha perdido gran parte de su atractivo. IBM continúa actualizando el ensamblador, sin embargo, y todavía se utiliza cuando la necesidad de velocidad o control muy fino es primordial. Sin embargo, todos los sucesores de BAL de IBM han incluido una función de macros sofisticada que permite escribir código fuente mucho más compacto.

Otra razón para utilizar ensamblador es que no se puede acceder a todas las funciones del sistema operativo en lenguajes de alto nivel. Las interfaces de programas de aplicación de los sistemas operativos mainframe de IBM se definen como un conjunto de instrucciones "macro" en lenguaje ensamblador, que normalmente invocan Llamada de supervisor ( SVC) [por ejemplo, en z/OS] o Diagnóstico ( DIAG) [en, por ejemplo, z/VM]. instrucciones para invocar rutinas del sistema operativo. Es posible utilizar servicios del sistema operativo a partir de programas escritos en lenguajes de alto nivel mediante el uso de subrutinas de ensamblador.

Formato de declaración de ensamblador

Algunos programadores utilizaron un formulario de codificación ensamblador para los lenguajes ensambladores de IBM 360 y sus sucesores.
Las tarjetas perforadas y una lista de ensamblaje impresa eran comunes durante el uso del lenguaje ensamblador IBM 370 en la década de 1970.

El formato de las declaraciones en lenguaje ensamblador refleja el diseño de una tarjeta perforada de 80 columnas, aunque las versiones sucesivas han relajado la mayoría de las restricciones.

El lenguaje ensamblador básico también permite un formato de declaración alternativo con la declaración que comienza en la columna 25, lo que permite perforar la instrucción ensamblada en la misma tarjeta comenzando en la columna 1. Esta opción no continuó en versiones posteriores del ensamblador.

tipos de instrucciones

En el código fuente de un programa escrito en ensamblador se encuentran tres tipos principales de instrucciones.

Instrucciones del ensamblador

Las instrucciones del ensamblador, a veces denominadas directivas , pseudooperaciones o pseudoops en otros sistemas, son solicitudes al ensamblador para que realice diversas operaciones durante el proceso de generación de código. Por ejemplo, CSECTsignifica "iniciar una sección de código aquí"; DSECTproporciona definiciones de datos para una estructura, pero no genera código; DCdefine una constante que se colocará en el código objeto.

Una de las instrucciones de ensamblador más importantes es USING, que admite el direccionamiento por desplazamiento de base de la arquitectura S/360. Guía al ensamblador para determinar qué registro base y desplazamiento debe usar para una dirección relativa. En BAL, se limitaba a la forma

 USANDO base,reg-1,...,reg-n

Las direcciones de instrucción de máquina en S/360 especifican un desplazamiento (0–4095 bytes) del valor en un registro base ; Si bien las versiones posteriores de la arquitectura agregaron formatos de direcciones relativas, muchas instrucciones todavía utilizan los formatos más antiguos. USINGpermite al programador decirle al ensamblador que se supone que los registros base especificados contienen la dirección de "base", base+4096 (si se especifican varios registros), etc. Esto sólo proporciona un atajo para el programador, que de otro modo tendría que especifique el registro base en cada instrucción. Los programadores siguen siendo responsables de cargar la dirección de "base" en el registro antes de escribir el código que depende de este valor.

La instrucción de ensamblador relacionada DROPanula una instrucción anterior USING.

Instrucciones de máquina (mnemotécnicas)

Existe una relación uno a uno con las instrucciones de la máquina . El conjunto completo de instrucciones mnemotécnicas se describe en el manual Principios de funcionamiento [4] para cada conjunto de instrucciones. Ejemplos:

* Esta es una línea de comentarios * Cargue el número entero de palabra completa almacenado en el * ubicación denominada 'ZIGGY' en el registro general 3: L 3,ZIGGY SLA 4,5 desplaza el valor en el registro general 4 a la izquierda en 5 bits MVC TARGET,SOURCE mueve caracteres desde la ubicación 'SOURCE' a 'TARGET' AP COUNT,=P'1' suma 1 al valor en la ubicación de memoria 'COUNT' (formato decimal empaquetado) B SIGUIENTE rama incondicional para etiquetar 'SIGUIENTE' AQUÍ EQU * Esta es una etiqueta CLC TARGET,=C'ADDRESS' Compara la ubicación de memoria 'TARGET' con la cadena 'ADDRESS' ESTAR ALLÍ rama si es igual a la etiqueta del programa 'ELLÍ'

Los estándares generalmente aceptados, aunque de ninguna manera son obligatorios, incluyen la identificación de registros de propósito general con mnemónicos. A diferencia de los ensambladores de otros sistemas, como el lenguaje ensamblador X86 , los mnemotécnicos de registro no son símbolos reservados, sino que se definen mediante EQUdeclaraciones en otras partes del programa. Esto mejora la legibilidad de los programas en lenguaje ensamblador y proporciona una referencia cruzada del uso de registros. Por lo tanto, normalmente podrá ver lo siguiente en un programa ensamblador:

R3 EQU 3 ... L R3,ZIGGY

Algunos mnemónicos de instrucción notables son BALR[b] para una llamada que almacena la dirección de retorno y el código de condición en un registro, SVC[ c] DIAG , [d] y ZAP. [5]

Las instrucciones de máquina System/360 tienen una, dos o tres medias palabras de longitud (de dos a 6 bytes). Originalmente había cuatro formatos de instrucción, designados por los dos primeros bits del campo del código de operación; z/Architecture agregó formatos adicionales.

Macros y ensamblaje condicional.

El ensamblador de soporte básico de programación no admitía macros . Las versiones posteriores del ensamblador que comienzan con Assembler D [6] permiten al programador agrupar instrucciones en macros y agregarlas a una biblioteca, que luego puede invocarse en otros programas, generalmente con parámetros, como las funciones del preprocesador en C y lenguajes relacionados. Las macros pueden incluir instrucciones de ensamblador condicionales, como AIF(una construcción 'if'), utilizadas para generar código diferente según los parámetros elegidos. Eso hace que la función macro de este ensamblador sea muy poderosa. Si bien las macros multilínea en C son una excepción, las definiciones de macros en ensamblador pueden tener fácilmente cientos de líneas.

Macros del sistema operativo

La mayoría de los programas requerirán servicios del sistema operativo y el sistema operativo proporciona macros estándar para solicitar esos servicios. Son análogas a las llamadas al sistema Unix . Por ejemplo, en MVS (posteriormente z/OS), (con el parámetro) asigna dinámicamente un bloque de memoria y recupera el siguiente registro lógico de un archivo.STORAGEOBTAINGET

Estas macros dependen del sistema operativo; A diferencia de varios lenguajes de nivel superior, los lenguajes ensambladores de mainframe de IBM no proporcionan declaraciones o bibliotecas independientes del sistema operativo para asignar memoria, realizar operaciones de E/S, etc., y los diferentes sistemas operativos de mainframe de IBM no son compatibles en el servicio del sistema. nivel. Por ejemplo, escribir un archivo secuencial se codificaría de forma diferente en z/OS y ​​en z/VSE.

Ejemplos

El siguiente fragmento muestra cómo se realizaría en ensamblador la lógica "Si SEXO = 'M', agregue 1 a HOMBRES; de lo contrario, agregue 1 a MUJERES".

 CLI SEXO, ¿C'M' Hombre? BNE IS_FEM Si no, bifurcarse L 7,MALES Cargar el valor actual de MALES en el registro 7 LA 7,1(7) añadir 1 ST 7, MALES almacena el resultado B GO_ON Terminado con esta parte IS_FEM EQU * Una etiqueta L 7,FEMALES Cargar el valor actual en FEMALES en el registro 7 LA 7,1(7) añadir 1 ST 7, MUJERES almacenan el resultado GO_ON EQU* - resto del programa - * MACHOS DC F'0' Contador para MACHOS (inicialmente=0) FEMENINOS DC F'0' Contador para FEMENINOS (inicialmente=0)

Lo que sigue es el omnipresente "¡Hola, mundo!" programa y, al ejecutarse bajo un sistema operativo IBM como OS/VS1 o MVS , mostraría las palabras '¡Hola, mundo!' en la consola del operador:

HOLA CSECT El nombre de este programa es 'HOLA' * Registre 15 puntos aquí al ingresar desde OPSYS o la persona que llama. STM 14,12,12(13) Guardar los registros 14,15 y 0 al 12 en el área Guardar de la persona que llama LR 12,15 Configurar registro base con la dirección del punto de entrada del programa USING HELLO,12 Dígale al ensamblador qué registro estamos usando para pgm. base LA 15,SAVE Now Apunta a nuestra propia zona de guardado ST 15,8(13) Cadena adelantada ST 13,4(15) Cadena retrasada LR 13,15 Establezca R13 en la dirección de la nueva área de guardado * -fin de la limpieza (similar para la mayoría de los programas) - OMC '¡Hola mundo!' Escribir al operador (macro del sistema operativo) * L 13,4(13) restaurar la dirección al área de guardado proporcionada por la persona que llama XC 8(4,13),8(13) Cadena delantera transparente LM 14,12,12(13) Restaurar registros como en la entrada GOTA 12 Lo contrario de 'USAR' SR 15,15 Establezca el registro 15 en 0 para que el código de retorno (R15) sea cero BR 14 Volver a la persona que llama *  SAVE DS 18F Defina 18 palabras completas para guardar los registros del programa de llamada FIN HOLA Este es el final del programa.

WTOes una macro ensambladora que genera una llamada al sistema operativo. Debido a que se guardan registros y luego se restauran y devuelven, este pequeño programa se puede utilizar como un programa por lotes invocado directamente por el lenguaje de control de trabajos (JCL) del sistema operativo de esta manera:

// EXEC PGM=HOLA  

o, alternativamente, se puede LLAMAR como una subrutina desde dicho programa:

LLAME 'HOLA'

Versiones

Impresión del trabajo por lotes que muestra la página de identificación del Ensamblador G

Con la excepción de los ensambladores del IBM System/360 Model 20 , los ensambladores de IBM eran en gran medida compatibles con versiones posteriores. Las diferencias estaban principalmente en la complejidad de las expresiones permitidas y en el procesamiento de macros. Los ensambladores de OS/360 se designaron originalmente según sus requisitos de memoria.

Ensamblador de soporte de programación básica

El ensamblador de BPS es el verdadero "ensamblador básico". Estaba pensado para cargarse desde tarjetas y se ejecutaría en un System/360 de 8 KB (excepto el Modelo 20). No admite instrucciones macro ni mnemónicos extendidos (como BH en lugar de BC 2 para bifurcar si el código de condición 2 indica una comparación alta). Puede ensamblar solo una sección de control y no permite secciones ficticias (definiciones de estructura). No se permiten expresiones entre paréntesis y las expresiones están limitadas a tres términos, siendo los únicos operadores '+', '-' y '*'. [7] : 59–61 

Ensamblador del sistema operativo básico

El Sistema Operativo Básico tiene dos versiones ensambladoras. Ambos requieren 16 KB de memoria, uno residente en cinta y el otro en disco. [8] : 7–8 

Ensamblador D

Assembler D era el ensamblador de DOS/360 para máquinas con un tamaño de memoria de 16 KB. Viene en dos versiones: una variante de 10 KB para máquinas con un mínimo de 16 KB de memoria y una variante de 14 KB para máquinas con 24 KB. También estaba disponible un ensamblador de nivel F para máquinas DOS con 64 KB o más. Los ensambladores D ofrecían casi todas las funciones de las versiones superiores. [9] : 7 

Ensamblador E y F

Assembler E fue diseñado para ejecutarse en un sistema OS/360 con un mínimo de 32 KB de almacenamiento principal, y el ensamblador en sí requiere 15 KB. [10] : 2  Assembler F puede ejecutarse bajo DOS/360 u OS/360 en un sistema con una memoria de 64 KB, y el ensamblador requiere 44 KB. [11] [12] [13] Estos ensambladores son una parte estándar de OS/360; la versión que se generó se especificó en la generación del sistema (SYSGEN).

Ensamblador H

Assembler H se ejecuta en OS/360 y sus sucesores ; era más rápido y potente que Assembler F, pero el lenguaje de macros no era totalmente compatible.

Assembler H Versión 2 se anunció en 1981 e incluye soporte para Arquitectura Extendida (XA), incluidas las directivas AMODEy RMODE. [14] : 3-28  Se retiró del marketing en 1994 y el soporte finalizó en 1995. Fue reemplazado por High Level Assembler. [15]

Ensamblador XF

Assembler XF es una actualización mayoritariamente compatible de Assembler F que incluye las nuevas instrucciones de arquitectura System/370. Esta versión proporciona un ensamblador común para sistemas OS/VS, DOS/VS y VM. Otros cambios incluyen relajar las restricciones sobre las expresiones y el procesamiento de macros. Assembler XF requiere un tamaño mínimo de partición/región de 64 KB (virtual). El tamaño recomendado es 128 KB. [16] : 73 

ensamblador de alto nivel

High Level Assembler o HLASM se lanzó en junio de 1992 reemplazando al Assembler H Versión 2 de IBM. [17] [18] Era el traductor predeterminado para System/370 y System/390, y admitía los sistemas operativos MVS, VSE y VM. A partir de 2023, es el lenguaje de programación ensamblador actual de IBM para sus sistemas operativos z/OS , z/VSE , z/VM y z/TPF en computadoras mainframe z/Architecture . La versión 6 y posteriores también se ejecutan en Linux y generan archivos de objetos ELF o GOFF (este entorno a veces se denomina Linux en IBM Z ). [19] Mientras trabajaba en IBM, John Robert Ehrman creó y fue el desarrollador principal de HLASM [e] y es considerado el "padre del ensamblador de alto nivel". [21]

A pesar del nombre, HLASM por sí solo no tiene muchas de las características normalmente asociadas con un ensamblador de alto nivel . El nombre puede provenir de las capacidades adicionales del lenguaje de macros, como la capacidad de escribir funciones definidas por el usuario. El ensamblador es mayoritariamente similar a Assembler H y Assembler(XF), incorporando las modificaciones SLAC (Stanford Linear Accelerator). Entre las características agregadas se encuentran una indicación de CSECT/ para el contador de ubicación, declaraciones DSECTdependientes [f] y etiquetadas [g] , una lista de declaraciones actualmente activas, una indicación de si una variable se lee o escribe en la referencia cruzada y permite la combinación de nombres de símbolos de caso. [22] La directiva (Sección de control de solo lectura) permite al ensamblador verificar la reentrada por sección. anteriormente estaba "indocumentado e implementado de manera inconsistente en Assembler H." [23] : 41 USINGUSINGRSECTRSECT

Kit de herramientas de ensamblador de alto nivel

El kit de herramientas de High Level Assembler es un complemento del High Level Assembler que se vende por separado. El kit de herramientas contiene: [24]

Versiones especializadas

Ensamblador del paquete de soporte 7090/7094

El paquete de soporte IBM 7090/7094, conocido como SUPPAK, "consta de tres programas diseñados para permitir que los programas escritos para un System 360 se ensamblen, prueben y ejecuten en un IBM 709, 7090, 7094 o 7094 II".

Este ensamblador cruzado se ejecuta en un sistema 7090 o 7094 y se usó mientras System/360 estaba en desarrollo. [7] [25] Este ensamblador admite juegos de caracteres BCD de seis bits, así como EBCDIC de ocho bits .

Ensambladores IBM System/360 Modelo 20

IBM suministró dos ensambladores para el Modelo 20: el Ensamblador básico Modelo 20 y el Ensamblador DPS/TPS Modelo 20. Ambos admitían únicamente las instrucciones disponibles en el Modelo 20, incluidas instrucciones exclusivas CIO, TIO, XIOB, SPSW, BAS, BASRy HPR. [26] : 110  Basic Assembler es una versión ligeramente más restringida de System/360 Basic Assembler; [27] en particular, los símbolos están restringidos a cuatro caracteres de longitud. Esta versión es capaz de ejecutarse en un sistema con 4 KB de memoria y la compatibilidad con macros está limitada a macros IOCS . Las versiones de tarjetas son ensambladores de dos pasos que solo admiten entrada/salida de tarjetas. Las versiones residentes en cinta son de una sola pasada y utilizan cinta magnética para almacenamiento intermedio. Los programas ensamblados con CPS Assembler pueden abordar un máximo de 16 KB. [27] : 7–8 

El ensamblador DPS/TPS es una versión algo restringida de System/360 BPS/BOS Assembler. [26] : 132-134 

Ensamblador IBM System/360 Modelo 44 PS

El ensamblador del sistema de programación IBM System/360 Modelo 44 procesa un lenguaje que es un "subconjunto seleccionado" del lenguaje ensamblador OS/360 y DOS/360.

Lo más significativo es que el ensamblador del Modelo 44 carece de soporte para macros y declaraciones de continuación. Por otro lado, tiene una serie de características que no se encuentran en otros ensambladores de System/360, en particular instrucciones para actualizar un conjunto de datos de origen de imagen de tarjeta , denominado común, y una definición implícita de SETAvariables de ensamblador. [28]

No admite instrucciones de almacenamiento a almacenamiento (SS) ni instrucciones de conversión a binario ( CVB), conversión a decimal ( CVD), lectura directa ( RDD) y escritura directa ( WRD). [29] Incluye cuatro instrucciones exclusivas del Modelo 44: Cambiar máscara de prioridad ( CHPM), Cargar PSW especial ( LPSX), Leer palabra directa ( RDDW) y Escribir palabra directa ( WRDW).

También incluye directivas para actualizar el programa fuente, una función realizada por programas de utilidad en otros sistemas ( ,, SKPTOy ) . [29] : 53, 73 REWNDNUMOMITENDUP

Ensamblador IBM System/360 TSS

El ensamblador del sistema de tiempo compartido System/360 Modelo 67 tiene una serie de diferencias en directivas para admitir funciones TSS únicas. La PSECTdirectiva genera una Sección de Control de Prototipo que contiene constantes de dirección reubicables y datos modificables utilizados por el programa. [30] : 143 

ensamblador g

"Assembler G" es un conjunto de modificaciones realizadas al Assembler F en la década de 1970 por la Universidad de Waterloo (Assembler F era/es de código abierto). Las mejoras consisten principalmente en un mejor manejo de la entrada/salida y un almacenamiento en búfer mejorado que acelera considerablemente los ensamblajes. [31] "Assembler G" nunca fue un producto de IBM.

Ensambladores que no son IBM

Ha habido varios ensambladores compatibles con IBM para entornos especiales. [32]

Importancia

Originalmente, todos los sistemas operativos System/360 estaban escritos en lenguaje ensamblador y todas las interfaces del sistema estaban definidas mediante definiciones de macros. El acceso desde lenguajes de alto nivel (HLL) estaba restringido a lo que ese lenguaje proporcionaba, y otras llamadas al sistema debían codificarse como subrutinas de ensamblador llamadas desde programas HLL. Además, IBM permitió la personalización de las funciones del sistema operativo mediante una instalación a través de lo que se conocía como salidas : rutinas proporcionadas por el usuario que podían ampliar o alterar las funciones normales del sistema operativo. Estas salidas debían codificarse en lenguaje ensamblador. Más tarde, IBM recodificó OS/360 en un lenguaje de programación de sistemas, PL/S , pero, excepto por una breve prueba, decidió no lanzar el compilador PL/S a los usuarios. Como resultado de estos factores, el lenguaje ensamblador tuvo un uso significativo en los sistemas IBM durante muchos años.

Ver también

Notas

  1. ^ IBM indica los tamaños objetivo de su software con las letras
    • D 16 KB
    • E 32 Kib
    • F 64 KiB
    • G 128 KiB
    • H 256 KiB
    • Yo 512 KiB
  2. ^ La mayoría de los usos de BALR han sido reemplazados por BASRinstrucciones similares.
  3. ^ Muchos usos de SVChan sido reemplazados por una PCinstrucción.
  4. ^ La máquina virtual se reutiliza DIAGcomo HVCinstrucción.
  5. ^ HLASM siguió un requisito SHARE para incorporar las mejoras de Greg Mushial [20] al ensamblador H en el producto compatible.
  6. ^ Un dependiente USINGes aquel que especifica una expresión reubicable en lugar de una lista de registros:
     USANDO IHADCB, SYSPRINT ... TM DCBOPTCD, DCBOPTC Prueba OPTCD en SYSPRINT ...
  7. ^ Una etiquetada USINGes aquella que sólo afecta a las instrucciones que hacen referencia explícita a ella calificando una expresión con una etiqueta:
     LA R4,SYSIN LA R5, SYSPRINTAL USAR IHADCB,R4FUERA DE USO IHADCB,R5 ... TM IN.DCBOFLGS,DCBOFTM Prueba OFLGS en SYSIN ... TM OUT.DCBOPTCD,DCBOPTC Prueba OPTCD en SYSPRINT ...

Referencias

  1. ^ Por ejemplo, consulte McQuillen, Kevin (1975). Sistema/Lenguaje ensamblador (SO) 360–370 . Fresno, California: Mike Murach y asociados. pag. 17. LCCN  74-29645.
  2. ^ Por ejemplo, Introducción de un programador al lenguaje ensamblador IBM System/360 . Poughkeepsie, Nueva York: Corporación Internacional de Máquinas de Negocios. 1969.
  3. ^ Por ejemplo, en la "tarjeta amarilla", sexta página del desplegable, marcada como para OS/VS, VM/370 y DOS/VS: "Resumen de referencia del sistema/370" (Documento). White Plains, Nueva York: IBM Corporation. Noviembre de 1976.Cuarta edición.
  4. ^ Principios de funcionamiento de IBM System/360 (PDF) . Biblioteca de referencia de sistemas IBM. Corporación IBM. A22-6821-0 . Consultado el 6 de diciembre de 2018 .
  5. ^ "HLASM: lista de todos los códigos de operación, mnemónicos extendidos y códigos de función, ordenados por mnemónicos" . Consultado el 14 de enero de 2013 .
  6. ^ "Soporte de programación básica IBM System/360" (PDF) . ahorradores de bits . pag. 61 . Consultado el 6 de septiembre de 2023 .
  7. ^ ab Soporte de programación básica IBM System/360 Lenguaje ensamblador básico (PDF) . Biblioteca de referencia de sistemas IBM. Corporación IBM. Febrero de 1965. C20-6503-0 . Consultado el 5 de abril de 2022 .
  8. ^ Ensamblador de especificaciones de lenguaje del sistema operativo básico IBM System/360 (disco/cinta de 16 K) (PDF) . Biblioteca de referencia de sistemas IBM. Corporación IBM. Diciembre de 1965. C24-3414-1 . Consultado el 5 de abril de 2022 .
  9. ^ Corporación IBM (1970). Lenguaje ensamblador de sistemas operativos de cintas y discos IBM System/360 (PDF) .
  10. ^ Manual de lógica del programa IBM System/360 Operating System Assembler (32K) (PDF) . IBM. 1966. Y26-3598-0.
  11. ^ Lógica del programa IBM System/360 Disk Operating System Assembler [F] (PDF) . IBM. 1968. Y26-3716-0.
  12. ^ Lógica del programa IBM System/360 Operating System Assembler (F) (PDF) . IBM. 1971. GY26-3700-2.
  13. ^ Lenguaje ensamblador del sistema operativo, versión 21 del sistema operativo (PDF) . IBM. 1974. GC28-6514-9.
  14. ^ Corporación IBM (1984). Cuaderno de conversión de arquitectura extendida/MVS (PDF) .
  15. ^ IBM Corporation (20 de diciembre de 1996). "5668-962 IBM Assembler H Versión 2 Versión 1.0" . Consultado el 8 de octubre de 2012 .
  16. ^ Corporación IBM (1973). Guía del programador de ensamblador OS/VS (PDF) .
  17. ^ Corporación IBM. "Función del kit de herramientas y ensamblador de alto nivel de IBM: historial de versiones" . Consultado el 21 de octubre de 2012 .
  18. ^ IBM Corporation (5 de mayo de 1992). "Carta de anuncio 292-244: IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE" . Consultado el 21 de octubre de 2012 .
  19. ^ Corporación IBM (2008). Guía del usuario del ensamblador de alto nivel para Linux en zSeries (PDF) .
  20. ^ Greg Mushial (20 de julio de 1983), "Módulo 24: Mejoras y embellecimientos de SLAC del ensamblador IBM H-Level para la versión 2.8", SLAC VM NOTEBOOK , Stanford Linear Accelerator Center
  21. ^ "Guía de la colección de John R. Ehrman". Archivo en línea de California . X5621.2010. Archivado desde el original el 15 de octubre de 2022 . Consultado el 15 de octubre de 2022 .[1]
  22. ^ "ENSAMBLADOR DE ALTO NIVEL DE IBM / MVS, VM y VSE". Cartas de anuncio . Corporación IBM. 5 de mayo de 1992. 292-244 . Consultado el 8 de octubre de 2012 .
  23. ^ Guía de presentación de IBM High Level Assembler para MVS, VM y VSE versión 2 (PDF) . Libros rojos. IBM . Diciembre de 1995. SG24-3910-01. Archivado desde el original (PDF) el 23 de enero de 2016 . Consultado el 29 de septiembre de 2023 .
  24. ^ Corporación IBM. "Componentes de funciones del kit de herramientas". IBM . Consultado el 5 de septiembre de 2023 .
  25. ^ Paquete de soporte IBM 7090/7094 para IBM System/360 (PDF) . Biblioteca de referencia de sistemas IBM. Corporación IBM. Noviembre de 1964. C28-6501-2 . Consultado el 5 de abril de 2022 .
  26. ^ ab IBM Corporation (abril de 1970). Lenguaje ensamblador de sistemas de programación de cintas y discos IBM System/360 modelo 20 (PDF) . Consultado el 2 de octubre de 2023 .
  27. ^ ab IBM Corporation (mayo de 1969). Soporte de programación de tarjetas IBM System/360 Modelo 20 Lenguaje ensamblador básico (PDF) . Consultado el 2 de octubre de 2023 .
  28. ^ Corporación IBM (1966). Lenguaje ensamblador del sistema de programación IBM System/360 modelo 44 (PDF) . pag. 73 . Consultado el 2 de julio de 2019 .
  29. ^ ab IBM Corporation (1966). Lenguaje ensamblador del sistema de programación IBM System/360 modelo 44 (PDF) .
  30. ^ Corporación IBM (1976). Guía del programador del ensamblador del sistema de tiempo compartido de IBM (PDF) .
  31. ^ Centro del acelerador lineal de Stanford. «MEDICIÓN DEL SOFTWARE GENERALIZADA IBM SYSTEM 360 (SLAC-PUB-715)» (PDF) . Consultado el 8 de octubre de 2012 .
  32. ^ Alcock, David. "Preguntas frecuentes sobre Dave's z/Architecture Assembler". Planeta MVS . Consultado el 15 de diciembre de 2012 .
  33. ^ Manuales de Fujitsu ASSEMH disponibles en http://manuals.ts.fujitsu.com/index.php?id=1-2-2926-15435 (obtenido el 27 de febrero de 2016)
  34. ^ Dignus, LLC. "Sistemas/ASM" . Consultado el 15 de diciembre de 2012 .
  35. ^ Taquión Software LLC. "Software de taquiones" . Consultado el 15 de diciembre de 2012 .

enlaces externos