Final: Open manuals and green class notes. No calculators. Covers material in lectures, and on labs, assignments and project. Areas covered on the exam, with some questions to give you an idea what to study: Specifications ================ Given a subroutine, be able to write a specification for it (including parameters, registers affected, return value, whether the parameters are cleared off the stack) Given a specification, write a subroutine that meets it Interrupts ========== -- When is an interrupt generated? What happens when an interrupt is generated? What does the rti instruction do? -- How are interrupt vectors and the program counter related? -- Interrupts vs. polling in general; how they relate to status flags; how does the programmer determine which is used. -- Uses for interrupts. -- Be able to explain the SCI interrupts. -- Understand the code given in class for interrupt-driven reception of a block of data. A possible question is to write (or complete) code to perform interrupt-driven transmission of a block of data. -- What does setting the I bit do? --- What does setting the X bit do? --- Can the I bit can be set to 0 by software? Can it be set to 1 by software? Answer the same questions for the X bit. Sensors =============== -- What you need to know to use them in your labs and project. Downloading ============ -- Describe the downloading process (i.e., what programs are put where; what is placed into the Program Counter at the various steps) -- Why shouldn't you use fdb and fcb instructions in RAM? -- Understand the S-record format. Note that it is described in your green class notes. Serial Port =========== -- Be able to explain what is involved in sending information between another compute and your board and your board and another computer. -- Understand start and stop bits. -- What is a framing error? -- What are the functions of the SCSR, the SCDR, and the shift register? -- Make sure you understand the code in HEXMON for transfers over the serial port -- In the original Hexmon program, is I/O handled with polling or interrupts? Explain. Motor Control ============ -- Make sure you understand the code controlling them in HEXMON Stacks and Subroutines ======================= -- Where is the stack placed in memory on the mini-board? -- In the programming assignments, which parameters are call by reference and which are call by value? -- Be able to change code so that a call by reference parameter is changed into a call by value parameter, or vice versa. -- Given code that calls subroutines (and where parameters may be passed in registers or on the stack), and that pushes/pops stuff on/off the stack, be able to show the contents of the stack, the stack pointer, the program counter, and any affected memory locations in RAM; Also, be able to show the contents of IX after a TSX command. -- Be able to hand-assemble code that contains subroutine calls. -- What are the differences between subroutine calls and interrupts? Branches and Relative Addressing ================================ -- Be able to read and assemble code containing them -- Be able to verify the boolean formulas defining the branches -- Be able to state whether or not there is signed or unsigned overflow Translating High-Level Programming Language Constructs into Assembly Language ================================================== As covered in the labs and in class. 1-D arrays, structures, for-loops, while-loops, if-statements, struct statements. ================================================== Generally, be able to assemble, understand, and write code containing the various features covered in the course (e.g., addressing modes, stack manipulation, branches, ...) For practice, trace through sample programs (from labs, assignments, etc.) You can also hand-assemble some of this code then check your answers against the actual assembler listing. Also, make sure you understand the lecture materials. ============================================== You are also responsible for the exam1 material (see the info on the web page) ======