Assembler instructions Assembler instructions, sometimes termed directives, pseudo operations or pseudoops on other systems, are requests to the assembler to perform various operations during the code generation process. For instance, CSECT means "start a section of code here"; DC defines a constant to be placed in the object code. One of the more important assembler instructions is USING, which supports the truncated addressing of the S/360 architecture. It guides the assembler in determining what base register and offset it should use for a relative address. In BAL, it was limited to the form USING base,reg-1,...,reg-n Machine instructions (mnemonic) There is a one-to-one relationship with machine instructions. The full mnemonic instruction set is described in the Principles of Operation manual for each processor. Examples: * 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' Generally accepted standards, although by no means mandatory, include the identification of general purpose registers with mnemonics. Unlike assemblers for some other systems, such as X86 assembly language, register mnemonics are not reserved symbols but are defined through EQU statements elsewhere in the program. This improves readability of assembler language programs and provides a cross-reference of register usage. Thus typically you may see the following in an assembler program: R3 EQU 3 ... L R3,ZIGGY Some notable instruction mnemonics are BALR for a call storing the return address and condition code in a register, SVC, DIAG, and ZAP. The latter inspired the name of the SuperZAP utility by a programmer using the pseudonym WAMOZART, cf. . System/360 machine instructions are one, two, or three halfwords in length (two to 6 bytes). Originally there were four instruction formats, designated by the first two bits of the operation code field; z/Architecture added additional formats. Macros and conditional assembly Basic assembler language does not support macros. Later assembler versions allow the programmer to group instructions together into macros and add them to a library, which can then be invoked