📄 test.lst
字号:
__start:
__text_start:
002F E5CF LDI R28,0x5F
0030 E0D4 LDI R29,4
0031 BFCD OUT 0x3D,R28
0032 BFDE OUT 0x3E,R29
0033 51C0 SUBI R28,0x10
0034 40D0 SBCI R29,0
0035 EA0A LDI R16,0xAA
0036 8308 STD Y+0,R16
0037 2400 CLR R0
0038 E6E5 LDI R30,0x65
0039 E0F0 LDI R31,0
003A E010 LDI R17,0
003B 36E5 CPI R30,0x65
003C 07F1 CPC R31,R17
003D F011 BEQ 0x0040
003E 9201 ST R0,Z+
003F CFFB RJMP 0x003B
0040 8300 STD Z+0,R16
0041 E5E8 LDI R30,0x58
0042 E0F0 LDI R31,0
0043 E6A0 LDI R26,0x60
0044 E0B0 LDI R27,0
0045 E010 LDI R17,0
0046 35ED CPI R30,0x5D
0047 07F1 CPC R31,R17
0048 F021 BEQ 0x004D
0049 95C8 LPM
004A 9631 ADIW R30,1
004B 920D ST R0,X+
004C CFF9 RJMP 0x0046
004D 940E0066 CALL _main
_exit:
004F CFFF RJMP _exit
FILE: F:\IccAvr_Pro\test.c
(0001) //ICC-AVR application builder : 2005-2-20 上午 10:39:44
(0002) // Target : M16
(0003) // Crystal: 8.0000Mhz
(0004)
(0005) #include <iom16v.h>
(0006) #include <macros.h>
(0007)
(0008) void port_init(void)
(0009) {
(0010) PORTA = 0xFF;
_port_init:
0050 EF8F LDI R24,0xFF
0051 BB8B OUT 0x1B,R24
(0011) DDRA = 0x00;
0052 2422 CLR R2
0053 BA2A OUT 0x1A,R2
(0012) PORTB = 0xFF;
0054 BB88 OUT 0x18,R24
(0013) DDRB = 0x00;
0055 BA27 OUT 0x17,R2
(0014) PORTC = 0xFF; //m103 output only
0056 BB85 OUT 0x15,R24
(0015) DDRC = 0x00;
0057 BA24 OUT 0x14,R2
(0016) PORTD = 0xFF;
0058 BB82 OUT 0x12,R24
(0017) DDRD = 0x00;
0059 BA21 OUT 0x11,R2
(0018) }
005A 9508 RET
(0019)
(0020) #pragma interrupt_handler int0_isr:2
(0021) void int0_isr(void)
(0022) {
(0023) //external interupt on INT0
(0024) }
_int0_isr:
005B 9518 RETI
(0025)
(0026) #pragma interrupt_handler int1_isr:3
(0027) void int1_isr(void)
(0028) {
(0029) //external interupt on INT1
(0030) }
_int1_isr:
005C 9518 RETI
(0031)
(0032) //call this routine to initialise all peripherals
(0033) void init_devices(void)
(0034) {
(0035) //stop errant interrupts until set up
(0036) CLI(); //disable all interrupts
_init_devices:
005D 94F8 BCLR 7
(0037) port_init();
005E DFF1 RCALL _port_init
(0038)
(0039) MCUCR = 0x00;
005F 2422 CLR R2
0060 BE25 OUT 0x35,R2
(0040) GICR = 0xC0;
0061 EC80 LDI R24,0xC0
0062 BF8B OUT 0x3B,R24
(0041) TIMSK = 0x00; //timer interrupt sources
0063 BE29 OUT 0x39,R2
(0042) SEI(); //re-enable interrupts
0064 9478 BSET 7
(0043) //all peripherals are now initialised
(0044) }
0065 9508 RET
_main:
te --> R20
t --> R20
pc --> R20
test --> Y+0
0066 9724 SBIW R28,4
(0045) const struct p{
(0046) unsigned char t1;
(0047) unsigned int t2;
(0048) };
(0049)
(0050) struct p a1={10,1000};
(0051) struct p *pa1=&a1;
(0052)
(0053) void main()
(0054) {unsigned char t=a1.t1;
0067 91400060 LDS R20,__idata_end+3
(0055) unsigned int te=a1.t2;
0069 91400061 LDS R20,0x61
006B 91500062 LDS R21,0x62
(0056) unsigned char test[4]={0,0,0,0};
006D E584 LDI R24,0x54
006E E090 LDI R25,0
006F 01FE MOVW R30,R28
0070 E004 LDI R16,4
0071 E010 LDI R17,0
0072 93FA ST R31,-Y
0073 93EA ST R30,-Y
0074 939A ST R25,-Y
0075 938A ST R24,-Y
0076 940E0085 CALL asgncblk
(0057) unsigned char *pc=(unsigned char *)(&a1);
0078 E640 LDI R20,0x60
0079 E050 LDI R21,0
(0058) test[0]=*pc++;
007A 01FA MOVW R30,R20
007B 9021 LD R2,Z+
007C 8228 STD Y+0,R2
(0059) test[1]=*pc++;
007D 9021 LD R2,Z+
007E 8229 STD Y+1,R2
(0060) test[2]=*pc++;
007F 9021 LD R2,Z+
0080 01AF MOVW R20,R30
0081 822A STD Y+2,R2
(0061)
(0062)
(0063) init_devices();
0082 DFDA RCALL _init_devices
(0064) }
FILE: <library>
0083 9624 ADIW R28,4
0084 9508 RET
asgncblk:
0085 93AA ST R26,-Y
0086 93BA ST R27,-Y
0087 93EA ST R30,-Y
0088 93FA ST R31,-Y
0089 920A ST R0,-Y
008A 81AF LDD R26,Y+7
008B 85B8 LDD R27,Y+8
008C 81ED LDD R30,Y+5
008D 81FE LDD R31,Y+6
008E 3000 CPI R16,0
008F 0701 CPC R16,R17
0090 F031 BEQ 0x0097
0091 95C8 LPM
0092 920D ST R0,X+
0093 9631 ADIW R30,1
0094 5001 SUBI R16,1
0095 4010 SBCI R17,0
0096 CFF7 RJMP 0x008E
0097 9009 LD R0,Y+
0098 91F9 LD R31,Y+
0099 91E9 LD R30,Y+
009A 91B9 LD R27,Y+
009B 91A9 LD R26,Y+
009C 9624 ADIW R28,4
009D 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -