In cases (a) and (b), the microprocessor will be able to access 64Kbyte; the only difference is that with an 8-bit memory each access will transfer a byte, while with a 16-bit memory an access may transfer a byte or a 16-byte word.
For case (c), separate input and output instructions and neened, whose execution will generate separate "I/O signal" (different from the "memory signals" generated with the executions of memory-type instructions); at a minimum, one additional output pin will be required to carry this new signal.
For case (d), it can support 256 input and 256 output byte ports and the same number of input and an output 16-bit ports; in either case, the distinction between an input and an output port is defined by the different signal that the executed input or output instruction generated.