;*********************************** CTEST MACRO REPT 4095 SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ ENDM ENDM ;*********************************** CSEG AT 0x0000 CODE_START: CTEST SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ CODE_END: END
A51 MACRO ASSEMBLER CTEST 05/24/2004 15:16:34 PAGE 1 MACRO ASSEMBLER A51 V7.04 OBJECT MODULE PLACED IN CTEST.OBJ ASSEMBLER INVOKED BY: C:\KEIL\C51\BIN\A51.EXE CTEST.asm SET(SMALL) DEBUG EP LOC OBJ LINE SOURCE 1 ;*********************************** 2 CTEST MACRO 3 REPT 4095 4 SJMP $ 5 SJMP $ 6 SJMP $ 7 SJMP $ 8 SJMP $ 9 SJMP $ 10 SJMP $ 11 SJMP $ 12 ENDM 13 ENDM 14 ;*********************************** 15 ---- 16 CSEG AT 0x0000 0000 17 CODE_START: 18 CTEST FFF0 80FE 32789 SJMP $ FFF2 80FE 32790 SJMP $ FFF4 80FE 32791 SJMP $ FFF6 80FE 32792 SJMP $ FFF8 80FE 32793 SJMP $ FFFA 80FE 32794 SJMP $ FFFC 80FE 32795 SJMP $ FFFE 80FE 32796 SJMP $ 0000 32797 CODE_END: 32798 END
BL51 BANKED LINKER/LOCATER V5.02 05/24/2004 15:16:35 PAGE 1 BL51 BANKED LINKER/LOCATER V5.02, INVOKED BY: C:\KEIL\C51\BIN\BL51.EXE CTEST.obj TO CODE_TEST RAMSIZE (256) INPUT MODULES INCLUDED: CTEST.obj (CTEST) LINK MAP OF MODULE: CODE_TEST (CTEST) TYPE BASE LENGTH RELOCATION SEGMENT NAME ----------------------------------------------------- * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" * * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0000H ABSOLUTE
Code from absolute segments is not counted by BL51 since this is untypically. You should use relocateable segments. See the file Keil\C51\ASM\Template.A51.
The way the code was written is uncommon. It was meant to be "pre-loaded" to the emulator in trying to catch an elusive bug. However, your reasoning for this problem with BL51, i.e., absolute segment vs. relocatable segment, is not convincing, or perhaps I don't understand your explanation well. Are you telling me that this will work right?
;*********************************** CTEST MACRO REPT 4095 SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ ENDM ENDM ;*********************************** ; CSEG AT 0x0000 TEST_CODE SEGMENT CODE RSEG TEST_CODE CODE_START: CTEST SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ SJMP $ CODE_END: END