This lab is scheduled for the week of 19 February - 24 February.
This week you'll learn a couple of things: (1), how to use a Linux computer; and (2), how the LC-2 simulator interprets machine language problem. The second thing may not be as much fun as the first. We will use the machine language example program in section 5.4.2 of the text book with the simulator.
We are not going to have detailed descriptions of the Linux login procedure in this handout. Your lab instructor will demonstrate that for you.
If you are a Linux guru, go help someone who is not a Linux guru.
Under the direction of the lab instructor, log onto the Linux workstation and start up two terminal windows. Use the userid and password distributed in class.
If you have "lost" the userid and password, the lab instructor can reset your account.
Note to lab instructor: Use the program /usr/local/etc/resetuser on woodfin to reset lost accounts.
If you do not intend to read email on the UNCA CSCI computers, use the program pico to create a file called .forward in your home directory. This file should contain your real email address and nothing else. pico is the text editing part of pine, the mail program you briefly used in Lab 2 of CSCI 107.
Use the following Unix commands to create a read-protected subdirectory called csci/255/lab5. The first command, mkdir, creates the directory. The second command, chmod, protects your subdirectory csci, so that normally only you can access its contents. For more information on Unix file protection review Paula Edmiston's CSCI 107 tutorial on The UNIX Operating System.
Although the above chmod would normally remove read, write, and execute (rwx) permission for group members and others (go) for your directory csci; on the UNCA CSCI workstations there are special programs that allow all UNCA faculty to access student files stored within the csci directory.
Connect to your lab directory. Next use the Unix cp command to copy several files to your directory. Be sure to note the single period at the end of this command line. The period is the way Unix and DOS represent the current directory.
Now use the pwd and ls, with the -l option, commands to verify your directory creation and file transfer. You should see something like the following:
joe% pwd /woodfin/facusers/brock/csci/255/lab5 joe% ls -l total 8 -r--r--r-- 1 brock man 512 Feb 19 11:43 ch5_ex1.bin -r--r--r-- 1 brock man 60 Feb 19 11:43 ch5_ex1.obj
It is not necessary for the lab instructor to view the output of these commands. The existence of your csci/255/lab5 directory and the above files will be checked with Unix shell scripts.
Log out of the Linux workstation and give your teammate an opportunity to perform the lab up to this point.
Section 5.4.2 of the textbook contains a machine language program for adding twelve numbers. We've modified that program so that it will only add three number (5, 10, and 15) and it will store the result in memory. The modified version of the program should be stored in your lab directory as ch5_ex1.bin and ch5_ex1.obj. The binary version of the program, which can be edited using pico, is stored in ch5_ex1.bin. The object version of the file, suitable for use with the LC-2 simulator is stored in ch5_ex1.obj. You can use the LC-2 conversion program lc2concert to transform a LC-2 binary file into an LC-2 object file. We've already done that for you in this lab.
Type the command "lc2sim &" to start the simulator. You should see both a Simulator window and a Console window.
At the top of the simulator window, you will see a
command bar.
Below that you will see a display of the registers
of the simulated computer.
In the middle of the window, you will see the contents
of the simulated memory.
Press on the
menu button and then select from the pulldown menu. Use the File Selection dialog to load the machine language program ch5_ex1.obj.You should now see the machine language program in the Memory section of the simulator window. A typical line will look like:
[3002]:0101010010100000 54a0 ; and R2, R2, $0000
The leftmost hexadecimal number, 3002, is the address of the memory location. The remaining three fields on the line give the contents of the memory location in different formats. First, the number is given as a 16-bit binary number; then, it is displayed in hexadecimal; and finally the location is interpreted as an LC-2 machine instruction. In this case the instruction opcode is and, the destination is R2, and the two source operands are R2 and the constant 0.
Your job is to step through the program until it terminates at instruction 300a. Use the
» menu selection to execute a single instruction. For each executed instruction, write down the follow following five pieces of information:If the instruction modifies the program counter, you should write down the new value of the PC. To help you out, we are providing a fill-in check-off form for lab 5 that has completed entries for the first few instructions. Give this form to your instructor at the end of the lab.
When you are done, exit the simulator and log out of the Linux workstation.