main.lss
来自「ARP协议,含ARP」· LSS 代码 · 共 2,272 行 · 第 1/5 页
LSS
2,272 行
742: 31 e0 ldi r19, 0x01 ; 1
744: 82 9f mul r24, r18
746: a0 01 movw r20, r0
748: 83 9f mul r24, r19
74a: 50 0d add r21, r0
74c: 92 9f mul r25, r18
74e: 50 0d add r21, r0
750: 11 24 eor r1, r1
752: 4e 0d add r20, r14
754: 5f 1d adc r21, r15
p->pnext = ph;
ph = p;
}
for (p=ph; NULL!=p; p=p->pnext) {
p->len = MEM_BLK_SIZE;
756: f6 01 movw r30, r12
758: 33 83 std Z+3, r19 ; 0x03
75a: 22 83 std Z+2, r18 ; 0x02
if (NULL == p->pnext) {
75c: 80 81 ld r24, Z
75e: 91 81 ldd r25, Z+1 ; 0x01
760: 89 2b or r24, r25
762: 11 f4 brne .+4 ; 0x768 <make_list_msg+0xd2>
p->len = len - (n - 1) * MEM_BLK_SIZE;
764: 53 83 std Z+3, r21 ; 0x03
766: 42 83 std Z+2, r20 ; 0x02
}
p->pnext = ph;
ph = p;
}
for (p=ph; NULL!=p; p=p->pnext) {
768: f6 01 movw r30, r12
76a: c0 80 ld r12, Z
76c: d1 80 ldd r13, Z+1 ; 0x01
76e: c1 14 cp r12, r1
770: d1 04 cpc r13, r1
772: 89 f7 brne .-30 ; 0x756 <make_list_msg+0xc0>
if (NULL == p->pnext) {
p->len = len - (n - 1) * MEM_BLK_SIZE;
}
}
return ph;
774: 9b 01 movw r18, r22
}
776: c9 01 movw r24, r18
778: df 91 pop r29
77a: cf 91 pop r28
77c: 1f 91 pop r17
77e: 0f 91 pop r16
780: ff 90 pop r15
782: ef 90 pop r14
784: df 90 pop r13
786: cf 90 pop r12
788: 08 95 ret
0000078a <print_msg>:
void print_msg (char ch, struct _mem_block *pm) {
78a: 0f 93 push r16
78c: 1f 93 push r17
78e: cf 93 push r28
790: df 93 push r29
792: 98 2f mov r25, r24
794: 16 2f mov r17, r22
796: 07 2f mov r16, r23
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
798: 80 91 9b 00 lds r24, 0x009B
79c: 85 ff sbrs r24, 5
79e: fc cf rjmp .-8 ; 0x798 <print_msg+0xe>
UDR1 = c; /* 发送数据*/
7a0: 8d e0 ldi r24, 0x0D ; 13
7a2: 80 93 9c 00 sts 0x009C, r24
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
7a6: 80 91 9b 00 lds r24, 0x009B
7aa: 85 ff sbrs r24, 5
7ac: fc cf rjmp .-8 ; 0x7a6 <print_msg+0x1c>
UDR1 = c; /* 发送数据*/
7ae: 8a e0 ldi r24, 0x0A ; 10
7b0: 80 93 9c 00 sts 0x009C, r24
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
7b4: 80 91 9b 00 lds r24, 0x009B
7b8: 85 ff sbrs r24, 5
7ba: fc cf rjmp .-8 ; 0x7b4 <print_msg+0x2a>
UDR1 = c; /* 发送数据*/
7bc: 90 93 9c 00 sts 0x009C, r25
7c0: 81 2f mov r24, r17
7c2: 90 2f mov r25, r16
7c4: 9c 01 movw r18, r24
7c6: f9 01 movw r30, r18
7c8: 20 e0 ldi r18, 0x00 ; 0
7ca: 30 e0 ldi r19, 0x00 ; 0
7cc: 07 c0 rjmp .+14 ; 0x7dc <print_msg+0x52>
us get_msg_len (struct _mem_block *p) {
us len = 0;
while (NULL != p) {
len += p->len;
7ce: 82 81 ldd r24, Z+2 ; 0x02
7d0: 93 81 ldd r25, Z+3 ; 0x03
7d2: 28 0f add r18, r24
7d4: 39 1f adc r19, r25
p = p->pnext;
7d6: 01 90 ld r0, Z+
7d8: f0 81 ld r31, Z
7da: e0 2d mov r30, r0
}
us get_msg_len (struct _mem_block *p) {
us len = 0;
while (NULL != p) {
7dc: 30 97 sbiw r30, 0x00 ; 0
7de: b9 f7 brne .-18 ; 0x7ce <print_msg+0x44>
put_char ('\r');
put_char ('\n');
put_char (ch);
put_hex_2 (get_msg_len (pm));
7e0: c9 01 movw r24, r18
7e2: 0e 94 fa 00 call 0x1f4 ; 0x1f4 <put_hex_2>
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
7e6: 80 91 9b 00 lds r24, 0x009B
7ea: 85 ff sbrs r24, 5
7ec: fc cf rjmp .-8 ; 0x7e6 <print_msg+0x5c>
UDR1 = c; /* 发送数据*/
7ee: 8e e2 ldi r24, 0x2E ; 46
7f0: 80 93 9c 00 sts 0x009C, r24
void put_hex (uc ch) {
uc idx;
idx = (ch >> 4);
put_char (hex_char[idx]);
7f4: 60 91 11 01 lds r22, 0x0111
7f8: 70 91 12 01 lds r23, 0x0112
7fc: 21 2f mov r18, r17
7fe: 30 2f mov r19, r16
800: c9 01 movw r24, r18
802: dc 01 movw r26, r24
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
UDR1 = c; /* 发送数据*/
804: 00 e2 ldi r16, 0x20 ; 32
put_char ('.');
for (p=pm; NULL!=p; p=p->pnext) {
for (i=0; i<p->len; i++) {
put_hex (p->content[i]);
806: 1e e2 ldi r17, 0x2E ; 46
808: 2e c0 rjmp .+92 ; 0x866 <print_msg+0xdc>
80a: 9c 81 ldd r25, Y+4 ; 0x04
void put_hex (uc ch) {
uc idx;
idx = (ch >> 4);
put_char (hex_char[idx]);
80c: 89 2f mov r24, r25
80e: 82 95 swap r24
810: 8f 70 andi r24, 0x0F ; 15
812: fb 01 movw r30, r22
814: e8 0f add r30, r24
816: f1 1d adc r31, r1
818: e0 81 ld r30, Z
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
81a: 80 91 9b 00 lds r24, 0x009B
81e: 85 ff sbrs r24, 5
820: fc cf rjmp .-8 ; 0x81a <print_msg+0x90>
UDR1 = c; /* 发送数据*/
822: e0 93 9c 00 sts 0x009C, r30
void put_hex (uc ch) {
uc idx;
idx = (ch >> 4);
put_char (hex_char[idx]);
idx = (ch & 0x0f);
put_char (hex_char[idx]);
826: 9f 70 andi r25, 0x0F ; 15
828: fb 01 movw r30, r22
82a: e9 0f add r30, r25
82c: f1 1d adc r31, r1
82e: e0 81 ld r30, Z
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
830: 80 91 9b 00 lds r24, 0x009B
834: 85 ff sbrs r24, 5
836: fc cf rjmp .-8 ; 0x830 <print_msg+0xa6>
UDR1 = c; /* 发送数据*/
838: e0 93 9c 00 sts 0x009C, r30
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
83c: 80 91 9b 00 lds r24, 0x009B
840: 85 ff sbrs r24, 5
842: fc cf rjmp .-8 ; 0x83c <print_msg+0xb2>
UDR1 = c; /* 发送数据*/
844: 00 93 9c 00 sts 0x009C, r16
put_hex_2 (get_msg_len (pm));
put_char ('.');
for (p=pm; NULL!=p; p=p->pnext) {
for (i=0; i<p->len; i++) {
848: 2f 5f subi r18, 0xFF ; 255
84a: 3f 4f sbci r19, 0xFF ; 255
84c: 21 96 adiw r28, 0x01 ; 1
84e: 24 17 cp r18, r20
850: 35 07 cpc r19, r21
852: d8 f2 brcs .-74 ; 0x80a <print_msg+0x80>
extern volatile uc rx1_char;
void put_char(uc c)
{
while (!(UCSR1A & (1<<UDRE1))); /* 等待发送缓冲器为空*/
854: 80 91 9b 00 lds r24, 0x009B
858: 85 ff sbrs r24, 5
85a: fc cf rjmp .-8 ; 0x854 <print_msg+0xca>
UDR1 = c; /* 发送数据*/
85c: 10 93 9c 00 sts 0x009C, r17
put_char (ch);
put_hex_2 (get_msg_len (pm));
put_char ('.');
for (p=pm; NULL!=p; p=p->pnext) {
860: 0d 90 ld r0, X+
862: bc 91 ld r27, X
864: a0 2d mov r26, r0
866: 10 97 sbiw r26, 0x00 ; 0
868: 41 f0 breq .+16 ; 0x87a <print_msg+0xf0>
for (i=0; i<p->len; i++) {
86a: 12 96 adiw r26, 0x02 ; 2
86c: 4d 91 ld r20, X+
86e: 5c 91 ld r21, X
870: 13 97 sbiw r26, 0x03 ; 3
872: ed 01 movw r28, r26
874: 20 e0 ldi r18, 0x00 ; 0
876: 30 e0 ldi r19, 0x00 ; 0
878: ea cf rjmp .-44 ; 0x84e <print_msg+0xc4>
put_hex (p->content[i]);
put_char (' ');
}
put_char ('.');
}
}
87a: df 91 pop r29
87c: cf 91 pop r28
87e: 1f 91 pop r17
880: 0f 91 pop r16
882: 08 95 ret
00000884 <__vector_1>:
extern volatile uc event_flag;
extern volatile uc rx1_char;
volatile uc old_addr_port;
//外部中断 INT_0
SIGNAL (SIG_INTERRUPT0) { //__vector_1
884: 1f 92 push r1
886: 0f 92 push r0
888: 0f b6 in r0, 0x3f ; 63
88a: 0f 92 push r0
88c: 0b b6 in r0, 0x3b ; 59
88e: 0f 92 push r0
890: 11 24 eor r1, r1
892: 8f 93 push r24
894: af 93 push r26
896: bf 93 push r27
898: ef 93 push r30
89a: ff 93 push r31
old_addr_port=DM9K_ADDR_PORT;
89c: a0 e0 ldi r26, 0x00 ; 0
89e: b0 e2 ldi r27, 0x20 ; 32
8a0: 8c 91 ld r24, X
8a2: 80 93 65 01 sts 0x0165, r24
DM9K_ADDR_PORT=ISR;
8a6: 8e ef ldi r24, 0xFE ; 254
8a8: 8c 93 st X, r24
dm9k_isr=DM9K_DATA_PORT;
8aa: e0 e0 ldi r30, 0x00 ; 0
8ac: f0 e6 ldi r31, 0x60 ; 96
8ae: 80 81 ld r24, Z
8b0: 80 93 16 01 sts 0x0116, r24
DM9K_DATA_PORT=0xFF;
8b4: 8f ef ldi r24, 0xFF ; 255
8b6: 80 83 st Z, r24
event_flag |= INTR_DM9K_EVENT;
8b8: 80 91 c0 09 lds r24, 0x09C0
8bc: 80 62 ori r24, 0x20 ; 32
8be: 80 93 c0 09 sts 0x09C0, r24
DM9K_ADDR_PORT=old_addr_port;
8c2: 80 91 65 01 lds r24, 0x0165
8c6: 8c 93 st X, r24
}
8c8: ff 91 pop r31
8ca: ef 91 pop r30
8cc: bf 91 pop r27
8ce: af 91 pop r26
8d0: 8f 91 pop r24
8d2: 0f 90 pop r0
8d4: 0b be out 0x3b, r0 ; 59
8d6: 0f 90 pop r0
8d8: 0f be out 0x3f, r0 ; 63
8da: 0f 90 pop r0
8dc: 1f 90 pop r1
8de: 18 95 reti
000008e0 <__vector_2>:
void __vector_2 (void) {asm volatile ("reti"::);}
8e0: 18 95 reti
8e2: 08 95 ret
000008e4 <__vector_3>:
void __vector_3 (void) {asm volatile ("reti"::);}
8e4: 18 95 reti
8e6: 08 95 ret
000008e8 <__vector_4>:
void __vector_4 (void) {asm volatile ("reti"::);}
8e8: 18 95 reti
8ea: 08 95 ret
000008ec <__vector_5>:
void __vector_5 (void) {asm volatile ("reti"::);}
8ec: 18 95 reti
8ee: 08 95 ret
000008f0 <__vector_6>:
void __vector_6 (void) {asm volatile ("reti"::);}
8f0: 18 95 reti
8f2: 08 95 ret
000008f4 <__vector_7>:
void __vector_7 (void) {asm volatile ("reti"::);}
8f4: 18 95 reti
8f6: 08 95 ret
000008f8 <__vector_8>:
void __vector_8 (void) {asm volatile ("reti"::);}
8f8: 18 95 reti
8fa: 08 95 ret
000008fc <__vector_9>:
void __vector_9 (void) {asm volatile ("reti"::);}
8fc: 18 95 reti
8fe: 08 95 ret
00000900 <__vector_10>:
void __vector_10 (void) {asm volatile ("reti"::);}
900: 18 95 reti
902: 08 95 ret
00000904 <__vector_11>:
void __vector_11 (void) {asm volatile ("reti"::);}
904: 18 95 reti
906: 08 95 ret
00000908 <__vector_12>:
void __vector_12 (void) {asm volatile ("reti"::);}
908: 18 95 reti
90a: 08 95 ret
0000090c <__vector_13>:
void __vector_13 (void) {asm volatile ("reti"::);}
90c: 18 95 reti
90e: 08 95 ret
00000910 <__vector_14>:
void __vector_14 (void) {asm volatile ("reti"::);}
910: 18 95 reti
912: 08 95 ret
00000914 <__vector_15>:
/*定时器T0比较匹配中断*/
SIGNAL(SIG_OUTPUT_COMPARE0){
914: 1f 92 push r1
916: 0f 92 push r0
918: 0f b6 in r0, 0x3f ; 63
91a: 0f 92 push r0
91c: 11 24 eor r1, r1
91e: 8f 93 push r24
//置事件标志位
event_flag |= INTR_TIMER_10MS;
920: 80 91 c0 09 lds r24, 0x09C0
924: 80 61 ori r24, 0x10 ; 16
926: 80 93 c0 09 sts 0x09C0, r24
}
92a: 8f 91 pop r24
92c: 0f 90 pop r0
92e: 0f be out 0x3f, r0 ; 63
930: 0f 90 pop r0
932: 1f 90 pop r1
934: 18 95 reti
00000936 <__vector_16>:
void __vector_16 (void) {asm volatile ("reti"::);}
936: 18 95 reti
938: 08 95
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?