📄 rd_adt_queue.lis
字号:
00C2 X8:
00C2 .dbline 137
00C2 .dbline 137
00C2 7894 sei
00C4 .dbline 137
00C4 0027 clr R16
00C6 17C0 rjmp L9
00C8 L13:
00C8 .dbline 137
00C8 1B01 movw R2,R22
00CA 6F5F subi R22,255 ; offset = 1
00CC 7F4F sbci R23,255
00CE F101 movw R30,R2
00D0 EE0D add R30,R14
00D2 FF1D adc R31,R15
00D4 2080 ldd R2,z+0
00D6 F901 movw R30,R18
00D8 2082 std z+0,R2
00DA .dbline 137
00DA 4150 subi R20,1
00DC 5040 sbci R21,0
00DE .dbline 137
00DE 6C15 cp R22,R12
00E0 7D05 cpc R23,R13
00E2 11F4 brne L15
00E4 X9:
00E4 .dbline 137
00E4 .dbline 137
00E4 6627 clr R22
00E6 7727 clr R23
00E8 .dbline 137
00E8 L15:
00E8 .dbline 137
00E8 F801 movw R30,R16
00EA 7583 std z+5,R23
00EC 6483 std z+4,R22
00EE .dbline 137
00EE 5187 std z+9,R21
00F0 4087 std z+8,R20
00F2 .dbline 137
00F2 .dbline 137
00F2 AFBE out 0x3f,R10
00F4 .dbline 137
00F4 .dbline 170
00F4 ; (
00F4 ; pBuffer = pQueue->pBuffer;
00F4 ; nSize = pQueue->nSize;
00F4 ;
00F4 ; if ((pBuffer == NULL) || (!nSize))
00F4 ; {
00F4 ; SEI();
00F4 ; return FALSE; //缓冲区未分配空间
00F4 ; }
00F4 ; nTail = pQueue->nTail;
00F4 ; nHead = pQueue->nHead;
00F4 ; nCount = pQueue->nCount;
00F4 ;
00F4 ;
00F4 ; if ((nTail == nHead) && (nCount == 0)) //缓冲区为空
00F4 ; {
00F4 ; SEI();
00F4 ; return FALSE;
00F4 ; }
00F4 ;
00F4 ; (*pData) = pBuffer[nHead++];
00F4 ;
00F4 ; nCount--;
00F4 ; if (nHead == nSize)
00F4 ; {
00F4 ; nHead = 0;
00F4 ; }
00F4 ;
00F4 ; pQueue->nHead = nHead;
00F4 ; pQueue->nCount = nCount;
00F4 ; )
00F4 ;
00F4 ; return TRUE;
00F4 01E0 ldi R16,1
00F6 .dbline -2
00F6 L9:
00F6 .dbline 0 ; func end
00F6 2296 adiw R28,2
00F8 00C0 rjmp pop_xgsetF0FC
00FA .dbsym r cflags0 10 c
00FA .dbsym r pBuffer 14 pc
00FA .dbsym r nHead1 22 i
00FA .dbsym r nCount0 20 i
00FA .dbsym r nHead0 22 i
00FA .dbsym l nTail0 0 i
00FA .dbsym r nSize0 12 i
00FA .dbsym r pData 18 pc
00FA .dbsym r pQueue 16 pS[AbstructDataTypeQueue]
00FA .dbend
00FA .dbfunc e ADT_Queue_Check_Empty _ADT_Queue_Check_Empty fc
00FA ; cflags0 -> R10
00FA ; pBuffer -> R12,R13
00FA ; pQueue -> R16,R17
.even
00FA _ADT_Queue_Check_Empty::
00FA 00D0 rcall push_xgset003C
00FC .dbline -1
00FC .dbline 180
00FC ; }
00FC ;
00FC ; /***********************************************************
00FC ; * 函数说明:队列判空函数 *
00FC ; * 输入: 队列指针 *
00FC ; * 输出: 队列是否为空 *
00FC ; * 调用函数:无 *
00FC ; ***********************************************************/
00FC ; BOOL ADT_Queue_Check_Empty(ADT_QUEUE *pQueue)
00FC ; {
00FC .dbline 183
00FC ; uint8 *pBuffer;
00FC ;
00FC ; SAFE_CODE_PERFORMANCE
00FC .dbline 183
00FC AFB6 in R10,0x3f
00FE .dbline 183
00FE F894 cli
0100 .dbline 183
0100 F801 movw R30,R16
0102 C080 ldd R12,z+0
0104 D180 ldd R13,z+1
0106 .dbline 183
0106 CC20 tst R12
0108 11F4 brne X10
010A DD20 tst R13
010C 31F0 breq L20
010E X10:
010E 2280 ldd R2,z+2
0110 3380 ldd R3,z+3
0112 2220 tst R2
0114 29F4 brne L18
0116 3320 tst R3
0118 19F4 brne L18
011A X11:
011A L20:
011A .dbline 183
011A .dbline 183
011A 7894 sei
011C .dbline 183
011C 01E0 ldi R16,1
011E 13C0 rjmp L17
0120 L18:
0120 .dbline 183
0120 F801 movw R30,R16
0122 2480 ldd R2,z+4
0124 3580 ldd R3,z+5
0126 4680 ldd R4,z+6
0128 5780 ldd R5,z+7
012A 4214 cp R4,R2
012C 5304 cpc R5,R3
012E 49F4 brne L21
0130 X12:
0130 2084 ldd R2,z+8
0132 3184 ldd R3,z+9
0134 2220 tst R2
0136 29F4 brne L21
0138 3320 tst R3
013A 19F4 brne L21
013C X13:
013C .dbline 183
013C .dbline 183
013C 7894 sei
013E .dbline 183
013E 01E0 ldi R16,1
0140 02C0 rjmp L17
0142 L21:
0142 .dbline 183
0142 .dbline 183
0142 AFBE out 0x3f,R10
0144 .dbline 183
0144 .dbline 202
0144 ; (
0144 ; pBuffer = pQueue->pBuffer;
0144 ;
0144 ; if ((pBuffer == NULL) || (!(pQueue->nSize)))
0144 ; {
0144 ; SEI();
0144 ; return TRUE; //缓冲区未分配空间
0144 ; }
0144 ;
0144 ;
0144 ; if (((pQueue->nTail) == (pQueue->nHead))
0144 ; && ((pQueue->nCount) == 0)) //缓冲区为空
0144 ; {
0144 ; SEI();
0144 ; return TRUE;
0144 ; }
0144 ; )
0144 ;
0144 ; return FALSE;
0144 0027 clr R16
0146 .dbline -2
0146 L17:
0146 .dbline 0 ; func end
0146 00C0 rjmp pop_xgset003C
0148 .dbsym r cflags0 10 c
0148 .dbsym r pBuffer 12 pc
0148 .dbsym r pQueue 16 pS[AbstructDataTypeQueue]
0148 .dbend
0148 .dbfunc e ADT_Queue_Peek_From_Buffer _ADT_Queue_Peek_From_Buffer fc
0148 ; cflags0 -> R10
0148 ; pBuffer -> R12,R13
0148 ; nCount0 -> R20,R21
0148 ; nHead0 -> R14,R15
0148 ; nTail0 -> R22,R23
0148 ; nSize0 -> R14,R15
0148 ; pData -> R18,R19
0148 ; pQueue -> R16,R17
.even
0148 _ADT_Queue_Peek_From_Buffer::
0148 00D0 rcall push_xgsetF0FC
014A .dbline -1
014A .dbline 212
014A ; }
014A ;
014A ; /***********************************************************
014A ; * 函数说明:队列首个数据预览函数 *
014A ; * 输入: 存放读取变量的空间指针 *
014A ; * 输出: 队列是否为空 *
014A ; * 调用函数:无 *
014A ; ***********************************************************/
014A ; BOOL ADT_Queue_Peek_From_Buffer(ADT_QUEUE *pQueue,uint8 *pData)
014A ; {
014A .dbline 219
014A ; uint8 *pBuffer;
014A ; uint nSize;
014A ; uint nTail;
014A ; uint nHead;
014A ; uint nCount;
014A ;
014A ; SAFE_CODE_PERFORMANCE //原子操作
014A .dbline 219
014A AFB6 in R10,0x3f
014C .dbline 219
014C F894 cli
014E .dbline 219
014E F801 movw R30,R16
0150 C080 ldd R12,z+0
0152 D180 ldd R13,z+1
0154 .dbline 219
0154 E280 ldd R14,z+2
0156 F380 ldd R15,z+3
0158 .dbline 219
0158 CC20 tst R12
015A 11F4 brne X14
015C DD20 tst R13
015E 21F0 breq L26
0160 X14:
0160 EE20 tst R14
0162 29F4 brne L24
0164 FF20 tst R15
0166 19F4 brne L24
0168 X15:
0168 L26:
0168 .dbline 219
0168 .dbline 219
0168 7894 sei
016A .dbline 219
016A 0027 clr R16
016C 18C0 rjmp L23
016E L24:
016E .dbline 219
016E F801 movw R30,R16
0170 6681 ldd R22,z+6
0172 7781 ldd R23,z+7
0174 .dbline 219
0174 E480 ldd R14,z+4
0176 F580 ldd R15,z+5
0178 .dbline 219
0178 4085 ldd R20,z+8
017A 5185 ldd R21,z+9
017C .dbline 219
017C 6E15 cp R22,R14
017E 7F05 cpc R23,R15
0180 31F4 brne L27
0182 X16:
0182 4030 cpi R20,0
0184 4507 cpc R20,R21
0186 19F4 brne L27
0188 X17:
0188 .dbline 219
0188 .dbline 219
0188 7894 sei
018A .dbline 219
018A 0027 clr R16
018C 08C0 rjmp L23
018E L27:
018E .dbline 219
018E F701 movw R30,R14
0190 EC0D add R30,R12
0192 FD1D adc R31,R13
0194 2080 ldd R2,z+0
0196 F901 movw R30,R18
0198 2082 std z+0,R2
019A .dbline 219
019A .dbline 219
019A AFBE out 0x3f,R10
019C .dbline 219
019C .dbline 243
019C ; (
019C ; pBuffer = pQueue->pBuffer;
019C ; nSize = pQueue->nSize;
019C ;
019C ; if ((pBuffer == NULL) || (!nSize))
019C ; {
019C ; SEI();
019C ; return FALSE; //缓冲区未分配空间
019C ; }
019C ; nTail = pQueue->nTail;
019C ; nHead = pQueue->nHead;
019C ; nCount = pQueue->nCount;
019C ;
019C ;
019C ; if ((nTail == nHead) && (nCount == 0)) //缓冲区为空
019C ; {
019C ; SEI();
019C ; return FALSE;
019C ; }
019C ;
019C ; (*pData) = pBuffer[nHead];
019C ; )
019C ;
019C ; return TRUE;
019C 01E0 ldi R16,1
019E .dbline -2
019E L23:
019E .dbline 0 ; func end
019E 00C0 rjmp pop_xgsetF0FC
01A0 .dbsym r cflags0 10 c
01A0 .dbsym r pBuffer 12 pc
01A0 .dbsym r nCount0 20 i
01A0 .dbsym r nHead0 14 i
01A0 .dbsym r nTail0 22 i
01A0 .dbsym r nSize0 14 i
01A0 .dbsym r pData 18 pc
01A0 .dbsym r pQueue 16 pS[AbstructDataTypeQueue]
01A0 .dbend
01A0 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -