In the following example,the chip is Dallas390 and the off-chip xdata starts from x:0x20000.Large model and large reentrant function stack is selected. The C language source:
unsigned char func1(unsigned char)reentrant; void main() { unsigned char i = 0; i = func1(i); } unsigned char func1(unsigned char i)reentrant { return (i); }
9: unsigned char func1(unsigned char i)reentrant 10: { C:0x000064 9000FFFF MOV DPTR,#0x00FFFF C:0x000068 110003 ACALL C?ADDXBP(C:000003) C:0x00006B EF MOV A,R7 C:0x00006C F0 MOVX @DPTR,A 11: return (i); C:0x00006D 850883 MOV DPH(0x83),0x08 C:0x000070 850982 MOV DPL(0x82),0x09 C:0x000073 759302 MOV DPX(0x93),#0x02 C:0x000076 E0 MOVX A,@DPTR C:0x000077 FF MOV R7,A 12: } C:0x000078 90000001 MOV DPTR,#0x000001 C:0x00007C 010003 AJMP C?ADDXBP(C:000003)
C?ADDXBP: C:0x000003 759302 MOV DPX(0x93),#0x02 C:0x000006 E509 MOV A,0x09 C:0x000008 2582 ADD A,DPL(0x82) C:0x00000A F582 MOV DPL(0x82),A C:0x00000C E508 MOV A,0x08 C:0x00000E 3583 ADDC A,DPH(0x83) C:0x000010 F583 MOV DPH(0x83),A C:0x000012 B50804 CJNE A,0x08,C:000019 C:0x000015 858209 MOV 0x09,DPL(0x82) C:0x000018 22 RET C:0x000019 10AF06 JBC EA(0xA8.7),C:000022 C:0x00001C 858209 MOV 0x09,DPL(0x82) C:0x00001F F508 MOV 0x08,A C:0x000021 22 RET C:0x000022 858209 MOV 0x09,DPL(0x82) C:0x000025 F508 MOV 0x08,A C:0x000027 D2AF SETB EA(0xA8.7) C:0x000029 22 RET
View all questions in Keil forum