NLZ

From NDWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
NLZ
Description Normalize (integer to floating)
Format NLZ <scaling>
Code 151 4008
Affected T, A, D
Type User
Architecture ND-100, ND-110

NLZ is an assembly instruction. It converts the number in the A register to a standard form 48-bit floating point number in the floating point accumulator (T, A and D registers), using the scaling of the NLZ instruction as a scaling factor.

The scaling is given to the conversion of -128 to 127 (approximately 10-39 to 1039).

For integers, a scaling factor of +1610 will give a floating point number with the same value as the integer. A larger scaling factor will result in a higher floating point number. Because of the single precision fixed point number, the D register will be cleared.


Example

  • NLZ+20 (code 151420) Convert from integer to floating point.


NLZ on 32-bit floating point CPUs

Main article: 32-bit floating point

The ND-100/110 can have a 48-bit floating point CPU (standard configuration) or a 32-bit floating point CPU (customer option). For 32-bit floating point operations NLZ works as described above, except that the T register is not affected. This can also be used to test for 48-bit vs. 32-bit CPUs. The method is described in Norsk Data Document ND–06.029.01 ND-110 Instruction Set [1] p.72:

SAT 0    % Set T register to zero (INSTRUCTION-B test program uses 'COPY 0 DT')
SAA 1    % Set A register bit one
NLZ 16   % Normalize with scaling factor 16 decimal
% Test if T is changed (non-zero). If so, the CPU is 48-bit, otherwise it is 32-bit.

References

  1. Norsk Data Document ND–06.029.01 ND-110 Instruction Set