📄 base.asm
字号:
; 87 | if (!(Switchin_buf & j)) pDI->state = 1;
;----------------------------------------------------------------------
ldp @CL2,DP
ldiu @CL2,ar1 ; |87|
tstb3 *ar1,rc ; |87|
bne L4 ; |87|
;* Branch Occurs to L4 ; |87|
ldiu 1,r0 ; |87|
sti r0,*+ar0(65) ; |87|
L4:
.line 16
;----------------------------------------------------------------------
; 88 | pDI++;
;----------------------------------------------------------------------
addi 68,ar0 ; |88| Unsigned
.line 13
addi 1,r4 ; |85| Unsigned
ash 1,rc ; |85|
cmpi 32,r4 ; |85|
blo L2 ; |85|
;* Branch Occurs to L2 ; |85|
L5:
.line 19
;----------------------------------------------------------------------
; 91 | *pDOPORT = Switchout_buf; //开出初始化
;----------------------------------------------------------------------
ldp @CL6,DP
ldiu @CL6,ar1 ; |91|
ldp @CL7,DP
ldiu @CL7,ar0 ; |91|
ldiu *ar1,ar1 ; |91|
ldiu *ar0,r0 ; |91|
sti r0,*ar1 ; |91|
.line 20
;----------------------------------------------------------------------
; 92 | *pCTRLPORT = CtrlOutBuf; //控制口初始化
; 94 | //脉冲计数初始化
;----------------------------------------------------------------------
ldp @CL8,DP
ldiu @CL8,ar1 ; |92|
ldp @CL9,DP
ldiu @CL9,ar0 ; |92|
ldiu *ar1,ar1 ; |92|
ldiu *ar0,r0 ; |92|
sti r0,*ar1 ; |92|
.line 23
;----------------------------------------------------------------------
; 95 | DS1302BurstRead(0xff, ByteData, 4*PULSENUM); //从DS1302中读出脉冲数
;----------------------------------------------------------------------
ldiu 16,r3 ; |95|
ldp @CL10,DP
ldiu 255,r2 ; |95|
ldiu @CL10,r1 ; |95|
ldiu fp,r0 ; |95|
push r3 ; |95|
addi 2,r0 ; |95|
push r0 ; |95|
push r2 ; |95|
callu r1 ; far call to _DS1302BurstRead ; |95|
; |95| Far Call Occurs
subi 3,sp ; |95|
.line 24
;----------------------------------------------------------------------
; 96 | pByte = ByteData;
;----------------------------------------------------------------------
ldiu fp,ar0 ; |96|
addi 2,ar0 ; |96|
.line 25
;----------------------------------------------------------------------
; 97 | pWord = PulseCounter;
;----------------------------------------------------------------------
ldp @CL11,DP
ldiu @CL11,ar1 ; |97|
.line 26
;----------------------------------------------------------------------
; 98 | for (i = 0; i < PULSENUM; i++) //将8位数组合为32位数
;----------------------------------------------------------------------
ldiu 0,r4 ; |98|
cmpi 4,r4 ; |98|
ldiu 255,rc ; |100|
bhsd L7 ; |98|
ldiu 255,rs ; |100|
ldiu 255,r1 ; |100|
ldiu 255,r3 ; |100|
;* Branch Occurs to L7 ; |98|
L6:
.line 28
;----------------------------------------------------------------------
; 100 | *pWord++ = (*pByte++ & 0xff) | (*pByte++ & 0xff) << 8 | (*pByte++ & 0xf
; | f) << 16
; 101 | | (*pByte++ & 0xff) << 24;
; 104 | //报告存储地址初始化:序号为0xffff,或序号最小者。
;----------------------------------------------------------------------
and3 rc,*ar0++(1),bk ; |100|
and3 rs,*ar0++(1),re ; |100|
and3 r3,*ar0++(1),r0 ; |100|
ash 8,re ; |100|
and3 r1,*ar0++(1),r2 ; |100|
or3 bk,re,re ; |100|
ash 16,r0 ; |100|
ash 24,r2 ; |100|
or3 re,r0,r0 ; |100|
or3 r0,r2,r0 ; |100|
sti r0,*ar1++(1) ; |100|
.line 26
addi 1,r4 ; |98| Unsigned
cmpi 4,r4 ; |98|
blo L6 ; |98|
;* Branch Occurs to L6 ; |98|
L7:
.line 33
;----------------------------------------------------------------------
; 105 | pEEP1 = uReportEEP; //指向报告存储首地址
;----------------------------------------------------------------------
ldp @CL12,DP
ldiu @CL12,ar0 ; |105|
.line 34
;----------------------------------------------------------------------
; 106 | j = 0xffff; //序号设为最大
;----------------------------------------------------------------------
ldp @CL13,DP
ldiu @CL13,rc ; |106|
.line 35
;----------------------------------------------------------------------
; 107 | for (i = 0; i < EEP_REPORTNUM; i++) //逐个检查报告区
;----------------------------------------------------------------------
ldiu 0,r4 ; |107|
cmpi 64,r4 ; |107|
bhs L13 ; |107|
;* Branch Occurs to L13 ; |107|
L8:
.line 37
;----------------------------------------------------------------------
; 109 | k = ((pEEP1->uReportEEPNumH & 0xff) << 8) | (pEEP1->uReportEEPNumL & 0x
; | ff);
;----------------------------------------------------------------------
ldiu 255,r0 ; |109|
ldiu 255,r1 ; |109|
and *+ar0(1),r0 ; |109|
and3 r1,*ar0,r1 ; |109|
ash 8,r0 ; |109|
or3 r0,r1,r0 ; |109|
.line 39
;----------------------------------------------------------------------
; 111 | if (k == 0xffff) //序号为0xffff,说明该区为空,可以使用
;----------------------------------------------------------------------
ldp @CL13,DP
cmpi @CL13,r0 ; |111|
bne L10 ; |111|
;* Branch Occurs to L10 ; |111|
.line 41
;----------------------------------------------------------------------
; 113 | pEEP_REPORT = pEEP1; //pEEP_REPORT指向可使用区
;----------------------------------------------------------------------
ldp @CL14,DP
ldiu @CL14,ar1 ; |113|
sti ar0,*ar1 ; |113|
.line 42
;----------------------------------------------------------------------
; 114 | break;
;----------------------------------------------------------------------
bu L13 ; |114|
;* Branch Occurs to L13 ; |114|
L10:
.line 45
;----------------------------------------------------------------------
; 117 | if (j > k) //找到最小序号的区
;----------------------------------------------------------------------
cmpi3 r0,rc ; |117|
bls L12 ; |117|
;* Branch Occurs to L12 ; |117|
.line 47
;----------------------------------------------------------------------
; 119 | j = k;
;----------------------------------------------------------------------
ldiu r0,rc ; |119|
.line 48
;----------------------------------------------------------------------
; 120 | pEEP_REPORT = pEEP1; //pEEP_REPORT指向最小序号的区即最老的区
;----------------------------------------------------------------------
ldp @CL14,DP
ldiu @CL14,ar1 ; |120|
sti ar0,*ar1 ; |120|
L12:
.line 51
;----------------------------------------------------------------------
; 123 | pEEP1++;
;----------------------------------------------------------------------
addi 276,ar0 ; |123| Unsigned
.line 35
addi 1,r4 ; |107| Unsigned
cmpi 64,r4 ; |107|
blo L8 ; |107|
;* Branch Occurs to L8 ; |107|
L13:
.line 54
;----------------------------------------------------------------------
; 126 | pEEP1 = pEEP_REPORT; //根据上一区的序号定本区的序号
;----------------------------------------------------------------------
ldp @CL14,DP
ldiu @CL14,ar0 ; |126|
ldiu *ar0,ar0 ; |126|
.line 55
;----------------------------------------------------------------------
; 127 | if (--pEEP1 < uReportEEP) pEEP1 = &uReportEEP[EEP_REPORTNUM - 1];
; | //pEEP1指向上一区
;----------------------------------------------------------------------
ldp @CL12,DP
subi 276,ar0 ; |127| Unsigned
cmpi @CL12,ar0 ; |127|
bhs L15 ; |127|
;* Branch Occurs to L15 ; |127|
ldp @CL15,DP
ldiu @CL15,ar0 ; |127|
L15:
.line 56
;----------------------------------------------------------------------
; 128 | k = ((pEEP1->uReportEEPNumH & 0xff) << 8) | (pEEP1->uReportEEPNumL & 0x
; | ff); //读上一区序号
;----------------------------------------------------------------------
ldiu 255,r0 ; |128|
ldiu 255,r1 ; |128|
and *+ar0(1),r0 ; |128|
and3 r1,*ar0,r1 ; |128|
ash 8,r0 ; |128|
or3 r0,r1,r0 ; |128|
.line 57
;----------------------------------------------------------------------
; 129 | uReportNum = (k == 0xffff ? 0 : k);
; | //k=0xffff,则序号为零,否则为上一次序号
; 131 | //设置初始化
;----------------------------------------------------------------------
ldp @CL13,DP
cmpi @CL13,r0 ; |129|
bne L17 ; |129|
;* Branch Occurs to L17 ; |129|
bud L18 ; |129|
nop
nop
ldiu 0,r0 ; |129|
;* Branch Occurs to L18 ; |129|
L17:
L18:
ldp @CL16,DP
ldiu @CL16,ar0 ; |129|
sti r0,*ar0 ; |129|
.line 60
;----------------------------------------------------------------------
; 132 | subAddress_backup = LoadUSET((UNSIGNED *)&uSubAddressEEP,(UNSIGNED *)&u
; | SubAddress);
;----------------------------------------------------------------------
ldp @CL18,DP
ldiu @CL18,r2 ; |132|
ldp @CL19,DP
ldiu @CL19,r0 ; |132|
ldp @CL20,DP
push r2 ; |132|
ldiu @CL20,r1 ; |132|
push r0 ; |132|
callu r1 ; far call to _LoadUSET ; |132|
; |132| Far Call Occurs
ldp @CL17,DP
ldiu @CL17,ar0 ; |132|
sti r0,*ar0 ; |132|
subi 2,sp ; |132|
.line 61
;----------------------------------------------------------------------
; 133 | password_backup = LoadUSET((UNSIGNED *)&uPasswordEEP,(UNSIGNED *)&uPass
; | word);
;----------------------------------------------------------------------
ldp @CL22,DP
ldiu @CL22,r2 ; |133|
ldp @CL23,DP
ldiu @CL23,r0 ; |133|
ldp @CL20,DP
push r2 ; |133|
ldiu @CL20,r1 ; |133|
push r0 ; |133|
callu r1 ; far call to _LoadUSET ; |133|
; |133| Far Call Occurs
ldp @CL21,DP
ldiu @CL21,ar0 ; |133|
sti r0,*ar0 ; |133|
subi 2,sp ; |133|
.line 62
;----------------------------------------------------------------------
; 134 | iLONC_SetZoneNum = LoadUSET((UNSIGNED *)&uSetZoneEEP,(UNSIGNED *)&uSetZ
; | one);
;----------------------------------------------------------------------
ldp @CL25,DP
ldiu @CL25,r2 ; |134|
ldp @CL26,DP
ldiu @CL26,r0 ; |134|
push r2 ; |134|
ldp @CL20,DP
push r0 ; |134|
ldiu @CL20,r1 ; |134|
callu r1 ; far call to _LoadUSET ; |134|
; |134| Far Call Occurs
ldp @CL24,DP
ldiu @CL24,ar0 ; |134|
subi 2,sp ; |134|
sti r0,*ar0 ; |134|
.line 63
;----------------------------------------------------------------------
; 135 | CT_backup = LoadUSET((UNSIGNED *)&uCTRateEEP,(UNSIGNED *)&uCTRate);
;----------------------------------------------------------------------
ldp @CL28,DP
ldiu @CL28,r2 ; |135|
ldp @CL29,DP
ldiu @CL29,r0 ; |135|
push r2 ; |135|
ldp @CL20,DP
push r0 ; |135|
ldiu @CL20,r1 ; |135|
callu r1 ; far call to _LoadUSET ; |135|
; |135| Far Call Occurs
ldp @CL27,DP
ldiu @CL27,ar0 ; |135|
subi 2,sp ; |135|
sti r0,*ar0 ; |135|
.line 64
;----------------------------------------------------------------------
; 136 | PT_backup = LoadUSET((UNSIGNED *)&uPTRateEEP,(UNSIGNED *)&uPTRate);
;----------------------------------------------------------------------
ldp @CL31,DP
ldiu @CL31,r2 ; |136|
ldp @CL32,DP
ldiu @CL32,r1 ; |136|
push r2 ; |136|
ldp @CL20,DP
push r1 ; |136|
ldiu @CL20,r0 ; |136|
callu r0 ; far call to _LoadUSET ; |136|
; |136| Far Call Occurs
ldp @CL30,DP
ldiu @CL30,ar0 ; |136|
subi 2,sp ; |136|
sti r0,*ar0 ; |136|
.line 66
;----------------------------------------------------------------------
; 138 | pByte = uJumperEEP; //指向存储压板EEP的指针
;----------------------------------------------------------------------
ldp @CL33,DP
ldiu @CL33,ar0 ; |138|
.line 67
;----------------------------------------------------------------------
; 139 | protect = PRO_Created_Protect_List;
;----------------------------------------------------------------------
ldp @CL34,DP
ldiu @CL34,ar1 ; |139|
ldiu *ar1,ar4 ; |139|
.line 68
;----------------------------------------------------------------------
; 140 | for (i = 0; i < PRO_Total_Protect; i++, protect = protect->pro_link_nex
; | t)
;----------------------------------------------------------------------
ldiu 0,r4 ; |140|
ldp @CL35,DP
ldiu @CL35,ar1 ; |140|
cmpi3 *ar1,r4 ; |140|
ldiu 255,r1 ; |142|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -