8086 Object Module Formats | Version 4.0 |
If the LOCATION is a BASE. POINTER. or HIBYTE. it is unclear
what the translator had in mind, and the action taken by R&L is defined by
SEGMENT-RELATIVE FIXUPS
A
FRAME specified by the fixup, and a signed
(1) if LOCATION is a POINTER" then FBVAL is added (modulo 65536) to the high order word of POINTER, and FOVAL is added (modulo 65536) to the low order word of POINTER.
(2) if LOCATION is a BASE, then FBVAL is added (modulo ~5536) to the BASE; FOVAL is ignored.
(3) if LOCATION is an OFFSET. then FOVAL is added (modulo 65535) to the OFFSET; FBVAL is ignored.
(4) if LOCATION is a HIBYTE, then (FOVAL / 25~) is added (modulo 25~) to the HI8YTEi FBVAL is iqnored. (The indicated division is dinteqer division d • i.e •• the remainder is discarded.)
(5)if LOCATION is a LOBYTE, then (FOVAL modulo 255) is added (modulo 256) to the LOBYTE; FaVAL is iqnored.
IN'rERMEDIATE VALUES in FIXUP ARITHI\1ETIC
The 8086 Object Module Formats quarantee fixups in the sense
that, if a TARGET can not be accessed from a LOCATION with the assumed FRAME, then that failure can be detected and R&L can issue a
warninq messaqe. This checkinq is called daccess verification·l • In order to perform this checkinq,
intermediate values of its address arithmetic. These intermediate values are retained either in the DATA Record, or in the FIXUP Record. The followinq diaqram illustrates three cases:
18