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

📄 lib_at91.s79

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 S79
📖 第 1 页 / 共 2 页
字号:
   LDRB     R3,[R8, #+8]
   MOV      R2,R2, LSL R3
   BEQ      ??at91_usart_open_0
   ORR      R0,R2,R0, LSL R1
   MOV      R1,#+0x1
   LDRB     R2,[R8, #+10]
   ORR      R1,R0,R1, LSL R2
   B        ??at91_usart_open_1
??at91_usart_open_0:
   ORR      R1,R2,R0, LSL R1
??at91_usart_open_1:
   LDR      R0,[R8, #+4]
   BL       at91_pio_close
   MOV      R0,#+0xAC
   LDR      R1,[R8, #+0]
   STR      R0,[R1, #+0]
   MOV      R0,#+0x0
   LDR      R1,[R8, #+0]
   STR      R0,[R1, #+52]
   LDR      R1,[R8, #+0]
   STR      R0,[R1, #+60]
   LDR      R0,[R8, #+0]
   STR      R6,[R0, #+32]
   LDR      R0,[R8, #+0]
   STR      R5,[R0, #+4]
   LDR      R0,[R8, #+0]
   STR      R7,[R0, #+40]
   MOV      R0,#+0x50
   LDR      R1,[R8, #+0]
   STR      R0,[R1, #+0]
   LDMIA    SP!,{R4-R8,PC}     ;; return
        CFI EndBlock cfiBlock10

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock11 Using cfiCommon0
        CFI Function at91_usart_close
   CODE32   
at91_usart_close:
   STMDB    SP!,{R4,R5,LR}     ;; Push
        CFI RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA SP+12
   MOV      R4,R0
   LDRB     R0,[R4, #+11]
   BL       at91_clock_close
   MOV      R2,#+0x0
   MOV      R0,#+0x1
   LDRB     R1,[R4, #+9]
   MOV      R3,R0
   LDRB     R5,[R4, #+8]
   MOV      R3,R3, LSL R5
   ORR      R0,R3,R0, LSL R1
   MOV      R1,#+0x1
   LDRB     R3,[R4, #+10]
   ORR      R1,R0,R1, LSL R3
   LDR      R0,[R4, #+4]
   BL       at91_pio_open
   MVN      R0,#+0x0
   LDR      R1,[R4, #+0]
   STR      R0,[R1, #+12]
   MOV      R0,#+0x0
   LDR      R1,[R4, #+0]
   STR      R0,[R1, #+52]
   LDR      R1,[R4, #+0]
   STR      R0,[R1, #+60]
   MOV      R0,#+0xAC
   LDR      R1,[R4, #+0]
   STR      R0,[R1, #+0]
   LDMIA    SP!,{R4,R5,PC}     ;; return
        CFI EndBlock cfiBlock11

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock12 Using cfiCommon0
        CFI Function at91_usart_get_status
   CODE32   
at91_usart_get_status:
   LDR      R1,[R0, #+0]
   LDR      R0,[R1, #+20]
   MOV      PC,LR              ;; return
        CFI EndBlock cfiBlock12

        RSEG NEARFUNC_A:CODE:NOROOT(2)
   CODE32   
at91_usart_trig_cmd:
	REQUIRE ??Subroutine0_0

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock13 Using cfiCommon0
        CFI NoFunction
??Subroutine0_0:
   LDR      R2,[R0, #+0]
   STR      R1,[R2, #+0]
   MOV      PC,LR              ;; return
        CFI EndBlock cfiBlock13

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock14 Using cfiCommon0
        CFI Function at91_usart_write
   CODE32   
at91_usart_write:
   B        ??Subroutine2_0
        CFI EndBlock cfiBlock14

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock15 Using cfiCommon0
        CFI Function at91_usart_read
   CODE32   
at91_usart_read:
   LDR      R2,[R0, #+0]
   LDR      R0,[R2, #+24]
   B        ??Subroutine1_1
        CFI EndBlock cfiBlock15

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock16 Using cfiCommon0
        CFI Function at91_usart_send_frame
   CODE32   
at91_usart_send_frame:
   STMDB    SP!,{R4}           ;; Push
        CFI R4 Frame(CFA, -4)
        CFI CFA SP+4
??at91_usart_send_frame_0:
   LDR      R3,[R0, #+0]
   LDR      R4,[R3, #+20]
   AND      R4,R4,#+0xFF       ;; Zero extend
   TST      R4,#+0x10
   BEQ      ??at91_usart_send_frame_0
   STR      R1,[R3, #+56]
   LDR      R1,[R0, #+0]
   STR      R2,[R1, #+60]
   MOV      R0,#+0x1
   LDMIA    SP!,{R4}           ;; Pop
        CFI R4 SameValue
        CFI CFA SP+0
   MOV      PC,LR              ;; return
        CFI EndBlock cfiBlock16

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock17 Using cfiCommon0
        CFI Function at91_usart_receive_frame
   CODE32   
at91_usart_receive_frame:
   STMDB    SP!,{R4,R5}        ;; Push
        CFI R5 Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA SP+8
   MOV      R4,#+0xA
   MUL      R5,R3,R4
   MOV      R3,R5, LSR #+2
   LDR      R4,[R0, #+0]
   STR      R3,[R4, #+36]
   MOV      R3,#+0x800
   LDR      R4,[R0, #+0]
   STR      R3,[R4, #+0]
   LDR      R3,[R0, #+0]
   STR      R1,[R3, #+48]
   LDR      R1,[R0, #+0]
   STR      R2,[R1, #+52]
   MOV      R0,#+0x1
   LDMIA    SP!,{R4,R5}        ;; Pop
        CFI R4 SameValue
        CFI R5 SameValue
        CFI CFA SP+0
   MOV      PC,LR              ;; return
        CFI EndBlock cfiBlock17

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock18 Using cfiCommon0
        CFI Function at91_tc_open
   CODE32   
at91_tc_open:
   STMDB    SP!,{R4-R8,LR}     ;; Push
        CFI RET Frame(CFA, -4)
        CFI R8 Frame(CFA, -8)
        CFI R7 Frame(CFA, -12)
        CFI R6 Frame(CFA, -16)
        CFI R5 Frame(CFA, -20)
        CFI R4 Frame(CFA, -24)
        CFI CFA SP+24
   MOV      R4,R0
   MOV      R5,R1
   MOV      R8,R2
   MOV      R7,R3
   MOV      R6,R4
   LDRB     R0,[R6, #+8]
   BL       at91_clock_open
   MOV      R0,#+0x1
   LDRB     R2,[R6, #+11]
   MOV      R1,R0, LSL R2
   CMP      R8,#+0x1
   LDREQB   R2,[R6, #+9]
   ORREQ    R1,R1,R0, LSL R2
   CMP      R7,#+0x1
   LDREQB   R2,[R6, #+10]
   ORREQ    R1,R1,R0, LSL R2
   LDR      R0,[R6, #+4]
   BL       at91_pio_close
   MOV      R0,#+0x2
   LDR      R1,[R6, #+0]
   STR      R0,[R1, #+0]
   MVN      R0,#+0x0
   LDR      R1,[R6, #+0]
   STR      R0,[R1, #+40]
   LDR      R0,[R6, #+0]
   LDR      R1,[R0, #+32]
   STR      R5,[R0, #+4]
   MOV      R0,#+0x1
   LDR      R1,[R6, #+0]
   STR      R0,[R1, #+0]
   LDMIA    SP!,{R4-R8,PC}     ;; return
        CFI EndBlock cfiBlock18

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock19 Using cfiCommon0
        CFI Function at91_tc_close
   CODE32   
at91_tc_close:
   STMDB    SP!,{LR}           ;; Push
        CFI RET Frame(CFA, -4)
        CFI CFA SP+4
   MOV      R1,R0
   MOV      R0,#+0x2
   LDR      R2,[R1, #+0]
   STR      R0,[R2, #+0]
   MVN      R0,#+0x0
   LDR      R2,[R1, #+0]
   STR      R0,[R2, #+40]
   LDRB     R0,[R1, #+8]
   BL       at91_clock_close
   LDMIA    SP!,{PC}           ;; return
        CFI EndBlock cfiBlock19

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock20 Using cfiCommon0
        CFI Function at91_tc_get_status
   CODE32   
at91_tc_get_status:
   LDR      R1,[R0, #+0]
   LDR      R0,[R1, #+32]
   MOV      PC,LR              ;; return
        CFI EndBlock cfiBlock20

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock21 Using cfiCommon0
        CFI Function at91_tc_trig_cmd
   CODE32   
at91_tc_trig_cmd:
   STMDB    SP!,{LR}           ;; Push
        CFI RET Frame(CFA, -4)
        CFI CFA SP+4
   CMP      R1,#+0x1
   BEQ      ??at91_tc_trig_cmd_0
   CMP      R1,#+0x2
   BEQ      ??at91_tc_trig_cmd_1
   LDMIA    SP!,{PC}           ;; return
??at91_tc_trig_cmd_0:
   MOV      R1,#+0x4
   LDR      R2,[R0, #+0]
   STR      R1,[R2, #+0]
   LDMIA    SP!,{PC}           ;; return
??at91_tc_trig_cmd_1:
   MOV      R1,#+0x1
   LDR      R2,[R0, #+0]
   AND      R0,R2,#+0xF0
   STR      R1,[R0, #+192]
   LDMIA    SP!,{PC}           ;; return
        CFI EndBlock cfiBlock21

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock22 Using cfiCommon0
        CFI Function at91_tc_set_mode
   CODE32   
at91_tc_set_mode:
   CMP      R2,#+0x0
   BEQ      ??at91_tc_set_mode_0
   LDR      R2,[R0, #+0]
   LDR      R0,[R2, #+4]
   ORR      R0,R0,R1
   B        ??at91_tc_set_mode_1
??at91_tc_set_mode_0:
   MVN      R1,R1
   LDR      R2,[R0, #+0]
   LDR      R0,[R2, #+4]
   AND      R0,R0,R1
??at91_tc_set_mode_1:
   STR      R0,[R2, #+4]
   MOV      PC,LR              ;; return
        CFI EndBlock cfiBlock22

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock23 Using cfiCommon0
        CFI Function at91_tc_read
   CODE32   
at91_tc_read:
   MOV      R2,R1
   LDR      R1,[R0, #+0]
   LDR      R3,[R1, #+20]
   STR      R3,[R2, #+0]
   LDR      R1,[R0, #+0]
   LDR      R3,[R1, #+24]
   STR      R3,[R2, #+4]
   LDR      R1,[R0, #+0]
   LDR      R3,[R1, #+28]
   STR      R3,[R2, #+8]
   LDR      R1,[R0, #+0]
   LDR      R0,[R1, #+16]
   STR      R0,[R2, #+12]
   MOV      PC,LR              ;; return
        CFI EndBlock cfiBlock23

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock24 Using cfiCommon0
        CFI Function at91_tc_write
   CODE32   
at91_tc_write:
	REQUIRE ??Subroutine2_0
   MOV      R2,R1
   LDR      R1,[R2, #+0]
   LDR      R3,[R0, #+0]
   STR      R1,[R3, #+20]
   LDR      R1,[R2, #+4]
   LDR      R3,[R0, #+0]
   STR      R1,[R3, #+24]
   LDR      R1,[R2, #+8]
        CFI EndBlock cfiBlock24

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock25 Using cfiCommon0
        CFI NoFunction
??Subroutine2_0:
   LDR      R2,[R0, #+0]
   STR      R1,[R2, #+28]
   MOV      PC,LR              ;; return
        CFI EndBlock cfiBlock25

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock26 Using cfiCommon0
        CFI Function at91_default_fiq_handler
   CODE32   
at91_default_fiq_handler:
??at91_default_fiq_handler_0:
   B        ??at91_default_fiq_handler_0
        CFI EndBlock cfiBlock26

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock27 Using cfiCommon0
        CFI Function at91_default_irq_handler
   CODE32   
at91_default_irq_handler:
??at91_default_irq_handler_0:
   B        ??at91_default_irq_handler_0
        CFI EndBlock cfiBlock27

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock28 Using cfiCommon0
        CFI Function at91_spurious_handler
   CODE32   
at91_spurious_handler:
??at91_spurious_handler_0:
   B        ??at91_spurious_handler_0
        CFI EndBlock cfiBlock28

        RSEG HUGE_ID:HUGECONST:SORT:NOROOT(2)
`?<Initializer for Pio>`:
	DC32 0FFFF0000H

        RSEG HUGE_ID:HUGECONST:SORT:NOROOT(2)
`?*?HUGE_ID`:

        RSEG INITTAB:CODE:ROOT(2)
?init?tab?HUGE_I:
   DCD      sfe(HUGE_I) - sfb(HUGE_I), sfb(HUGE_I), sfb(HUGE_ID)

        END
; 
;    80 bytes in segment HUGE_C    
;     4 bytes in segment HUGE_I    
;     4 bytes in segment HUGE_ID   
;    12 bytes in segment INITTAB   
; 1 240 bytes in segment NEARFUNC_A
; 
; 1 240 bytes of CODE      memory (+ 12 bytes shared)
;    84 bytes of HUGECONST memory
;     4 bytes of HUGEDATA  memory
;
;Errors: none
;Warnings: 1

⌨️ 快捷键说明

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