Common syntax elements
You can use the following syntax elements to write an assembler expression:
- ddd
- A decimal constant, where ddd are valid decimal digits. For example: 145
- ddd.ddd, dd.dEdd, ddEdd, dd.dE+dd, ddE+dd, dd.dE-dd, ddE-dd
- A floating-point constant, where d is one or more decimal digits and E is the letter "E". Examples: 1.23, 0.22, 12E+10, or 2.456E-5.
X'xxxx'orX"xxxx"- A hexadecimal constant, where xxxx are valid hexadecimal
digits. Examples: X'1F4C' or X"1F4C"
If this constant is from 1 to 4 bytes in length, it can be used in arithmetic or string contexts. Otherwise, it can only be used in string contexts.
C'cccc','cccc', or"cccc"- A character constant. For example: C'F$3' or "F$3"
If this constant is from 1 to 4 bytes in length, it can be used in arithmetic or string contexts. Otherwise, it can only be used in string contexts.
- symbol
- A valid symbol used in the assembler source program. Examples:
lastName, UserVar8
If a symbol is defined by using the EQU instruction and the first usage of the symbol is as a register, the symbol is associated with that register. If you define a symbol with the intent to use the symbol as a register but you never reference the symbol or the first reference to the symbol is not as a register, z/OS® Debugger defines the symbol as a constant, not as a register. For example, if you define the symbol R7 by using the instruction
R7 EQU 7and you never reference R7 or the first reference is not as a register, z/OS Debugger defines the symbol R7 as the constant 7, not as register R7.z/OS Debugger implicitly defines the following symbols in all disassembly compilation units and in any assembler compilation units where the symbol is not already defined:
- R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14,
R15. These symbols are implicitly defined as z/OS Debugger 32-bit
basic general purpose registers. For example, R0 is defined
as
%R0. If you are debugging an assembler compilation unit that defines the symbol R0 and R0 is not used as a register, you can use the%R0variable to reference 32-bit General Purpose Register R0. These are the low-order 32 bits of the 64 bit General Purpose Register. - RH0, RH1, RH2, RH3, RH4, RH5, RH6, RH7, RH8, RH9, RH10,
RH11, RH12, RH13, RH14, RH15. These symbols are implicitly defined
as z/OS Debugger 32-bit high general purpose registers. For example,
RH0 is defined as
%GPRH0. If you are debugging an assembler compilation unit that defines the symbol RH0 and RH0 is not used as a register, you can use the%GPRH0variable to reference 32-bit high General Purpose Register RH0. These are the high-order 32 bits of the 64 bit General Purpose Register. - RG0, RG1, RG2, RG3, RG4, RG5, RG6, RG7, RG8, RG9, RG10, RG11,
RG12, RG13, RG14, RG15. These symbols are implicitly defined as z/OS Debugger 64-bit
General Purpose Registers. For example, RG0 is defined as
%GPRG0. If you are debugging an assembler compilation unit that defines the symbol RG0 and RG0 is not used as a register, you can use the%GPRG0variable to reference 64-bit General Purpose Register R0. These symbols are available only when 64-bit General Purpose Registers are available. - _STORAGE. This symbol is implicitly defined as a symbol representing
all of main memory. You can reference any area of memory by using
the _STORAGE symbol with the following syntax:
For example,
_STORAGE(X'1FF3C'::4)references the four bytes of storage at address X'1FF3C'. A length of zero might be specified in which case no bytes of storage are accessed. This form is used primarily by theAUTOMONITORcommand when displaying an operand of an instruction such as LA that computes an effective address but references no data at that address.
- R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14,
R15. These symbols are implicitly defined as z/OS Debugger 32-bit
basic general purpose registers. For example, R0 is defined
as
- %symbol
- A valid z/OS Debugger variable. For example: %ADDRESS
