Tutorials

  1. ALU design (lab)
  2. CPU design (lab)
  3. Assembly for MC68332 (lab)
  4. C programming:
    Servo control
    (lab)
  5. Sensors and LCD ouput (lab)
  6. DC motor control (lab)
  7. Position control of differential-drive (lab)
  8. PSD, electromagnet (lab)
  9. Camera interface (lab)
  10. Image processing (lab)
  11. Final project (lab)
  12. Review

Embedded Systems 620.220

MC68332 Assembly

As stated earlier, when programming the MC68332, the program designer does not need to worry about the specific op-codes for the CPU. The programmer has a choice of programming in 'Assembly' code or in a higher level language like C. For laboratory three, you will do the first option and program the instructions in assembly code. Assembly code source files have a .s extension.

Each CPU32 instruction has the following: an operation code determining the operation to be performed, a designation of the length of the operand or operands, and specifications of the locations of any operands involved by indicating an addressing mode for each operation. For example, the instruction

ADD.W X,Y

will add two 16-bit operands, where X and Y designate the locations of the operands. Here is a simple hello.s program.

Compiling a Program

After creating an assembly source file with a text editor, the following steps are performed before the program can be executed by the CPU32. First, the assembly source code is translated by the assembler, which (if the code is free of errors) produces an object module (.o extension). Once the object module is produced, it must be further processed into a load module. For the Eyebot, the load modules have a .hex extension.

If there are many object modules to be combined into one program, a development program called a linker is required to combine the objects into a single load module.

Examples

There are some simple examples of assembly code for the MC68332 here. (Note: After following the link, click 'Controller' -> 'Example Progs' -> 'asm')

Notice at the top of the example program 'hello.s' there are the three statements

.include "eyebot.i"

.section .text

.global main

The .include statement specifies an assembly header file (like a .h file for C modules) which allows the LCD_PutString statement to be executed. The .section statement specifies the starting memory location to store the program. Finally the .global statement allows the 'main' function to be executed by the operating system. For laboratory three, make sure and include these statements at the top of your .s file.

Additional Comments

The eyebot.i assembly header file will allow a variety of commands which will be needed for laboratory three. I suggest you look at this file to see what is available.

MC68332 Op-Codes  

Questions? Email Josh Petitt

last updated February 3, 2003 - © University of Western Australia