At a certain level, students are expected to be able to learn from the materials with only a little guidance. If your professor is not doing his part of the job, then look for tutorials. Play with your emulator. Read about the OPERATION of the micro, not just its instruction set. You have to know how the beastie works, and they don't all work in precisely the same ways.
Some registers may be special purpose, others may be multipurpose. Read.
CX is not an index register. If CX holds the effective address, then put it into an index register and use it. Suppose we want to get the value at address 1000 into register AX. If CX holds the value, 1000, then we can move that value to BP (an index register) and load AX indirectly, using BP, an index register. See the following screenshot, captured in debug.
The first command displays the registers.
The second command displays a little data beginning at 1000. Note the value at 1000 is C7 06. Because this is a little endian machine, that is 06C7 hex.
The third command gets me into assembly mode.
...The first instruction I use is to get the 1000 (EA) into CX
...(since it's not already there)
...The second instruction moves that to BP, an index register
...The third instruction moves the contents POINTED TO by BP to AX
The T commands execute these instructions one at a time, displaying the registers at each step.
Note that CX has gone from 0000 to 1000.
Note that BP has gone from 0000 to 1000.
Note that AX has gone from 0000 to 06C7.
