EE 308 -- LAB 02
Assembly Language Programming
Introduction and Objectives
The purpose of this lab is to write a few assembly language
programs and test them on your EVBU.
Pre-Lab
Most of these programs have been given as homework. Make sure you have
the programs clearly thought out and written down before you come to
lab. You should put all your code starting at memory location 0x0100.
You are encouraged to bring the programs in on disk.
The Lab
-
Test your program that increments memory location 0x1004 indefinitely.
Report what happens to port B when you run this program on the simulator.
Check that the port B lines are being asserted on your EVBU. (Use a logic
probe to verify that the Port B lines are toggling.)
-
Test your program which fills memory locations from 0x0180
to 0x01FF with an alternating pattern 0x00
and 0xFF. Check that your program works both on the simulator and
the EVBU. Use the BUFFALO BF (Bulk Fill) command to change the EVBU
RAM that is not being used by your program to 0xAA before
running your program.
-
Test your program to move all data in locations 0xE000 ---
0xE07F to locations 0x0180 --- 0x01FF. It is
inconvenient to check this program on the simulator. Why? Does the
simulator have a BF command that you could use to get around
the problem? Check your program on your EVBU.
-
Test your program that puts the greatest one-byte 2's complement
number from memory locations 0xE000 through 0xE01F in
accumulator A and memory location 0x0000.
Does it make sense to do this on the simulator?
The answer I got is 0x7E.
-
Test your program that puts the greatest unsigned number from memory
locations 0xE000 through 0xE01F in accumulator A and
memory location 0x0001. The answer I got is 0xE3.
-
Test your program that counts the number of negative numbers in the
memory locations 0xE000 through 0xFE77 and stores the result
in memory starting at location 0x0002. The answer I got is
0x0B4A.
Loading Programs into EEPROM
You can load programs into the on-chip EEPROM. When loaded in EEPROM
your program will remain on your HC11 even after turning off power.
Before loading your program into EEPROM, you must re-assemble it
after instructing the assembler to start your code at address
0xB600.
The details of how to download your program into EEPROM are given in
the Universal Evaluation Board User's Manual in Section 4.4.2.
Basically, you will use BUFFALO to change the baud rate
of the HC11 to 300 baud; then you will change the baud rate of your
Windows Terminal to 300 baud, and download your program
to the HC11. After your program is downloaded, you can change the
baud rate of your Terminal back to 9600, and reset or power
cycle your HC11 to restore 9600 baud communicatons. (Make sure
BUFFALO confirms that your program has been downloaded before you
reset your HC11.)
After the code is in the EEPROM, you can run
it in one of two ways -- 1) From BUFFALO, set the program
counter to 0xB600 and `g` (or `g B600`);
or 2) Move jumper J2 from MONITOR to EEPROM, and
reset or power-cycle the EVBU. (Note that if you run your program
using method 2), you cannot easily re-enter BUFFALO to
check the results of your program. We will use method 2 in later
labs where we won't need to re-enter BUFFALO after running
a program.)
- Load your last program (which counts the
number of negative numbers) into EEPROM. Run it by giving the g
B600 command from BUFFALO. Verify that the performance
is the same as when you ran it from RAM.
- Turn off power to
your EVBU. Turn power back on, and rerun your program by giving the
g B600 command from BUFFALO. Verify that your
program stayed in EEPROM.
Bill Rison,
<rison@ee.nmt.edu >
Fri Jan 12 1996
© 1996, New Mexico Tech