Tue, 27 September 2016, 00:14

A student writes:

> Hi Dr. Patt. On question 5 of problem set 2, we are asked to create the
> logic table for the logic block in the memory system that is drawn out for
> us. One of the outputs is a 4 bit input into the MDR register. I thought
> this signal would be the bits that indicate which bytes of the MDR to load
> where each bit corresponds to a byte, however after going over the notes on
> physical memory, I realized that none of my outputs handled sign extension.
> Should I be able to handle sign extension with the 4 bit input into the MDR
> or would sign extension be a separate output that (at least on this
> particular problem) is not included?
> <<name withheld to protect the student who can't find sign-extension>>

You are correct, the 4 bits input into the MDR coming from the logic are
load enable signals to the four bytes of the MDR.

With respect to sign-extension, we can do it between memory and the MDR,
or between the MDR and the Register that is being loaded.  In Problem 5,
I chose to not deal with sign-extension between memory and the MDR, which
means I will have to do it between the MDR and the regiser that will be

What is important here is that if we are doing a LDByte, the result of the
memory access is to load MDR[7:0] with the relevant byte and if we are doing
LDHalfWord, the result of the memory access is to load MDR[15:0] with the
relevant two bytes.  It does not matter what we do about the other bytes of
the MDR, since we will do sign-extension from the MDR to the register being

Good luck with the problem set.

Yale Patt