HLASM Language Reference
HLASM Language Reference HLASM Language Reference
DC Instruction—Binary Floating-Point Special Values Floating-Point Special Values For special values, the syntax of the DC statement is: ►►──DC──┬────────────┬──┬─E─┬──┬─B─┬──┬──────────────┬──────────────► | └─dup_factor─ ┘ ├ ─D─ ┤ └ ─H─ ┘ └─program_type─┘ └─L─┘ ►──┬─────────────────┬──┤ nominal_value ├──────────────────────────►◄ └─length_modifier─┘ nominal_value (type extension B): ┌─ + ─┐ ├──'──┼─────┼──┬─(SNAN)─┬──'────────────────────────────────────────┤ └─ - ─┘ ├─(QNAN)─┤ ├─(NAN)──┤ ├─(INF)──┤ ├─(MAX)──┤ ├─(MIN)──┤ └─(DMIN)─┘ nominal_value (type extension H): ┌─ + ─┐ ├──'──┼─────┼──┬─(MAX)──┬──'────────────────────────────────────────┤ └─ - ─┘ ├─(MIN)──┤ └─(DMIN)─┘ dup_factor causes the constant to be generated the number of times indicated by the factor. type indicates that the constant is either short, long or extended floating point. type extension the type of conversion required to assemble the constant. | program_type | assign a programmer determined 32-bit value to the symbol naming the DC | instruction, if a symbol was present. length_modifier describes the length in bytes or bits into which the constant is to be assembled. For NANs and INF the minimum length in bits of the constant is: 11 Short floating-point constant 14 Long floating-point constant 18 Extended floating-point constant This minimum length allows for the sign, exponent and two fraction bits. 170 HLASM V1R5 Language Reference
DC Instruction—Binary Floating-Point Special Values nominal_value defines the special value to be generated. Notes: 1. The nominal value can be in mixed case. 2. SNAN assembles with an exponent of ones and 01 in the high order fraction bits with the remainder of the fraction containing zeros. 3. QNAN assembles with an exponent of ones and 11 in the high order fraction bits with the remainder of the fraction containing zeros. 4. NAN assembles with an exponent of one and 10 in the high order fraction bits with the remainder of the fraction containing zeros. 5. MIN assembles as a normalized minimum value, that is an exponent of one | and a fraction of zeros for binary constants, and a fraction with a leading | hexadecimal digit 1 followed by zeros for hexadecimal constants. | 6. DMIN assembles as a denormalized minimum value with an exponent of zeros | and a fraction of all zeros except for a low order bit of one. 7. INF assembles with an exponent of ones and a fraction of zeros. | 8. MAX assembles with a fraction of all ones and an exponent of all ones for | hexadecimal constants, and an exponent of all ones except for the low bit for | binary constants. Literal Constants Literal constants let you define and refer to data directly in machine instruction operands. You do not need to define a constant separately in another part of your source module. The differences between a literal, a data constant, and a self-defining term are described in “Literals” on page 40. A literal constant is specified in the same way as the operand of a DC instruction. The general rules for the operand subfields of a DC instruction also apply to the subfield of a literal constant. Moreover, the rules that apply to the individual types of constants apply to literal constants as well. However, literal constants differ from DC operands in the following ways: Literals must be preceded by an equal sign. Multiple operands are not allowed. The duplication factor must not be zero. Symbols used in the duplication factor or length modifier must be previously defined. Scale and Exponent modifiers do not need pre-definition. If an address-type literal constant specifies a duplication factor greater than one and a nominal value containing the location counter reference, the value of the location counter reference is not incremented, but remains the same for each duplication. The assembler groups literals together by size. If you use a literal constant, the alignment of the constant can be different than might be the case for an explicit constant. See “Literal Pool” on page 44. Chapter 5. Assembler Instruction Statements 171
- Page 140 and 141: CNOP Instruction Figure 29 (Page 2
- Page 142 and 143: COPY Instruction In the following e
- Page 144 and 145: CSECT Instruction symbol in the nam
- Page 146 and 147: DC Instruction ROUTINE B GAMMA DXD
- Page 148 and 149: DC Instruction duplication_factor c
- Page 150 and 151: DC Instruction Figure 33 (Page 2 of
- Page 152 and 153: DC Instruction With EBCDIC spaces
- Page 154 and 155: DC Instruction Further information
- Page 156 and 157: DC Instruction | Symbols used in su
- Page 158 and 159: DC Instruction The length attribute
- Page 160 and 161: DC Instruction Notes: 1. Don't conf
- Page 162 and 163: DC Instruction—Character Constant
- Page 164 and 165: DC Instruction—Character Constant
- Page 166 and 167: DC Instruction—Graphic Constant r
- Page 168 and 169: DC Instruction—Fixed-Point Consta
- Page 170 and 171: DC Instruction—Fixed-Point Consta
- Page 172 and 173: DC Instruction—Decimal Constants
- Page 174 and 175: DC Instruction—Address Constants
- Page 176 and 177: DC Instruction—Address Constants
- Page 178 and 179: DC Instruction—Offset Constant re
- Page 180 and 181: DC Instruction—Length Constant Le
- Page 182 and 183: DC Instruction—Hexadecimal Floati
- Page 184 and 185: DC Instruction—Hexadecimal Floati
- Page 186 and 187: DC Instruction—Hexadecimal Floati
- Page 188 and 189: DC Instruction—Binary Floating-Po
- Page 192 and 193: DROP Instruction DROP Instruction T
- Page 194 and 195: DS Instruction USING DSECTA,14 ALBL
- Page 196 and 197: DS Instruction The size of a storag
- Page 198 and 199: DSECT Instruction DSECT Instruction
- Page 200 and 201: DXD Instruction ASEMBLY2 CSECT USIN
- Page 202 and 203: END Instruction change but no addit
- Page 204 and 205: EQU Instruction EQU Instruction The
- Page 206 and 207: EQU Instruction 5. The length attri
- Page 208 and 209: EXITCTL Instruction sequence_symbol
- Page 210 and 211: ISEQ Instruction must be greater th
- Page 212 and 213: LOCTR Instruction A CSECT , See not
- Page 214 and 215: LTORG Instruction If symbol is an o
- Page 216 and 217: MNOTE Instruction When two literals
- Page 218 and 219: OPSYN Instruction ,ERROR, SEV 1 An
- Page 220 and 221: ORG Instruction AFTER is defined in
- Page 222 and 223: ORG Instruction If you specify mult
- Page 224 and 225: POP Instruction POP Instruction The
- Page 226 and 227: PRINT Instruction Note: If the next
- Page 228 and 229: Process Statement Process Statement
- Page 230 and 231: REPRO Instruction NOPRINT instructs
- Page 232 and 233: RSECT Instruction 4. AMODE or RMODE
- Page 234 and 235: START Instruction START Instruction
- Page 236 and 237: TITLE Instruction The name value is
- Page 238 and 239: USING Instruction Only the characte
DC Instruction—Binary Floating-Point Special Values<br />
nominal_value<br />
defines the special value to be generated.<br />
Notes:<br />
1. The nominal value can be in mixed case.<br />
2. SNAN assembles with an exponent of ones and 01 in the high order fraction<br />
bits with the remainder of the fraction containing zeros.<br />
3. QNAN assembles with an exponent of ones and 11 in the high order fraction<br />
bits with the remainder of the fraction containing zeros.<br />
4. NAN assembles with an exponent of one and 10 in the high order fraction bits<br />
with the remainder of the fraction containing zeros.<br />
5. MIN assembles as a normalized minimum value, that is an exponent of one<br />
| and a fraction of zeros for binary constants, and a fraction with a leading<br />
| hexadecimal digit 1 followed by zeros for hexadecimal constants.<br />
| 6. DMIN assembles as a denormalized minimum value with an exponent of zeros<br />
| and a fraction of all zeros except for a low order bit of one.<br />
7. INF assembles with an exponent of ones and a fraction of zeros.<br />
| 8. MAX assembles with a fraction of all ones and an exponent of all ones for<br />
| hexadecimal constants, and an exponent of all ones except for the low bit for<br />
| binary constants.<br />
Literal Constants<br />
Literal constants let you define and refer to data directly in machine instruction<br />
operands. You do not need to define a constant separately in another part of your<br />
source module. The differences between a literal, a data constant, and a<br />
self-defining term are described in “Literals” on page 40.<br />
A literal constant is specified in the same way as the operand of a DC instruction.<br />
The general rules for the operand subfields of a DC instruction also apply to the<br />
subfield of a literal constant. Moreover, the rules that apply to the individual types<br />
of constants apply to literal constants as well.<br />
However, literal constants differ from DC operands in the following ways:<br />
Literals must be preceded by an equal sign.<br />
Multiple operands are not allowed.<br />
The duplication factor must not be zero.<br />
Symbols used in the duplication factor or length modifier must be previously<br />
defined. Scale and Exponent modifiers do not need pre-definition.<br />
If an address-type literal constant specifies a duplication factor greater than one<br />
and a nominal value containing the location counter reference, the value of the<br />
location counter reference is not incremented, but remains the same for each<br />
duplication.<br />
The assembler groups literals together by size. If you use a literal constant,<br />
the alignment of the constant can be different than might be the case for an<br />
explicit constant. See “Literal Pool” on page 44.<br />
Chapter 5. Assembler Instruction Statements 171