Assignment statements are the means by which storage calls and accumulators are given values. The form of a value assignment to a variable can vary from the simple constants defined in Section 4 to complicated expressions involving the current value of other variables. There is a distinction between cell and accumulator assignments. As the 1900 order code has few machine orders for doing arithmetic in cells, cell assignments are in general much more restrictive. In most cases the calculations are carried out using accumulators and the resulting value is then assigned to a storage cell. In general cell assignment statements are less efficient than accumulator assignments due to the number of store accesses involved.
Assignment statements may run over several lines if necessary, or several short statements may be placed on one line. Statements, like declarations are separated by semicolons. Assignments, in general, only alter the value of the accumulator or value to the left of the assignment operator. Cases where this is not so will be mentioned specifically. Care should be taken about where statements are split between lines. In particular, a wrong code may be generated if the split occurs immediately after the := symbol.
The operands used in assignments can be the simple cell designators defined in the previous section or the more complex SMO designators. The syntax in the following chapters will include this more complex type which will not be defined in full until a later Section.
The 1900 series computers do have a number of one-bit registers which are not directly addressable but do affect the operation of some instructions. The OVERFLOW or V register is set when the result of carrying out integer arithmetic in single length exceeds 23 bits plus sign. Once set, V will remain set until cleared. In the case of single length floating point operations, if the accumulator A1 has its exponent go out of range then the floating point overflow register FOVR will be set. Instructions exist on the 1900 range for testing and clearing overflow bits.
The CARRY register is a special one-bit register associated with multi length integer working. The integer arithmetic instructions on the 1900 will, in general, add the CARRY bit to the value of the operand before executing the instruction. However, as the basic instructions reset CARRY to zero, this effect can normally be ignored. When multi-length working is being carried out, special arithmetic instructions allow CARRY to be propagated through the multi-length integer.