📄 saddr.lst
字号:
\ 000061 ; Setup parameters for call to function sAddrExtCmp
\ 000061 90.... MOV DPTR,#(sAddrExtCmp & 0xffff)
\ 000064 74.. MOV A,#((sAddrExtCmp >> 16) & 0xff)
\ 000066 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ ??sAddrCmp_2:
\ 000069 REQUIRE ?Subroutine0
\ 000069 ; // Fall through to label ?Subroutine0
56 }
57 else
58 {
59 return FALSE;
60 }
61 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 7F01 MOV R7,#0x1
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
62
63 /****************************************************************************
64 * @fn sAddrCpy
65 *
66 * @brief Copy a device address.
67 *
68 * input parameters
69 *
70 * @param pSrc - Pointer to address to copy.
71 *
72 * output parameters
73 *
74 * @param pDest - Pointer to address of copy.
75 *
76 * @return None.
77 */
\ In segment BANKED_CODE, align 1, keep-with-next
78 void sAddrCpy(sAddr_t *pDest, const sAddr_t *pSrc)
\ sAddrCpy:
79 {
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
80 pDest->addrMode = pSrc->addrMode;
\ 000005 8C82 MOV DPL,R4
\ 000007 8D83 MOV DPH,R5
\ 000009 A3 INC DPTR
\ 00000A A3 INC DPTR
\ 00000B A3 INC DPTR
\ 00000C A3 INC DPTR
\ 00000D A3 INC DPTR
\ 00000E A3 INC DPTR
\ 00000F A3 INC DPTR
\ 000010 A3 INC DPTR
\ 000011 E0 MOVX A,@DPTR
\ 000012 FE MOV R6,A
\ 000013 8A82 MOV DPL,R2
\ 000015 8B83 MOV DPH,R3
\ 000017 A3 INC DPTR
\ 000018 A3 INC DPTR
\ 000019 A3 INC DPTR
\ 00001A A3 INC DPTR
\ 00001B A3 INC DPTR
\ 00001C A3 INC DPTR
\ 00001D A3 INC DPTR
\ 00001E A3 INC DPTR
\ 00001F F0 MOVX @DPTR,A
81
82 if (pDest->addrMode == SADDR_MODE_SHORT)
\ 000020 7402 MOV A,#0x2
\ 000022 6E XRL A,R6
\ 000023 7014 JNZ ??sAddrCpy_0
83 {
84 pDest->addr.shortAddr = pSrc->addr.shortAddr;
\ 000025 8C82 MOV DPL,R4
\ 000027 8D83 MOV DPH,R5
\ 000029 E0 MOVX A,@DPTR
\ 00002A F8 MOV R0,A
\ 00002B A3 INC DPTR
\ 00002C E0 MOVX A,@DPTR
\ 00002D F9 MOV R1,A
\ 00002E 8A82 MOV DPL,R2
\ 000030 8B83 MOV DPH,R3
\ 000032 E8 MOV A,R0
\ 000033 F0 MOVX @DPTR,A
\ 000034 A3 INC DPTR
\ 000035 E9 MOV A,R1
\ 000036 F0 MOVX @DPTR,A
\ 000037 8019 SJMP ??sAddrCpy_1
85 }
86 else if (pDest->addrMode == SADDR_MODE_EXT)
\ ??sAddrCpy_0:
\ 000039 8A82 MOV DPL,R2
\ 00003B 8B83 MOV DPH,R3
\ 00003D A3 INC DPTR
\ 00003E A3 INC DPTR
\ 00003F A3 INC DPTR
\ 000040 A3 INC DPTR
\ 000041 A3 INC DPTR
\ 000042 A3 INC DPTR
\ 000043 A3 INC DPTR
\ 000044 A3 INC DPTR
\ 000045 E0 MOVX A,@DPTR
\ 000046 6403 XRL A,#0x3
\ 000048 7008 JNZ ??sAddrCpy_1
87 {
88 sAddrExtCpy(pDest->addr.extAddr, pSrc->addr.extAddr);
\ 00004A ; Setup parameters for call to function sAddrExtCpy
\ 00004A 90.... MOV DPTR,#(sAddrExtCpy & 0xffff)
\ 00004D 74.. MOV A,#((sAddrExtCpy >> 16) & 0xff)
\ 00004F 12.... LCALL ?BCALL ; Banked call to: DPTR()
89 }
90 }
\ ??sAddrCpy_1:
\ 000052 80.. SJMP ?Subroutine0
91
92 /****************************************************************************
93 * @fn sAddrExtCmp
94 *
95 * @brief Compare two extended addresses.
96 *
97 * input parameters
98 *
99 * @param pAddr1 - Pointer to first address.
100 * @param pAddr2 - Pointer to second address.
101 *
102 * output parameters
103 *
104 * @return TRUE if addresses are equal, FALSE otherwise
105 */
\ In segment BANKED_CODE, align 1, keep-with-next
106 bool sAddrExtCmp(const uint8 * pAddr1, const uint8 * pAddr2)
\ sAddrExtCmp:
107 {
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 0
108 byte i;
109
110 for (i = SADDR_EXT_LEN; i != 0; i--)
\ 000005 75..08 MOV ?V0 + 0,#0x8
111 {
112 if (*pAddr1++ != *pAddr2++)
\ ??sAddrExtCmp_0:
\ 000008 EA MOV A,R2
\ 000009 F8 MOV R0,A
\ 00000A EB MOV A,R3
\ 00000B F9 MOV R1,A
\ 00000C 8882 MOV DPL,R0
\ 00000E 8983 MOV DPH,R1
\ 000010 A3 INC DPTR
\ 000011 AA82 MOV R2,DPL
\ 000013 AB83 MOV R3,DPH
\ 000015 EC MOV A,R4
\ 000016 FE MOV R6,A
\ 000017 ED MOV A,R5
\ 000018 FF MOV R7,A
\ 000019 8E82 MOV DPL,R6
\ 00001B 8F83 MOV DPH,R7
\ 00001D A3 INC DPTR
\ 00001E AC82 MOV R4,DPL
\ 000020 AD83 MOV R5,DPH
\ 000022 8882 MOV DPL,R0
\ 000024 8983 MOV DPH,R1
\ 000026 E0 MOVX A,@DPTR
\ 000027 F8 MOV R0,A
\ 000028 8E82 MOV DPL,R6
\ 00002A 8F83 MOV DPH,R7
\ 00002C E0 MOVX A,@DPTR
\ 00002D 68 XRL A,R0
\ 00002E 6004 JZ ??sAddrExtCmp_1
113 {
114 return FALSE;
\ 000030 7900 MOV R1,#0x0
\ 000032 8008 SJMP ??sAddrExtCmp_2
115 }
116 }
\ ??sAddrExtCmp_1:
\ 000034 15.. DEC ?V0 + 0
\ 000036 E5.. MOV A,?V0 + 0
\ 000038 70CE JNZ ??sAddrExtCmp_0
117 return TRUE;
\ 00003A 7901 MOV R1,#0x1
\ ??sAddrExtCmp_2:
\ 00003C 7F02 MOV R7,#0x2
\ 00003E 02.... LJMP ?BANKED_LEAVE_XDATA
118 }
119
120 /****************************************************************************
121 * @fn sAddrExtCpy
122 *
123 * @brief Copy an extended address.
124 *
125 * input parameters
126 *
127 * @param pSrc - Pointer to address to copy.
128 *
129 * output parameters
130 *
131 * @param pDest - Pointer to address of copy.
132 *
133 * @return pDest + SADDR_EXT_LEN.
134 */
\ In segment BANKED_CODE, align 1, keep-with-next
135 void *sAddrExtCpy(uint8 * pDest, const uint8 * pSrc)
\ sAddrExtCpy:
136 {
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 0
137 return osal_memcpy(pDest, pSrc, SADDR_EXT_LEN);
\ 000005 ; Setup parameters for call to function osal_memcpy
\ 000005 8C.. MOV ?V0 + 0,R4
\ 000007 8D.. MOV ?V0 + 1,R5
\ 000009 75..00 MOV ?V0 + 2,#0x0
\ 00000C 78.. MOV R0,#?V0 + 0
\ 00000E 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 000011 7C08 MOV R4,#0x8
\ 000013 7D00 MOV R5,#0x0
\ 000015 90.... MOV DPTR,#(osal_memcpy & 0xffff)
\ 000018 74.. MOV A,#((osal_memcpy >> 16) & 0xff)
\ 00001A 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00001D 7403 MOV A,#0x3
\ 00001F 12.... LCALL ?DEALLOC_XSTACK8
\ 000022 7F03 MOV R7,#0x3
\ 000024 02.... LJMP ?BANKED_LEAVE_XDATA
138 }
139
140
141
142
Maximum stack usage in bytes:
Function ISTACK PSTACK XSTACK
-------- ------ ------ ------
sAddrCmp 0 0 9
-> sAddrExtCmp 0 0 18
sAddrCpy 1 0 9
-> sAddrExtCpy 0 0 18
sAddrExtCmp 0 0 19
sAddrExtCpy 0 0 23
-> osal_memcpy 0 0 28
Segment part sizes:
Function/Label Bytes
-------------- -----
sAddrCmp 105
?Subroutine0 5
sAddrCpy 84
sAddrExtCmp 65
sAddrExtCpy 39
298 bytes in segment BANKED_CODE
298 bytes of CODE memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -