Keil Logo


Information in this article applies to:

  • C51 Version 5.50 or higher


I am using an 8051 derivative that does not support the AJMP and ACALL instructions. When I build my project and examine it in the µVision Debugger, I notice that the toolchain is using AJMP instructions into the interrupt vector table.

How can I ensure that the toolset does not use any AJMP and ACALL instructions?


There are two settings that affect the generation of AJMP and ACALL instructions.

  • C51 Compiler: you need to use the default setting ROM(LARGE) to generate just LJMP and LCALL instructions from the compiler level. In µVision this is configured under Project - Options for Target - Target. Select Code ROM Size: Large 64K program.
  • Linker/Locater: use the directive NOAJMP (abbreviation NOAJ). In µVision this directive can be entered under Project - Options for Target - BL51 Misc or LX51 Misc. Enter under Misc controls: NOAJMP.


  • Refer to ROM in the Cx51 User's Guide.
  • Refer to NOAJMP in the BL51 User's Guide.
  • Refer to NOAJMP in the LX51 User's Guide.


Last Reviewed: Friday, July 15, 2005

Did this article provide the answer you needed?
Not Sure
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.