📄 main.lis
字号:
00C2 0895 ret
00C4 .dbend
00C4 .dbfunc e send_ans _send_ans fV
00C4 ; chk -> R20
00C4 ; i -> R22
00C4 ; ans_num -> R10
00C4 ; star_num -> R12
00C4 ; star_flag -> R22
.even
00C4 _send_ans::
00C4 0E940000 xcall push_gset4
00C8 C22E mov R12,R18
00CA 602F mov R22,R16
00CC A884 ldd R10,y+8
00CE .dbline -1
00CE .dbline 99
00CE ; }
00CE ;
00CE ; void send_ans(unsigned char star_flag,unsigned char star_num,unsigned char ans_num)
00CE ; {
00CE .dbline 101
00CE ; unsigned char i,chk;
00CE ; chk=0xFF;
00CE 4FEF ldi R20,255
00D0 .dbline 102
00D0 ; chk=0xFF^star_flag;
00D0 8FEF ldi R24,255
00D2 90E0 ldi R25,0
00D4 462F mov R20,R22
00D6 5527 clr R21
00D8 4827 eor R20,R24
00DA 5927 eor R21,R25
00DC .dbline 103
00DC ; sendchar(star_flag);
00DC 062F mov R16,R22
00DE EADF xcall _sendchar
00E0 .dbline 104
00E0 ; chk^=0x78;
00E0 88E7 ldi R24,120
00E2 4827 eor R20,R24
00E4 .dbline 105
00E4 ; sendchar(0x78);
00E4 08E7 ldi R16,120
00E6 E6DF xcall _sendchar
00E8 .dbline 106
00E8 ; chk^=0xAB;
00E8 8BEA ldi R24,171
00EA 90E0 ldi R25,0
00EC 242E mov R2,R20
00EE 3324 clr R3
00F0 2826 eor R2,R24
00F2 3926 eor R3,R25
00F4 422D mov R20,R2
00F6 .dbline 107
00F6 ; sendchar(0xAB);
00F6 0BEA ldi R16,171
00F8 DDDF xcall _sendchar
00FA .dbline 108
00FA ; chk^=0xEF;
00FA 8FEE ldi R24,239
00FC 90E0 ldi R25,0
00FE 242E mov R2,R20
0100 3324 clr R3
0102 2826 eor R2,R24
0104 3926 eor R3,R25
0106 422D mov R20,R2
0108 .dbline 109
0108 ; sendchar(0xEF);
0108 0FEE ldi R16,239
010A D4DF xcall _sendchar
010C .dbline 110
010C ; chk^=host_id;
010C 2090D700 lds R2,_host_id
0110 4225 eor R20,R2
0112 .dbline 111
0112 ; sendchar(host_id);
0112 022D mov R16,R2
0114 CFDF xcall _sendchar
0116 .dbline 112
0116 ; chk^=guest_id;
0116 2090D600 lds R2,_guest_id
011A 4225 eor R20,R2
011C .dbline 113
011C ; sendchar(guest_id);
011C 022D mov R16,R2
011E CADF xcall _sendchar
0120 .dbline 114
0120 ; chk^=0x01;
0120 81E0 ldi R24,1
0122 4827 eor R20,R24
0124 .dbline 115
0124 ; sendchar(0x01);
0124 01E0 ldi R16,1
0126 C6DF xcall _sendchar
0128 .dbline 116
0128 ; chk^=ques_num;
0128 20900200 lds R2,_ques_num
012C 4225 eor R20,R2
012E .dbline 117
012E ; sendchar(ques_num);
012E 022D mov R16,R2
0130 C1DF xcall _sendchar
0132 .dbline 118
0132 ; for(i=star_num;i<ans_num;i++)
0132 6C2D mov R22,R12
0134 11C0 xjmp L21
0136 L18:
0136 .dbline 119
0136 .dbline 120
0136 80E0 ldi R24,<_ques
0138 90E0 ldi R25,>_ques
013A E62F mov R30,R22
013C FF27 clr R31
013E E80F add R30,R24
0140 F91F adc R31,R25
0142 0081 ldd R16,z+0
0144 B7DF xcall _sendchar
0146 .dbline 121
0146 80E0 ldi R24,<_ques
0148 90E0 ldi R25,>_ques
014A E62F mov R30,R22
014C FF27 clr R31
014E E80F add R30,R24
0150 F91F adc R31,R25
0152 2080 ldd R2,z+0
0154 4225 eor R20,R2
0156 .dbline 122
0156 L19:
0156 .dbline 118
0156 6395 inc R22
0158 L21:
0158 .dbline 118
0158 6A15 cp R22,R10
015A 68F3 brlo L18
015C .dbline 123
015C ; {
015C ; sendchar(ques[i]);
015C ; chk^=ques[i];
015C ; }
015C ; chk^=0xF0;
015C 80EF ldi R24,240
015E 90E0 ldi R25,0
0160 242E mov R2,R20
0162 3324 clr R3
0164 2826 eor R2,R24
0166 3926 eor R3,R25
0168 422D mov R20,R2
016A .dbline 124
016A ; sendchar(0xF0);
016A 00EF ldi R16,240
016C A3DF xcall _sendchar
016E .dbline 125
016E ; chk^=0x0F;
016E 8FE0 ldi R24,15
0170 4827 eor R20,R24
0172 .dbline 126
0172 ; sendchar(0x0F);
0172 0FE0 ldi R16,15
0174 9FDF xcall _sendchar
0176 .dbline 127
0176 ; sendchar(chk);
0176 042F mov R16,R20
0178 9DDF xcall _sendchar
017A .dbline -2
017A .dbline 128
017A ; }
017A L17:
017A 0E940000 xcall pop_gset4
017E .dbline 0 ; func end
017E 0895 ret
0180 .dbsym r chk 20 c
0180 .dbsym r i 22 c
0180 .dbsym r ans_num 10 c
0180 .dbsym r star_num 12 c
0180 .dbsym r star_flag 22 c
0180 .dbend
0180 .dbfunc e send_answer _send_answer fV
.even
0180 _send_answer::
0180 2197 sbiw R28,1
0182 .dbline -1
0182 .dbline 131
0182 ;
0182 ; void send_answer()
0182 ; {
0182 .dbline 133
0182 ;
0182 ; if(ques_num<38)
0182 80910200 lds R24,_ques_num
0186 8632 cpi R24,38
0188 30F4 brsh L23
018A .dbline 134
018A ; send_ans(0x12,0,ques_num);
018A 282E mov R2,R24
018C 2882 std y+0,R2
018E 2227 clr R18
0190 02E1 ldi R16,18
0192 98DF xcall _send_ans
0194 24C0 xjmp L24
0196 L23:
0196 .dbline 135
0196 ; else if(ques_num>37&&ques_num<75)
0196 85E2 ldi R24,37
0198 20900200 lds R2,_ques_num
019C 8215 cp R24,R2
019E 78F4 brsh L25
01A0 822D mov R24,R2
01A2 8B34 cpi R24,75
01A4 60F4 brsh L25
01A6 .dbline 136
01A6 ; {
01A6 .dbline 137
01A6 ; send_ans(0x12,0,37);
01A6 85E2 ldi R24,37
01A8 8883 std y+0,R24
01AA 2227 clr R18
01AC 02E1 ldi R16,18
01AE 8ADF xcall _send_ans
01B0 .dbline 138
01B0 ; send_ans(0x13,37,ques_num);
01B0 20900200 lds R2,_ques_num
01B4 2882 std y+0,R2
01B6 25E2 ldi R18,37
01B8 03E1 ldi R16,19
01BA 84DF xcall _send_ans
01BC .dbline 139
01BC ; }
01BC 10C0 xjmp L26
01BE L25:
01BE .dbline 141
01BE ; else
01BE ; {
01BE .dbline 142
01BE ; send_ans(0x12,0,37);
01BE 85E2 ldi R24,37
01C0 8883 std y+0,R24
01C2 2227 clr R18
01C4 02E1 ldi R16,18
01C6 7EDF xcall _send_ans
01C8 .dbline 143
01C8 ; send_ans(0x13,37,74);
01C8 8AE4 ldi R24,74
01CA 8883 std y+0,R24
01CC 25E2 ldi R18,37
01CE 03E1 ldi R16,19
01D0 79DF xcall _send_ans
01D2 .dbline 144
01D2 ; send_ans(0x14,74,ques_num);
01D2 20900200 lds R2,_ques_num
01D6 2882 std y+0,R2
01D8 2AE4 ldi R18,74
01DA 04E1 ldi R16,20
01DC 73DF xcall _send_ans
01DE .dbline 145
01DE ; }
01DE L26:
01DE L24:
01DE .dbline -2
01DE .dbline 146
01DE ; }
01DE L22:
01DE 2196 adiw R28,1
01E0 .dbline 0 ; func end
01E0 0895 ret
01E2 .dbend
01E2 .dbfunc e receive _receive fc
01E2 ; j -> R20
01E2 ; i -> R20
.even
01E2 _receive::
01E2 0E940000 xcall push_gset1
01E6 .dbline -1
01E6 .dbline 149
01E6 ;
01E6 ; unsigned char receive()//
01E6 ; {
01E6 L28:
01E6 .dbline 151
01E6 ; unsigned char i,j;
01E6 ; begin: if(t>18) return 0;//goto A;
01E6 82E1 ldi R24,18
01E8 2090D500 lds R2,_t
01EC 8215 cp R24,R2
01EE 10F4 brsh L29
01F0 .dbline 151
01F0 0027 clr R16
01F2 36C0 xjmp L27
01F4 L29:
01F4 .dbline 152
01F4 ; i=getchar(); //get data from RF
01F4 63DF xcall _getchar
01F6 402F mov R20,R16
01F8 .dbline 153
01F8 ; if(i==0x0f) //get the start signal
01F8 0F30 cpi R16,15
01FA A9F7 brne L28
01FC .dbline 154
01FC ; {
01FC .dbline 155
01FC ; data[0]=getchar();
01FC 5FDF xcall _getchar
01FE 00930300 sts _data,R16
0202 .dbline 156
0202 ; if(data[0]==0xf0)
0202 003F cpi R16,240
0204 81F7 brne L28
0206 .dbline 157
0206 ; {
0206 .dbline 158
0206 ; data[1]=getchar();
0206 5ADF xcall _getchar
0208 00930400 sts _data+1,R16
020C .dbline 159
020C ; if(data[1]==0xdd)
020C 0D3D cpi R16,221
020E 59F7 brne L28
0210 .dbline 160
0210 ; {
0210 .dbline 161
0210 ; data[2]=getchar();
0210 55DF xcall _getchar
0212 00930500 sts _data+2,R16
0216 .dbline 162
0216 ; if(data[2]==0xbb)
0216 0B3B cpi R16,187
0218 31F7 brne L28
021A .dbline 163
021A ; {
021A .dbline 164
021A ; data[3]=getchar();
021A 50DF xcall _getchar
021C 00930600 sts _data+3,R16
0220 .dbline 165
0220 ; if(data[3]==host_id)
0220 2090D700 lds R2,_host_id
0224 0215 cp R16,R2
0226 F9F6 brne L28
0228 .dbline 166
0228 ; {
0228 .dbline 167
0228 ; data[4]=getchar();
0228 49DF xcall _getchar
022A 00930700 sts _data+4,R16
022E .dbline 168
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -