def _compound_register(upper, lower):
    """Return a property that provides 16-bit access to two registers."""
    def get(self):
        return (upper.fget(None) << 8) | lower.fget(None)

    def set(self, value):
        upper.fset(None, value >> 8)
        lower.fset(None, value)

    return property(get, set)