Updated:
2003-09-23 11:44

Project 2 - LMC Programming

DAT 2343 - Fall 2000

Synopsis

  1. Write mnemonic LMC instructions for a program that will input two numbers and calculate and print the value of the first number raised to the power of the second number.  (Follow the supplied pseudocode algorithm, below.)
  2. Assemble by hand your mnemonic instructions into LMC numeric codes.
  3. Enter your codes and test your program in the LMC simulator under Windows.  (See LMC Simulator, below.)
  4. Hand in a diskette and printout containing your working program.  (See Hand In, below.)

Algorithm Details

Your LMC assembler program should input two numbers and calculate and print the value of the first number (the base number) raised to the power of the second number (the exponent number).  An algorithm is given, below.

For example, if the two input numbers were 005 then 004, your code should output 625, which is 005 x 005 x 005 x 005, that is: 005 multiplied by itself 004 times. Note that, by definition, any value raised to the power of 000 is equal to 001.

Use the two-argument Multiplication subroutine developed in class (available on the Web as well) to perform the multiplication. You must handle the multiplication by passing two arguments in a call to a multiplication subroutine and returning the result.

Your mnemonic instructions must use only label-style references in the address/operand field.  Do not use any mailbox numbers as addresses - use labels only.  (Also, do not use the ORG pseudo-instruction.  Code should begin at mailbox location zero.)

You may assume that the final result will be no greater than 999; there is no need to check for overflow or other error conditions when doing the arithmetic.

Pseudo-Code

Use the following pseudo-code to develop your LMC mnemonic assembler program.  Your code will have a MAIN program and one SUBROUTINE:

/* First is the code for the MAIN program.
 */
Input the first number
Input the second number
Initialize the answer to one 
While the second number is greater than zero 
    Call the Multiply subroutine to multiply the answer by
        the first number, giving a new value for the answer
    Decrement the second number by one
Endwhile 
Display the value of the answer 
Stop the program
/* Second is the MULTIPLY SUBROUTINE given in the Web notes.
 * This subroutine takes two arguments and returns the result
 * of the multiplication in the calculator.
 */
Subroutine Multiply (to be copied from class and web notes)
    Multiply the two input arguments ARG1 and ARG2
    Return the result in calculator
Endsubroutine

Translate the given pseudo-code into one single program as LMC mnemonic instructions.  (You will copy the code for the Multiply subroutine from the class notes or the Web page.) 

Important Notes

Pick proper names for your variables.  Do not use poor names such as "first", "second", "A", "B", "number", "num1", "num2", or "value" (etc.).  Use good names that reflect the functions of the variables in the algorithm.
Variable names and labels must start with a letter and may not contain blanks (same as in most programming languages).
No numeric arguments/operands are allowed when writing LMC mnemonic instruction assembly language - write mnemonic instructions with labels only.  (For example, always write "LDA SUM" not "LDA 23".
When writing mnemonic assembly language code using labels, ensure that all labels used have defined locations.
You can't use the same name for two different variables and/or labels.  All names must be unique (same as in most programming languages).
Make sure you set up the two arguments ARG1 and ARG2 to the Multiply subroutine with the correct values before you call the subroutine.  Follow the examples used in class and in the Web notes.
Do not alter the code or variable names of the Multiply subroutine.  You must use it as written.

Debugging

Hand-assemble your mnemonic instructions into the equivalent LMC numeric codes.

Download the "son of LMC" Simulator program (see below) that simulates the "Little Man Computer" with a couple of additional operations. This program should be run from Windows 95/98. Run the simulator and enter your numeric codes into the correct mailboxes. Run, test, and debug your program using the simulator.

When your program works correctly, use the simulator to save the numeric codes on a diskette, using the given file name (below).

Be sure to resave your modified numeric codes if you make changes to the codes while in the simulator, and remember to modify your mnemonic instructions to reflect any such changes before you hand in your project.  The mnemonic instructions you hand in must match the numeric codes used in the simulator!

Submit an envelope containing a diskette containing a text file of your saved LMC numeric codes and a text file of your mnemonic instructions.  Also include one printed copy of the mnemonic instructions file on a sheet of paper.  Follow the Hand In format given below.

LMC Simulator under Windows

The simulator comes in two versions.  The basic version, available on Alan Pinck's site, is known to work reasonably under Windows 95/98.  The enhanced version was enhanced by Algonquin student Christopher Hyne and permits editing and other features.  I recommend you try the enhanced simulator first; if it misbehaves, tell me what went wrong and return to the basic simulator.

The Enhanced Simulator can read the data files saved by the Basic Simulator; but, the Basic Simulator can only read files saved in "old format".  (You will be asked which format you want when you use the "save" feature of the Enhanced Simulator.)  You may submit files on diskette in either format.  Enhanced format is easier to read, since it is one mailbox per line.

Enhanced Simulator (FoSoLMC.EXE)

Download: FriendOfSonOfLMC.EXE

If you have Visual Basic 6.0 on your computer, you should only need the actual program executable, given above. If you don't have Visual Basic 6.0 or the Visual Basic Runtime Libraries on your computer you will need to download and install them using the (large!) Setup Kit available here.

The above links are local Algonquin copies of the original files kept on Christopher Hyne's F.O.S.O.L.M.C. site.

Basic Simulator (SonOfLMC.EXE)

Download: SonOfLMC.EXE

The Basic Simulator doesn't have editing and other enhancements built in.  It requires certain Dynamic Link Libraries which are commonly installed on many systems (all college lab computers should have these files). Specifically, this program was created using Visual Basic version 4 and needs VB40032.DLL.

If your computer does not have any of the required files, you can download a .ZIP version of the entire package including all support files from:

Alan Pinck Little Man Computer FTP site

The available files include: SonOfLMC.ZIP... the complete executable package (4Mb) Son_P1.ZIP, Son_P2.ZIP, Son_P3.ZIP, Son_P4.ZIP... all the same files as the above but broken up into 4 collections, each of which should fit on a 1.4Mb disk.

Hand In

Submit your Project in a labelled, unsealed, but closed envelope.  (If you seal an envelope, it becomes useless as an envelope after I unseal it!)

Create and include in the envelope a copy of a diskette containing two text-only files:

  1. File 1: A PROGRAM.TXT text file containing my Assignment Submission label information followed by the five-column (plus comments) mnemonic instructions of your LMC program.
  2. File 2: A P2CODES.LMC "save" text file from the LMC simulator containing the LMC numeric codes of your assembled program.  I accept both Enhanced and Basic save formats.

Print the PROGRAM.TXT from the diskette and include the printout in the envelope:

  1. Printout: Print a clear paper copy of your PROGRAM.TXT file for submission with your diskette.

 Please keep master copies of the diskette and printout; don't hand in your only copy.

Text Files Only

For full marks:

Follow my Assignment Submission Standards.  Put labels on everything!
All the submission files on the diskette must be plain text only.  Plain text is readable in Windows Notepad or DOS EDIT (or Unix/Linux vi).  Check the format of your files before you submit them.  Do not submit Word, WordPerfect, or HTML documents.
Use the exact file names given.  The automated program I use to mark these assignments will not find misspelled files on your diskette.  Do not place files in a subdirectory on the diskette.
Ensure that the document prints neatly - pay attention to margins, line length, and consistent indentation.

Problems?

As with all questions and comments on course content, please post any problems to the course discussion news group.

 

Web Author: Ian! D. Allen idallen@idallen.ca      Updated: 2003-09-23 11:44

Internet Free Zone Level 1 logo Support free and non-commercial Internet.

Any Browser logo This site works best in Any Browser, a campaign for non-specific WWW.

Creative Commons License logo This work is licensed under a Creative Commons License.