⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hex2dec.s18

📁 格式转换小程序
💻 S18
字号:
        NAME hex2dec

        RTMODEL "__code_model", "small"
        RTMODEL "__core", "sam8xri"
        RTMODEL "__data_model", "small"
        RTMODEL "__rt_version", "1"

        RSEG CSTACK:IDATA:NOROOT(0)
        RSEG CSTACK2:IDATA:NOROOT(0)
        RSEG CSTACKN:XDATA:NOROOT(0)

        EXTERN printf
        FUNCTION printf,0202H
        ARGFRAME CSTACK, 9, STACK
        EXTERN ?CLSAM8_2_L00
        EXTERN ?C_MUL_L01
        EXTERN ?US_DIVMOD_L02
        EXTERN __INIT_STACK
        EXTERN __INIT_TINYP_I

        PUBLIC `add`
        FUNCTION `add`,021203H
        ARGFRAME CSTACK, 7, STACK
        LOCFRAME CSTACK, 9, STACK
        PUBLIC main
        FUNCTION main,021a03H
        LOCFRAME CSTACK, 9, STACK
        
        CFI Names cfiNames0
        CFI StackFrame CFA SP IDATA
        CFI Resource R0:8, R1:8, R2:8, R3:8, R4:8, R5:8, R6:8, R7:8, R8:8, R9:8
        CFI Resource R10:8, R11:8, R12:8, R13:8, R14:8, R15:8, IP:16
        CFI VirtualResource ?RET:16
        CFI Resource SP:8
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 1
        CFI DataAlign 1
        CFI ReturnAddress ?RET CODE
        CFI CFA SP+2
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 Undefined
        CFI R5 Undefined
        CFI R6 Undefined
        CFI R7 Undefined
        CFI R8 Undefined
        CFI R9 Undefined
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 SameValue
        CFI R13 SameValue
        CFI R14 SameValue
        CFI R15 SameValue
        CFI IP Undefined
        CFI ?RET Frame(CFA, -2)
        CFI EndCommon cfiCommon0
        
// E:\work\xty\test\IAR_csam86\hex2dec.c
//    1 #define  uint unsigned int
//    2 #define uchar  unsigned char
//    3 #define  ulong unsigned long
//    4 
//    5 #include "stdio.h"
//    6 

        RSEG CODE:CODE:NOROOT(0)
//    7 void add(uint a,uint b)
`add`:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function `add`
	REQUIRE __INIT_STACK
//    8 {
        FUNCALL `add`, printf
        LOCFRAME CSTACK, 9, STACK
        ARGFRAME CSTACK, 9, STACK
        ; * Stack frame (at entry) *
        ; Param size: 0
        ; Return address size: 2
        ; SETPAGE 
        PUSH      R0
        CFI R0 Frame(CFA, -3)
        CFI CFA SP+3
        LD        R0,0xD9
        PUSH      R9
        CFI R9 Frame(CFA, -3)
        CFI CFA SP+4
        PUSH      R8
        CFI R8 Frame(CFA, -4)
        CFI CFA SP+5
        PUSH      R7
        CFI R7 Frame(CFA, -5)
        CFI CFA SP+6
        PUSH      R6
        CFI R6 Frame(CFA, -6)
        CFI CFA SP+7
        ; Saved register size: 4
        ; Auto size: 3
        SUB       0xD9,#3
        CFI CFA SP+10
        AND       0xDF,#252
        LD        R8,R12
        LD        R9,R13
//    9     uint c=4;
        CLR       R14
        LD        R15,#4
        LD        R13,#249
        ADD       R13,R0
        LD        @R13,R14
        LD        #0x01[R13],R15
//   10     a=c+b;
        AND       0xDF,#252
        LD        R15,#249
        ADD       R15,R0
        LD        R12,@R15
        LD        R13,#0x01[R15]
        AND       0xDF,#252
        ADD       R13,R9
        ADC       R12,R8
        LD        R6,R12
        LD        R7,R13
//   11     c=a-b;
        LD        R14,R6
        LD        R15,R7
        SUB       R15,R9
        SBC       R14,R8
        LD        R13,#249
        ADD       R13,R0
        LD        @R13,R14
        LD        #0x01[R13],R15
//   12     printf("%d",&c);
        ; Setup parameters for call to function printf
        AND       0xDF,#252
        LD        R15,#249
        ADD       R15,R0
        CLR       R14
        PUSH      R15
        CFI CFA SP+11
        PUSH      R14
        CFI CFA SP+12
        LD        R14,#HIGH(`?<Constant "%d">`)
        LD        R15,#LOW(`?<Constant "%d">`)
        CALL      printf
//   13 }
        ADD       0xD9,#5
        CFI CFA SP+7
        POP       R6
        CFI CFA SP+6
        POP       R7
        CFI CFA SP+5
        POP       R8
        CFI CFA SP+4
        POP       R9
        CFI CFA SP+3
        POP       R0
        CFI CFA SP+2
        AND       0xDF,#252
        RET       
        CFI EndBlock cfiBlock0
	REQUIRE ?CLSAM8_2_L00

        RSEG CODE:CODE:NOROOT(0)
//   14 void main(void)
main:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function main
	REQUIRE __INIT_STACK
//   15 {
        FUNCALL main, `add`
        LOCFRAME CSTACK, 7, STACK
        ARGFRAME CSTACK, 7, STACK
        ; * Stack frame (at entry) *
        ; Param size: 0
        ; Return address size: 2
        ; SETPAGE 
        PUSH      R0
        CFI R0 Frame(CFA, -3)
        CFI CFA SP+3
        LD        R0,0xD9
        ; Auto size: 7
        SUB       0xD9,#7
        CFI CFA SP+10
//   16     uint a=60;
        CLR       R4
        LD        R5,#60
//   17     uint b[3];    
//   18     uint i;
//   19     for(i=0;i<3;i++)
        CLR       R6
        CLR       R7
??main_0:
        LD        R14,R6
        LD        R15,R7
        SUB       R15,#3
        SBC       R14,#0
        JR        UGE,??main_1
//   20     {
//   21         b[i]=0;
        AND       0xDF,#252
        CLR       R14
        CLR       R15
        PUSH      R15
        CFI CFA SP+11
        PUSH      R14
        CFI CFA SP+12
        LD        R1,#249
        ADD       R1,R0
        LD        R13,R7
        LD        R15,#2
        CALL      ?C_MUL_L01
        ADD       R15,R1
        POP       R12
        CFI CFA SP+11
        POP       R13
        CFI CFA SP+10
        LD        @R15,R12
        LD        #0x01[R15],R13
//   22     }
        AND       0xDF,#252
        ADD       R7,#1
        ADC       R6,#0
        JR        ??main_0
//   23     for(i=0;i<3;i++)
??main_1:
        CLR       R6
        CLR       R7
??main_2:
        LD        R14,R6
        LD        R15,R7
        SUB       R15,#3
        SBC       R14,#0
        JR        UGE,??main_3
//   24     {
//   25         b[i]=a%10;
        AND       0xDF,#252
        LD        R14,R4
        LD        R15,R5
        CLR       R12
        LD        R13,#10
        CALL      ?US_DIVMOD_L02
        PUSH      R13
        CFI CFA SP+11
        PUSH      R12
        CFI CFA SP+12
        LD        R1,#249
        ADD       R1,R0
        LD        R13,R7
        LD        R15,#2
        CALL      ?C_MUL_L01
        ADD       R15,R1
        POP       R12
        CFI CFA SP+11
        POP       R13
        CFI CFA SP+10
        LD        @R15,R12
        LD        #0x01[R15],R13
//   26         a/=10;
        LD        R14,R4
        LD        R15,R5
        CLR       R12
        LD        R13,#10
        CALL      ?US_DIVMOD_L02
        LD        R4,R14
        LD        R5,R15
//   27     }
        ADD       R7,#1
        ADC       R6,#0
        JR        ??main_2
//   28     add(a,i);
??main_3:
        ; Setup parameters for call to function add
        AND       0xDF,#252
        LD        R12,R6
        LD        R13,R7
        LD        R14,R4
        LD        R15,R5
        CALL      `add`
//   29     while(1);
??main_4:
        JR        ??main_4
        CFI EndBlock cfiBlock1
	REQUIRE ?CLSAM8_2_L00
//   30 }

        RSEG TINYP_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "%d">>`:
        DB  3
        DW  `?<Constant "%d">`
        DB "%d"

        RSEG TINYP_I:IDATA:REORDER:NOROOT(0)
`?<Constant "%d">`:
        DS 3
	REQUIRE `?<Initializer for <Constant "%d">>`
	REQUIRE __INIT_TINYP_I

        END
// 
// 278 bytes in segment CODE
//   3 bytes in segment TINYP_I
//   6 bytes in segment TINYP_ID
// 
// 284 bytes of CODE  memory
//   3 bytes of IDATA memory
//
//Errors: none
//Warnings: 1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -