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

  1. 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.)

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.)

  1. 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.

  2. 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