Register Transfer Notation
Register transfer notation used to describe how data is passed between CPU registers during the execution of instructions. It is written in human readable format as close to assembly language as possible. You will need to be familiar with the basic usage of RTN when answering exam questions or for Computer Science interviews.
The video below shows how transfer notation can be used to describe the steps of the fetch-execute cycle.
Saving values to registers
ACC <– [MDR]
In the example above the contents of the MDR are copied to the ACC. Note how the arrow points left, just the same as when you assign a variable in Python or similar language.
Incrementing Register Values
CU <– [CU] + 1
In the example above the contents of the CU are incremented by one
Saving values from direct memory addresses
MDR <– [[MAR]]
In the example above the contents of the main memory location referenced in MAR are loaded into the MDR, not the MAR contents themselves. This type of referencing is denoted with double brackets.
Accessing a subset of a register value
MAR <– MDR(L)
The contents of the MDR will often contain both an opcode and an operand but often only part of the value is needed. This can be specified a number of different ways but may use the High Byte(H) / Low Byte(L) to indicate whether to opcode(high byte) or operand(low byte) is to be used. High byte and low byte represent each half of an instruction in a 16bit processor, with the 4 most significant bits being to the left and the least significant bits to the right.
R1 : ACC <– [ACC] + 1
In the example above the contents of the ACC are only incremented if the content of R1 is 1(True)