This problem is to implement new nonunary instructions to process floating point numbers.
Assume that floating point numbers are stored with all the special values of IEEE 754 but
with a two-byte cell having one sign bit, six exponent bits, nine significand bits, and a hidden
bit. The exponent uses excess 31 notation except for denormalized numbers, which use
excess 30.
(a)
Implement a new unary instruction in place of DECO called BINFO, which stands for binary
floating point output. Permit the same addressing modes as with DECO. The value 3540
(hex), which represents the normalized number 1.101 × 2–5, should be output as
1.101000000b011010, where the letter b stands for two raised to a power and the bit sequence
following the b is the excess 30 representation of –5. The value 0050 (hex), which
represents the denormalized number 0.00101 × 2–30, should be output as 0.001010000b-30,
where the power will always be –30 for denormalized numbers. Output a NaN value as
NaN, positive infinity as inf, and negative infinity as –inf.
(b)
Implement a new unary instruction in place of DECI called BINFI, which stands for
binary
floating point input. Permit the same addressing modes as with DECI. Assume that the
input will be a normalized binary number. The input 1.101000000b011010, which represents
the normalized number 1.101 × 2–5, should be stored as 3540 (hex).
(c)
Implement a new unary instruction in place of NOP called ADDFA, which stands for
add
floating point accumulator. Permit the same addressing modes as with ADDA. For
normalized and denormalized numbers, you may assume that the exponent fields of the
two numbers to add are identical, but the exponent field of the sum may not be the same
as the initial exponent fields. Your implementation will need to insert the hidden bit
before performing the addition and remove it when storing the result. Take into account
the possibility that one or both of the operands may be a NaN or infinity.
(d)
Work part (c) assuming the exponent fields of the normalized or denormalized numbers
may not be identical.