Project 2 - LMC Programming
DAT 2343 - Fall 2000
- From the given program
description, write your own pseudo-code algorithm.
- Implement your pseudo-code algorithm using LMC mnemonic instructions.
- Assemble by hand your mnemonic
instructions into LMC numeric codes.
- Enter your codes and test your program
in the LMC simulator under
- Hand in an envelope containing a diskette with
three files, and two printouts.
Write the pseudo-code algorithm and LMC program that solves the following
You are given three integers that represent vacation days. The
three integers may arrive in any order, and they may have any value from 000
to 999. Your program is to first output the three numbers in order
from smallest to largest. Next, output all the non-vacation days
between the last vacation day (the largest integer of the three) and the
first vacation day (the smallest integer of the three). As you print
all the non-vacation days, you must arrange not to print out the middle
integer of the three, as it is also a vacation day. You must print out
all the non-vacation days from the largest day down to the smallest day,
skipping over the middle vacation day.
Here's another way to express the same problem:
- Your program should read three numbers (after all, the LMC can only
input numbers!) and store them in memory.
- Output the three numbers in order, from smallest to largest.
- Output all the integers between the largest and the smallest number,
except the number that is the middle number of the three. (Do
not output the largest or the smallest either!) Output the numbers in
descending order, skipping over the middle number.
The method you choose to produce the output is entirely up to you.
The internals of the algorithm are not specified; you simply have to produce
output that matches the given specifications.
Sample Input and Output
Input: 005 001 008
Output: 001 005 008 007 006 004 003 002
Input: 013 016 010
Output: 010 013 016 015 014 012 011
Input: 101 100 102
Output: 100 101 102
Input: 999 998 998
Output: 998 998 999
Input: 000 000 000
Output: 000 000 000
Write a pseudo-code algorithm that implements the given program
specifications. Pick proper names for your variables. Use good
names that reflect the functions of the variables in the original problem. You will
be handing this in. (My pseudo-code was about 25 lines long. I
tested the logic of my pseudo-code by turning it into a C program that was
about 30 lines long. You can try running it here.)
Translate your pseudo-code into LMC mnemonic instructions. Pay
attention to the details of your algorithm and the placement of each
statement. Do not optimize your LMC code! (My resulting LMC
program occupied about 65 mailboxes. Yours may differ.)
Your translated code must be in the usual labels/mnemonics/operands/comments
format. Do not optimize your code! Translate each pseudo-code
statement separately. You will be handing this in.
LMC Mnemonics Notes
- LMC variable names and labels must start with a letter and may not
contain blanks. (These are the same rules used in most programming
- No numeric arguments/operands are allowed to instruction mnemonics when writing LMC mnemonic
instruction assembly language - write mnemonic instructions with labels
only. (For example, always write "LDA SUM" and never
"LDA 23".) "DAT" pseudo-operations are the only
lines that are allowed to contain numbers (data).
- When writing mnemonic assembly language code using labels, ensure that
all labels used have defined locations. You may insert labels that
are never actually used, for commenting purposes; but, do this sparingly
as it can confuse people who read your code.
- You can't use the same name for two different variables and/or
labels. All names must be unique (These are the same rules used in most programming
- Do not use the ORG pseudo-instruction. Code should begin at
mailbox location zero.
Hand-assemble your LMC mnemonic instructions into the equivalent LMC
numeric codes. (Assign locations to all the instructions; build a label
table; translate the mnemonics into LMC numeric codes.)
Download one of the LMC Simulator programs (see below) that simulate the
"Little Man Computer". 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 LMC
numeric codes on a diskette, using the exact file name given 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 and your pseudo-code 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 and saved on disk, and the pseudo-code
must match the mnemonic instructions!
Submit a diskette and print-outs according to the Hand
In format given below.
Summary: Hand in 3 text files on one diskette; 2 printouts on paper.
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
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)
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
Basic Simulator (SonOfLMC.EXE)
Use this Basic Simulator if you can't get the Enhanced Simulator to work.
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 Algonquin 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
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.
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 three
- File 1: A PSEUDO.TXT text file containing my Assignment
Submission label information followed by your pseudo-code algorithm.
- File 2: A PROGRAM.TXT text file containing my Assignment
Submission label information followed by the five-column (plus comments) LMC
code and mnemonic instructions of your LMC program. (Make sure the
columns line up!)
- File 3: A P2CODES.LMC "save" text file from the
LMC simulator containing just the saved LMC numeric codes of your assembled
program. I accept both Enhanced and Basic save formats. I will
load this code into my own simulator and test it.
Print both the PSEUDO.TXT and PROGRAM.TXT files from the
diskette and include the two printouts in the envelope:
- Printout 1: Print a clear paper copy of your PSEUDO.TXT
file for submission in the envelope along with your diskette.
- Printout 2: Print a clear paper copy of your PROGRAM.TXT
file for submission in the envelope along with your diskette.
Please keep master copies of the diskette and printouts; don't hand in
your only copies.
Text Files Only
For full marks:
- Follow my Assignment
Submission Standards. Put labels on everything, including the
- All the submission files on the diskette must be plain text only.
Plain text is readable in Windows Wordpad, 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 documents print neatly - pay attention to margins, line
length, and consistent indentation. Align the columns carefully.
As with all questions and comments on course content, please post any
problems you encounter to the course discussion news group.