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

📄 dhry_2.s79

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 S79
字号:
        NAME dhry_2

        RTMODEL "__code_model", "small"
        RTMODEL "__cpu_mode", "arm"
        RTMODEL "__data_model", "absolute"
        RTMODEL "__endian", "little"
        RTMODEL "__rt_version", "2"
        RTMODEL "__thumb_aware", "enabled"

        RSEG CSTACK:DATA:NOROOT(2)

        EXTERN Int_Glob
        EXTERN Ch_1_Glob

        PUBLIC Func_1
        FUNCTION Func_1,0203H
        PUBLIC Func_2
        FUNCTION Func_2,0203H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC Func_3
        FUNCTION Func_3,0203H
        PUBLIC Proc_6
        FUNCTION Proc_6,0203H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC Proc_7
        FUNCTION Proc_7,0203H
        PUBLIC Proc_8
        FUNCTION Proc_8,0203H
        LOCFRAME CSTACK, 16, STACK

        RSEG NEARFUNC_A:CODE:REORDER:NOROOT(2)
        
        CFI Names cfiNames0
        CFI StackFrame CFA SP HUGEDATA
        CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
        CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, SP:32, LR:32
        CFI VirtualResource RET:32
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 4
        CFI DataAlign 4
        CFI ReturnAddress RET CODE
        CFI CFA SP+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI LR Undefined
        CFI RET LR
        CFI EndCommon cfiCommon0
        
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function Func_3
   CODE32   
Func_3:
   AND      R0,R0,#+0xFF       ;; Zero extend
   CMP      R0,#+0x2
   MOVEQ    R0,#+0x1
   MOVEQ    PC,LR              ;; return
   MOV      R0,#+0x0
   MOV      PC,LR              ;; return
        CFI EndBlock cfiBlock0

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function Proc_6
   CODE32   
Proc_6:
   STMDB    SP!,{LR}           ;; Push
        CFI RET Frame(CFA, -4)
        CFI CFA SP+4
   STRB     R0,[R1, #+0]
   AND      R0,R0,#+0xFF       ;; Zero extend
   CMP      R0,#+0x2
   MOVNE    R2,#+0x3
   STRNEB   R2,[R1, #+0]
   CMP      R0,#+0x0
   BEQ      ??Proc_6_0
   CMP      R0,#+0x1
   BEQ      ??Proc_6_1
   CMP      R0,#+0x2
   BEQ      ??Proc_6_2
   CMP      R0,#+0x4
   BEQ      ??Proc_6_3
   LDMIA    SP!,{PC}           ;; return
??Proc_6_0:
   MOV      R0,#+0x0
   B        ??Proc_6_4
??Proc_6_1:
   LDR      R0,??Proc_6_5      ;; #Int_Glob
   LDR      R2,[R0, #+0]
   CMP      R2,#+0x65
   MOVGE    R0,#+0x0
   BGE      ??Proc_6_4
   MOV      R0,#+0x3
   B        ??Proc_6_4
??Proc_6_2:
   MOV      R0,#+0x1
   B        ??Proc_6_4
??Proc_6_3:
   MOV      R0,#+0x2
??Proc_6_4:
   STRB     R0,[R1, #+0]
   LDMIA    SP!,{PC}           ;; return
   DATA     
??Proc_6_5:
   DC32     Int_Glob
        CFI EndBlock cfiBlock1

        RSEG NEARFUNC_A:CODE:REORDER:NOROOT(2)
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function Proc_7
   CODE32   
Proc_7:
   ADD      R0,R0,R1
   ADD      R0,R0,#+0x2
   STR      R0,[R2, #+0]
   MOV      PC,LR              ;; return
        CFI EndBlock cfiBlock2

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function Proc_8
   CODE32   
Proc_8:
   STMDB    SP!,{R4-R7}        ;; Push
        CFI R7 Frame(CFA, -4)
        CFI R6 Frame(CFA, -8)
        CFI R5 Frame(CFA, -12)
        CFI R4 Frame(CFA, -16)
        CFI CFA SP+16
   ADD      R2,R2,#+0x5
   MOV      R4,R2, LSL #+2
   STR      R3,[R4, +R0]
   ADD      R3,R2,#+0x1
   LDR      R5,[R4, +R0]
   STR      R5,[R0, +R3, LSL #+2]
   ADD      R5,R2,#+0x1E
   STR      R2,[R0, +R5, LSL #+2]
   MOV      R5,R2
   MOV      R6,#+0xC8
   MUL      R7,R2,R6
   ADD      R6,R7,R1
   ADD      R6,R4,R6
   MOV      R7,R3
   B        ??Proc_8_0
??Proc_8_1:
   STR      R2,[R6, #+0]
   ADD      R5,R5,#+0x1
   ADD      R6,R6,#+0x4
??Proc_8_0:
   CMP      R7,R5
   BGE      ??Proc_8_1
   MOV      R3,#+0xC8
   MUL      R5,R2,R3
   ADD      R3,R5,R1
   SUB      R5,R2,#+0x1
   LDR      R6,[R3, +R5, LSL #+2]
   ADD      R6,R6,#+0x1
   STR      R6,[R3, +R5, LSL #+2]
   LDR      R3,[R4, +R0]
   ADD      R0,R2,#+0x14
   MOV      R2,#+0xC8
   MUL      R5,R0,R2
   ADD      R0,R5,R1
   STR      R3,[R4, +R0]
   MOV      R0,#+0x5
   LDR      R1,??Proc_8_2      ;; #Int_Glob
   STR      R0,[R1, #+0]
   LDMIA    SP!,{R4-R7}        ;; Pop
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI CFA SP+0
   MOV      PC,LR              ;; return
   DATA     
??Proc_8_2:
   DC32     Int_Glob
        CFI EndBlock cfiBlock3

        RSEG NEARFUNC_A:CODE:REORDER:NOROOT(2)
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function Func_1
   CODE32   
Func_1:
   AND      R2,R0,#+0xFF       ;; Zero extend
   AND      R1,R1,#+0xFF       ;; Zero extend
   CMP      R2,R1
   MOVNE    R0,#+0x0
   LDREQ    R0,??Func_1_0      ;; #Ch_1_Glob
   STREQB   R2,[R0, #+0]
   MOVEQ    R0,#+0x1
   AND      R0,R0,#+0xFF       ;; Zero extend
   MOV      PC,LR              ;; return
   DATA     
??Func_1_0:
   DC32     Ch_1_Glob
        CFI EndBlock cfiBlock4

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock5 Using cfiCommon0
        CFI Function Func_2
   CODE32   
Func_2:
   STMDB    SP!,{R4,R5}        ;; Push
        CFI R5 Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA SP+8
   MOV      R2,#+0x2
   B        ??Func_2_0
??Func_2_1:
   ADD      R2,R2,#+0x1
   CMP      R2,#+0x3
   BGE      ??Func_2_2
??Func_2_0:
   LDRB     R3,[R2, +R0]
   ADD      R4,R2,#+0x1
   LDRB     R5,[R4, +R1]
   CMP      R3,R5
   BNE      ??Func_2_1
   LDR      R4,??Func_2_3      ;; #Ch_1_Glob
   STRB     R3,[R4, #+0]
   B        ??Func_2_0
??Func_2_2:
   LDRB     R4,[R1], #+1
   LDRB     R3,[R0], #+1
   CMP      R3,R4
   BNE      ??Func_2_4
   CMP      R3,#+0x0
   BNE      ??Func_2_2
   MOV      R5,#+0x0
   B        ??Func_2_5
??Func_2_4:
   SUB      R5,R3,R4
??Func_2_5:
   CMP      R5,#+0x1
   BLT      ??Func_2_6
   ADD      R0,R2,#+0x7
   LDR      R1,??Func_2_3+4    ;; #Int_Glob
   STR      R0,[R1, #+0]
   MOV      R0,#+0x1
   B        ??Func_2_7
??Func_2_6:
   MOV      R0,#+0x0
??Func_2_7:
   LDMIA    SP!,{R4,R5}        ;; Pop
        CFI R4 SameValue
        CFI R5 SameValue
        CFI CFA SP+0
   MOV      PC,LR              ;; return
   DATA     
??Func_2_3:
   DC32     Ch_1_Glob
   DC32     Int_Glob
        CFI EndBlock cfiBlock5

        END
; 
; 500 bytes in segment NEARFUNC_A
; 
; 500 bytes of CODE memory
;
;Errors: none
;Warnings: none

⌨️ 快捷键说明

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