V22.0201 (sec. 1) - Computer Systems Organization (Honors)

Assignment 3

The goal of this assignment is to give you experience writing a larger Intel assembly program, and in particular one which uses the basic (character-based) graphics, keyboard, and (possibly) speaker control presented in the Dewar notes.  If you have knowledge of additional IO capabilities, you are free to use them, but that is not required.

You have your choice of three possible projects, each of which is fairly open-ended:

A game program

Design an entertaining game.  You may use Prof. Dewar's game as a starting point, but you are also free to write something quite different if you want.  The game should make use of the character-based graphics and have some real-time aspect.  You may want to add music, different levels of user difficulty, scoring options, etc.

A development environment for the stack machine

For assignment 2, you wrote a simulator for a simple stack machine.  For this assignment, you are to write a graphic simulator/debugger for this machine.  The screen should contain regions which display the program, the program counter, the local variables, and the contents of the stack, all in hex.  You should allow the user to position the cursor over the program or local variables and change them.  In addition, you need to provide keys which single-step the program (advancing the program counter, updating the stack and variable displays) and which reset the program counter.  The assignment should be delivered with some sample program already in memory.

If that's not hard enough, you can consider allowing the user to enter the program in a symbolic form.

A spreadsheet

Implement a very simple spreadsheet, with five columns (labeled A to E) and six rows (labeled 1 to 6).  This spreadsheet should be displayed twice on the screen:  the top copy shows the contents of each cell, while the lower copy shows the value of each cell.  The contents can be either an integer or a formula, which must be of the form cell op cell, where cell is A1 A2 ... E6, and op is +, -, *, or /.  If the contents is an integer, the value is the same integer.  If the contents is a formula, the value is the result of computing that formula.  You should be able to position the cursor over any contents cell and modify it, and all the affected value cells should change accordingly.

Because there will be so much variety in the assignments, it is essential that your program include a detailed description of your assignment as a large block of initial comments.  These comments should say what the assignment does, how to use it ("user's guide"), and a description of the Intel capabilities you used in writing the program (graphics, video, speaker, ...).  In addition, a briefer set of instructions should appear as a start-up screen for your program.

The assignment will be graded on:  adequacy of description (did you clearly describe what your program does, and how it does it);  internal comments;  correct functionality;  use of Intel capabilities;  and variety of features.  We encourage you to be imaginative but still conservative:  first implement a basic system and get it to work;  later add features if you have time.  Lateness penalties add up quickly, so a good assignment done on time is better than a super assignment two weeks late.

This assignment is due on November 10th.  There is a penalty of 1/2 point (out of a total of 18 points) for each day late.

Email your assignment (the description the listing file produced by the Dewar assembler) to our e-tutor, Aldo Nunez, at ajn203@omicron.acf.nyu.edu, with a copy to me (grishman@cs.nyu.edu).  Include your name and "Asgn 3" in the subject line.