Keil™, An ARM® Company

Cx51 User's Guide

Interfacing C to Assembler

You can easily interface your programs to routines written in 8051 Assembler. The A51 Assembler is an 8051 macro assembler that emits object modules in OMF51 format. By observing a few programming rules, you can call assembly routines from C and vice versa. Public variables declared in the assembly module are available for your C programs.

There are several reasons to call an assembly routine from your C program.

  • You have assembly code already written that you wish to use.
  • You need to improve the speed of a particular function.
  • You want to manipulate SFRs or memory-mapped I/O devices directly from assembly.

This topic describes how to write assembly routines that can be directly interfaced to C programs.

For an assembly routine to be called from C, it must be aware of the parameter passing and return value conventions used in C functions. For all practical purposes, it must appear to be a C function.