is defined as a set of assembly language "macro" instructions, that typically invoke Supervisor Call (SVC) [e.g., on z/OS] or Diagnose (DIAG) [on, e.g., z/VM] instructions to invoke operating system routines. It is possible to use operating system services from programs written in high-level languages by use of assembler subroutines. Assembler statement format The format of assembler language statements reflects the layout of an 80-column punched card, though successive versions have relaxed most of the restrictions. The optional statement label or name is a string alphanumeric characters beginning in column 1. The first character has to be alphabetic. Later versions added @, #, $, and _ to the legal characters used in labels, and increased the size from the initial six, to eight characters, then to almost unlimited lengths. The operation code or "mnemonic" can begin in any column to the right of column 1, separated from the statement label by a blank. The operation code would be only a machine instruction (macros were not available), making it usually 1, 2, 3, or rarely 4 letters. The operation code was enhanced to allow up to eight characters, then later to effectively unlimited lengths. The operand field can begin in any column to the right of the operation code, separated from the operation code by at least one blank. Blanks are invalid in operands except in character constants. The operand field, consisting of one or more operands, is optional depending on the operation code. Optional comments can appear to the right of the operand field, separated by at least one blank. Basic Assembly Language does not allow statement continuation. Later versions of the assembler indicate continuation by the appearance of any non-blank character in column 72 of the statement being continued. Basic Assembly Language requires that column 72 be blank. A "full-card comment" is indicated by an asterisk (*) in column 1. Card columns 73–80, called the identification-sequence field can be used by the programmer for any purpose, but usually contain sequence numbers for resorting a jumbled card deck. Basic Assembly language also permits an alternate statement format with the statement starting in column 25, allowing the assembled instruction to be punched into the same card beginning in column 1. This option was not continued in later versions of the assembler. Types of instructions Three main types of instructions are found in the source code of a program written in assembler.