📄 ppp.lst
字号:
05E3 8200 STD Z+0,R0
(0174) WORD length1=8; //保存单个LCP包开始位置
05E4 E088 LDI R24,0x8
05E5 E090 LDI R25,0
05E6 AF9F STD Y+63,R25
05E7 AF8E STD Y+62,R24
(0175) BYTE rej=0; //是否要发拒绝包
05E8 2744 CLR R20
(0176) BYTE nak=0; //是否要发否定包
05E9 24EE CLR R14
(0177) BYTE i=0;
05EA 2766 CLR R22
(0178) BYTE j=0;
05EB 24AA CLR R10
(0179) BYTE temp_buffer1[20]; //LCP 协商类型
(0180) WORD temp_buffer2[20]; //LCP 各个协商类型在缓冲中的位置
(0181)
(0182)
(0183) switch (InBuffer [4] ) {
05EC 90C00AAB LDS R12,0xAAB
05EE 24DD CLR R13
05EF 01C6 MOVW R24,R12
05F0 3081 CPI R24,1
05F1 E0E0 LDI R30,0
05F2 079E CPC R25,R30
05F3 F409 BNE 0x05F5
05F4 C033 RJMP 0x0628
05F5 3082 CPI R24,2
05F6 E0E0 LDI R30,0
05F7 079E CPC R25,R30
05F8 F409 BNE 0x05FA
05F9 C309 RJMP 0x0903
05FA 3083 CPI R24,3
05FB E0E0 LDI R30,0
05FC 079E CPC R25,R30
05FD F409 BNE 0x05FF
05FE C336 RJMP 0x0935
05FF 3084 CPI R24,4
0600 E0E0 LDI R30,0
0601 079E CPC R25,R30
0602 F409 BNE 0x0604
0603 C35B RJMP 0x095F
0604 3085 CPI R24,5
0605 E0E0 LDI R30,0
0606 079E CPC R25,R30
0607 F031 BEQ 0x060E
0608 3086 CPI R24,6
0609 E0E0 LDI R30,0
060A 079E CPC R25,R30
060B F409 BNE 0x060D
060C C34D RJMP 0x095A
060D C351 RJMP 0x095F
(0184)
(0185) //++++++++++++++++++++++++++++++++++++++++++++++++++++
(0186) case LCP_TERMINATE_REQUEST: //"Server Terminate-Request received"
(0187) Move (InBuffer, OutBuffer, InBuffer[7]+4);
060E 91800AAE LDS R24,0xAAE
0610 2799 CLR R25
0611 9604 ADIW R24,4
0612 8399 STD Y+1,R25
0613 8388 STD Y+0,R24
0614 EF26 LDI R18,0xF6
0615 E035 LDI R19,5
0616 EA07 LDI R16,0xA7
0617 E01A LDI R17,0xA
0618 DE47 RCALL _Move
(0188) OutBuffer [4] = LCP_TERMINATE_ACK;
0619 E086 LDI R24,6
061A 938005FA STS 0x5FA,R24
(0189) ProcPPPSend ((BYTE *)OutBuffer, OutBuffer[7] + 6);
061C 912005FD LDS R18,0x5FD
061E 5F2A SUBI R18,0xFA
061F EF06 LDI R16,0xF6
0620 E015 LDI R17,5
0621 DEB1 RCALL _ProcPPPSend
(0190) PPPStatus &= ~LinkOn;
0622 9180012B LDS R24,0x12B
0624 7D8F ANDI R24,0xDF
0625 9380012B STS 0x12B,R24
(0191) break;
0627 C337 RJMP 0x095F
(0192)
(0193) //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(0194) case LCP_CONFIG_REQUEST:
(0195) length0=InBuffer[7]-4; //LCP的数据长度
0628 91800AAE LDS R24,0xAAE
062A 2799 CLR R25
062B 9704 SBIW R24,4
062C 01FE MOVW R30,R28
062D 5CE0 SUBI R30,0xC0
062E 4FFF SBCI R31,0xFF
062F 8391 STD Z+1,R25
0630 8380 STD Z+0,R24
0631 C03B RJMP 0x066D
(0196) while(length0)
(0197) {
(0198) temp_buffer1[j]=InBuffer[length1];//读取LCP 协商类型
0632 EA87 LDI R24,0xA7
0633 E09A LDI R25,0xA
0634 ADEE LDD R30,Y+62
0635 ADFF LDD R31,Y+63
0636 0FE8 ADD R30,R24
0637 1FF9 ADC R31,R25
0638 8020 LDD R2,Z+0
0639 01CE MOVW R24,R28
063A 968A ADIW R24,0x2A
063B 2DEA MOV R30,R10
063C 27FF CLR R31
063D 0FE8 ADD R30,R24
063E 1FF9 ADC R31,R25
063F 8220 STD Z+0,R2
(0199) temp_buffer2[j]=length1; //读取LCP 各个协商类型在缓冲中的位置
0640 E082 LDI R24,2
0641 9D8A MUL R24,R10
0642 01F0 MOVW R30,R0
0643 01CE MOVW R24,R28
0644 9602 ADIW R24,2
0645 0FE8 ADD R30,R24
0646 1FF9 ADC R31,R25
0647 AC0E LDD R0,Y+62
0648 AC1F LDD R1,Y+63
0649 8211 STD Z+1,R1
064A 8200 STD Z+0,R0
(0200) length0-=InBuffer[length1+1]; //
064B EA87 LDI R24,0xA7
064C E09A LDI R25,0xA
064D 01F0 MOVW R30,R0
064E 9631 ADIW R30,1
064F 0FE8 ADD R30,R24
0650 1FF9 ADC R31,R25
0651 8020 LDD R2,Z+0
0652 2433 CLR R3
0653 01FE MOVW R30,R28
0654 5CE0 SUBI R30,0xC0
0655 4FFF SBCI R31,0xFF
0656 8000 LDD R0,Z+0
0657 8011 LDD R1,Z+1
0658 1802 SUB R0,R2
0659 0813 SBC R1,R3
065A 01FE MOVW R30,R28
065B 5CE0 SUBI R30,0xC0
065C 4FFF SBCI R31,0xFF
065D 8211 STD Z+1,R1
065E 8200 STD Z+0,R0
(0201) length1+=InBuffer[length1+1]; //
065F ADEE LDD R30,Y+62
0660 ADFF LDD R31,Y+63
0661 9631 ADIW R30,1
0662 0FE8 ADD R30,R24
0663 1FF9 ADC R31,R25
0664 8020 LDD R2,Z+0
0665 2433 CLR R3
0666 AC0E LDD R0,Y+62
0667 AC1F LDD R1,Y+63
0668 0C02 ADD R0,R2
0669 1C13 ADC R1,R3
066A AE1F STD Y+63,R1
066B AE0E STD Y+62,R0
(0202) j++;
066C 94A3 INC R10
066D 01FE MOVW R30,R28
066E 5CE0 SUBI R30,0xC0
066F 4FFF SBCI R31,0xFF
0670 8000 LDD R0,Z+0
0671 8011 LDD R1,Z+1
0672 2000 TST R0
0673 F009 BEQ 0x0675
0674 CFBD RJMP 0x0632
0675 2011 TST R1
0676 F009 BEQ 0x0678
0677 CFBA RJMP 0x0632
(0203) }//end of while(length0)
(0204) Move (InBuffer, OutBuffer, 8);
0678 E088 LDI R24,0x8
0679 E090 LDI R25,0
067A 8399 STD Y+1,R25
067B 8388 STD Y+0,R24
067C EF26 LDI R18,0xF6
067D E035 LDI R19,5
067E EA07 LDI R16,0xA7
067F E01A LDI R17,0xA
0680 DDDF RCALL _Move
(0205) length1=8;
0681 E088 LDI R24,0x8
0682 E090 LDI R25,0
0683 AF9F STD Y+63,R25
0684 AF8E STD Y+62,R24
(0206) OutBuffer[7]=4;
0685 E084 LDI R24,4
0686 938005FD STS 0x5FD,R24
(0207) for(i=0;i<j;i++)
0688 2766 CLR R22
0689 C067 RJMP 0x06F1
(0208) {
(0209) if(!((temp_buffer1[i]==LCP_OPT_MRU)
068A 01CE MOVW R24,R28
068B 968A ADIW R24,0x2A
068C 2FE6 MOV R30,R22
068D 27FF CLR R31
068E 0FE8 ADD R30,R24
068F 1FF9 ADC R31,R25
0690 8020 LDD R2,Z+0
0691 2433 CLR R3
0692 2D82 MOV R24,R2
0693 3081 CPI R24,1
0694 F409 BNE 0x0696
0695 C05A RJMP 0x06F0
0696 3082 CPI R24,2
0697 F409 BNE 0x0699
0698 C057 RJMP 0x06F0
0699 3085 CPI R24,5
069A F409 BNE 0x069C
069B C054 RJMP 0x06F0
(0210) ||(temp_buffer1[i]==LCP_OPT_ASYNC_MAP)
(0211) ||(temp_buffer1[i]==LCP_OPT_MAGIC)))
(0212) {
(0213) Move (&InBuffer[temp_buffer2[i]],&OutBuffer[length1],InBuffer[temp_buffer2[i]+1]);
069C E082 LDI R24,2
069D 9F86 MUL R24,R22
069E 01F0 MOVW R30,R0
069F 01CE MOVW R24,R28
06A0 9602 ADIW R24,2
06A1 0FE8 ADD R30,R24
06A2 1FF9 ADC R31,R25
06A3 8020 LDD R2,Z+0
06A4 8031 LDD R3,Z+1
06A5 EA87 LDI R24,0xA7
06A6 E09A LDI R25,0xA
06A7 01F1 MOVW R30,R2
06A8 9631 ADIW R30,1
06A9 0FE8 ADD R30,R24
06AA 1FF9 ADC R31,R25
06AB 8040 LDD R4,Z+0
06AC 2455 CLR R5
06AD 8259 STD Y+1,R5
06AE 8248 STD Y+0,R4
06AF EF86 LDI R24,0xF6
06B0 E095 LDI R25,5
06B1 AD2E LDD R18,Y+62
06B2 AD3F LDD R19,Y+63
06B3 0F28 ADD R18,R24
06B4 1F39 ADC R19,R25
06B5 EA87 LDI R24,0xA7
06B6 E09A LDI R25,0xA
06B7 0181 MOVW R16,R2
06B8 0F08 ADD R16,R24
06B9 1F19 ADC R17,R25
06BA DDA5 RCALL _Move
(0214) OutBuffer[7]+=InBuffer[temp_buffer2[i]+1];
06BB E082 LDI R24,2
06BC 9F86 MUL R24,R22
06BD 01F0 MOVW R30,R0
06BE 01CE MOVW R24,R28
06BF 9602 ADIW R24,2
06C0 0FE8 ADD R30,R24
06C1 1FF9 ADC R31,R25
06C2 93AF PUSH R26
06C3 93BF PUSH R27
06C4 81A0 LDD R26,Z+0
06C5 81B1 LDD R27,Z+1
06C6 01FD MOVW R30,R26
06C7 91BF POP R27
06C8 91AF POP R26
06C9 9631 ADIW R30,1
06CA EA87 LDI R24,0xA7
06CB E09A LDI R25,0xA
06CC 0FE8 ADD R30,R24
06CD 1FF9 ADC R31,R25
06CE 8020 LDD R2,Z+0
06CF 903005FD LDS R3,0x5FD
06D1 0C32 ADD R3,R2
06D2 923005FD STS 0x5FD,R3
(0215) length1+=InBuffer[temp_buffer2[i]+1];
06D4 E082 LDI R24,2
06D5 9F86 MUL R24,R22
06D6 01F0 MOVW R30,R0
06D7 01CE MOVW R24,R28
06D8 9602 ADIW R24,2
06D9 0FE8 ADD R30,R24
06DA 1FF9 ADC R31,R25
06DB 93AF PUSH R26
06DC 93BF PUSH R27
06DD 81A0 LDD R26,Z+0
06DE 81B1 LDD R27,Z+1
06DF 01FD MOVW R30,R26
06E0 91BF POP R27
06E1 91AF POP R26
06E2 9631 ADIW R30,1
06E3 EA87 LDI R24,0xA7
06E4 E09A LDI R25,0xA
06E5 0FE8 ADD R30,R24
06E6 1FF9 ADC R31,R25
06E7 8020 LDD R2,Z+0
06E8 2433 CLR R3
06E9 AC0E LDD R0,Y+62
06EA AC1F LDD R1,Y+63
06EB 0C02 ADD R0,R2
06EC 1C13 ADC R1,R3
06ED AE1F STD Y+63,R1
06EE AE0E STD Y+62,R0
(0216) rej = 1;
06EF E041 LDI R20,1
06F0 9563 INC R22
06F1 156A CP R22,R10
06F2 F408 BCC 0x06F4
06F3 CF96 RJMP 0x068A
(0217) }//end of if((temp_buffer1[i]!=0x01)||(temp_buffer1[i]!=0x02)||(temp_buffer1[i]!=0x05))
(0218) }//end of for(i=0;i<j;i++)
(0219) if(rej == 1)
06F4 3041 CPI R20,1
06F5 F451 BNE 0x0700
(0220) {
(0221) OutBuffer [4] = LCP_CONFIG_REJECT;
06F6 E084 LDI R24,4
06F7 938005FA STS 0x5FA,R24
(0222) ProcPPPSend ((BYTE *)OutBuffer, OutBuffer[7] + 6);
06F9 912005FD LDS R18,0x5FD
06FB 5F2A SUBI R18,0xFA
06FC EF06 LDI R16,0xF6
06FD E015 LDI R17,5
06FE DDD4 RCALL _ProcPPPSend
(0223) return;
06FF C25F RJMP 0x095F
(0224) }//end of if(rej == 1)
(0225)
(0226) for(i=0;i<j;i++)
0700 2766 CLR R22
0701 C139 RJMP 0x083B
(0227) {
(0228) if(temp_buffer1[i]==LCP_OPT_MRU)
0702 01CE MOVW R24,R28
0703 968A ADIW R24,0x2A
0704 2FE6 MOV R30,R22
0705 27FF CLR R31
0706 0FE8 ADD R30,R24
0707 1FF9 ADC R31,R25
0708 8180 LDD R24,Z+0
0709 3081 CPI R24,1
070A F009 BEQ 0x070C
070B C08C RJMP 0x0798
(0229) {
(0230)
(0231) if(((((WORD)InBuffer[temp_buffer2[i]+2])<<8)+InBuffer [temp_buffer2[i]+3])>MRU)
070C E082 LDI R24,2
070D 9F86 MUL R24,R22
070E 01F0 MOVW R30,R0
070F 01CE MOVW R24,R28
0710 9602 ADIW R24,2
0711 0FE8 ADD R30,R24
0712 1FF9 ADC R31,R25
0713 8020 LDD R2,Z+0
0714 8031 LDD R3,Z+1
0715 EA87 LDI R24,0xA7
0716 E09A LDI R25,0xA
0717 01F1 MOVW R30,R2
0718 9633 ADIW R30,3
0719 0FE8 ADD R30,R24
071A 1FF9 ADC R31,R25
071B 8040 LDD R4,Z+0
071C 01F1 MOVW R30,R2
071D 9632 ADIW R30,2
071E 0FE8 ADD R30,R24
071F 1FF9 ADC R31,R25
0720 8020 LDD R2,Z+0
0721 2C32 MOV R3,R2
0722 2C24 MOV R2,R4
0723 9040012F LDS R4,0x12F
0725 90500130 LDS R5,0x130
0727 1442 CP R4,R2
0728 0453 CPC R5,R3
0729 F008 BCS 0x072B
072A C06D RJMP 0x0798
(0232) {
(0233) Move (&InBuffer[temp_buffer2[i]],&OutBuffer[length1],InBuffer[temp_buffer2[i]+1]);
072B E082 LDI R24,2
072C 9F86 MUL R24,R22
072D 01F0 MOVW R30,R0
072E 01CE MOVW R24,R28
072F 9602 ADIW R24,2
0730 0FE8 ADD R30,R24
0731 1FF9 ADC R31,R25
0732 8020 LDD R2,Z+0
0733 8031 LDD R3,Z+1
0734 EA87 LDI R24,0xA7
0735 E09A LDI R25,0xA
0736 01F1 MOVW R30,R2
0737 9631 ADIW R30,1
0738 0FE8 ADD R30,R24
0739 1FF9 ADC R31,R25
073A 8040 LDD R4,Z+0
073B 2455 CLR R5
073C 8259 STD Y+1,R5
073D 8248 STD Y+0,R4
073E EF86 LDI R24,0xF6
073F E095 LDI R25,5
0740 AD2E LDD R18,Y+62
0741 AD3F LDD R19,Y+63
0742 0F28 ADD R18,R24
0743 1F39 ADC R19,R25
0744 EA87 LDI R24,0xA7
0745 E09A LDI R25,0xA
0746 0181 MOVW R16,R2
0747 0F08 ADD R16,R24
0748 1F19 ADC R17,R25
0749 DD16 RCALL _Move
(0234) OutBuffer[7]+=InBuffer[temp_buffer2[i]+1];
074A E082 LDI R24,2
074B 9F86 MUL R24,R22
074C 01F0 MOVW R30,R0
074D 01CE MOVW R24,R28
074E 9602 ADIW R24,2
074F 0FE8 ADD R30,R24
0750 1FF9 ADC R31,R25
0751 93AF PUSH R26
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -