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

📄 mmcdrv.cod

📁 ARM对MMC卡的编程文档
💻 COD
📖 第 1 页 / 共 4 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615 

	TTL	c:\wince420\platform\sdklh7a404\drivers\sdmmc\driver\.\mmcdrv.c
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:coredll.lib "
	DCB	"-defaultlib:corelibc.lib "


  00000			 AREA	 |.data|, DATA
	 COMMON	|multipleRdWr|, 0x2

	EXPORT	|mmcBusStart|
	EXPORT	|??_C@_1EA@PJAO@?$AAf?$AAa?$AAi?$AAl?$AA?5?$AAt?$AAo?$AA?5?$AAs?$AAe?$AAt?$AA?5?$AAs?$AAe?$AAt?$AAM?$AAM?$AAC?$AAC?$AAl@| [ DATA ] ; `string'
	IMPORT	|NKDbgPrintfW|
	IMPORT	|startMMC80Clocks|
	IMPORT	|setMMCClockRate|
; File c:\wince420\platform\sdklh7a404\drivers\sdmmc\driver\mmcdrv.c

  00000			 AREA	 |.text| { |mmcBusStart| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$mmcBusStart|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcBusStart| } ; comdat associative
|$T36752| DCD	|mmcBusStart|
	DCD	0x40001101

  00000			 AREA	 |.rdata| { |??_C@_1EA@PJAO@?$AAf?$AAa?$AAi?$AAl?$AA?5?$AAt?$AAo?$AA?5?$AAs?$AAe?$AAt?$AA?5?$AAs?$AAe?$AAt?$AAM?$AAM?$AAC?$AAC?$AAl@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EA@PJAO@?$AAf?$AAa?$AAi?$AAl?$AA?5?$AAt?$AAo?$AA?5?$AAs?$AAe?$AAt?$AA?5?$AAs?$AAe?$AAt?$AAM?$AAM?$AAC?$AAC?$AAl@| DCB "f"
	DCB	0x0, "a", 0x0, "i", 0x0, "l", 0x0, " ", 0x0, "t", 0x0, "o"
	DCB	0x0, " ", 0x0, "s", 0x0, "e", 0x0, "t", 0x0, " ", 0x0, "s"
	DCB	0x0, "e", 0x0, "t", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, "C"
	DCB	0x0, "l", 0x0, "o", 0x0, "c", 0x0, "k", 0x0, "R", 0x0, "a"
	DCB	0x0, "t", 0x0, "e", 0x0, "(", 0x0, ")", 0x0, 0xd, 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |mmcBusStart| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |mmcBusStart| PROC

; 56   : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M36750|
  00004	e1a04000	 mov       r4, r0

; 57   :     
; 58   : 

; 59   : 
; 60   :     
; 61   :     
; 62   :         if ( !setMMCClockRate(5) )

  00008	e3a00005	 mov       r0, #5
  0000c	eb000000	 bl        setMMCClockRate
  00010	e3500000	 cmp       r0, #0
  00014	1a000004	 bne       |$L36530|

; 63   :     

; 64   : 		{
; 65   : 			RETAILMSG(1, (TEXT("fail to set setMMCClockRate()\r\n")));

  00018	e59f0020	 ldr       r0, [pc, #0x20]
  0001c	eb000000	 bl        NKDbgPrintfW

; 66   : 			return NO;

  00020	e3a00000	 mov       r0, #0

; 73   : }

  00024	e8bd4010	 ldmia     sp!, {r4, lr}
  00028	e12fff1e	 bx        lr
  0002c		 |$L36530|

; 67   : 		}
; 68   : 
; 69   :     
; 70   :     startMMC80Clocks(ctrlNo);

  0002c	e1a00004	 mov       r0, r4
  00030	eb000000	 bl        startMMC80Clocks

; 71   : 
; 72   :     return YES;

  00034	e3a00001	 mov       r0, #1

; 73   : }

  00038	e8bd4010	 ldmia     sp!, {r4, lr}
  0003c	e12fff1e	 bx        lr
  00040		 |$L36754|
  00040	00000000	 DCD       |??_C@_1EA@PJAO@?$AAf?$AAa?$AAi?$AAl?$AA?5?$AAt?$AAo?$AA?5?$AAs?$AAe?$AAt?$AA?5?$AAs?$AAe?$AAt?$AAM?$AAM?$AAC?$AAC?$AAl@|
  00044		 |$M36751|

			 ENDP  ; |mmcBusStart|

	EXPORT	|mmc_init_setup|
	EXPORT	|??_C@_1CI@DBNE@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
	EXPORT	|??_C@_1EC@JFDD@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt@| [ DATA ] ; `string'
	EXPORT	|??_C@_1DC@MMOC@?$AAm?$AAm?$AAc?$AAB?$AAu?$AAs?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf@| [ DATA ] ; `string'
	EXPORT	|??_C@_1CO@PNCP@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAn?$AAo?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@| [ DATA ] ; `string'
	EXPORT	|??_C@_1FK@CDMJ@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAd@| [ DATA ] ; `string'
	IMPORT	|controller_s|
	IMPORT	|mmcReset|

  00000			 AREA	 |.text| { |mmc_init_setup| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$mmc_init_setup|, PDATA, SELECTION=5, ASSOC=|.text| { |mmc_init_setup| } ; comdat associative
|$T36765| DCD	|mmc_init_setup|
	DCD	0x40003c01

  00000			 AREA	 |.rdata| { |??_C@_1CI@DBNE@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CI@DBNE@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AA?$AN?$AA?6?$AA?$AA@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "_", 0x0, "i", 0x0, "n", 0x0, "i"
	DCB	0x0, "t", 0x0, "_", 0x0, "s", 0x0, "e", 0x0, "t", 0x0, "u"
	DCB	0x0, "p", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, 0xd, 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'

  00000			 AREA	 |.rdata| { |??_C@_1EC@JFDD@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EC@JFDD@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "_", 0x0, "i", 0x0, "n", 0x0, "i"
	DCB	0x0, "t", 0x0, "_", 0x0, "s", 0x0, "e", 0x0, "t", 0x0, "u"
	DCB	0x0, "p", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "e", 0x0, "n"
	DCB	0x0, "t", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "l", 0x0, "o"
	DCB	0x0, "o", 0x0, "p", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, 0xd
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string'

  00000			 AREA	 |.rdata| { |??_C@_1DC@MMOC@?$AAm?$AAm?$AAc?$AAB?$AAu?$AAs?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DC@MMOC@?$AAm?$AAm?$AAc?$AAB?$AAu?$AAs?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "B", 0x0, "u", 0x0, "s", 0x0, "S"
	DCB	0x0, "t", 0x0, "a", 0x0, "r", 0x0, "t", 0x0, " ", 0x0, "s"
	DCB	0x0, "u", 0x0, "c", 0x0, "c", 0x0, "e", 0x0, "s", 0x0, "s"
	DCB	0x0, "f", 0x0, "u", 0x0, "l", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
	DCB	0x0					; `string'

  00000			 AREA	 |.rdata| { |??_C@_1CO@PNCP@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAn?$AAo?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CO@PNCP@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAn?$AAo?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "R", 0x0, "e", 0x0, "s", 0x0, "e"
	DCB	0x0, "t", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "n", 0x0, "o"
	DCB	0x0, " ", 0x0, "e", 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r"
	DCB	0x0, " ", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1FK@CDMJ@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAd@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FK@CDMJ@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAd@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "_", 0x0, "i", 0x0, "n", 0x0, "i"
	DCB	0x0, "t", 0x0, "_", 0x0, "s", 0x0, "e", 0x0, "t", 0x0, "u"
	DCB	0x0, "p", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "e", 0x0, "n"
	DCB	0x0, "d", 0x0, ",", 0x0, " ", 0x0, "r", 0x0, "e", 0x0, "t"
	DCB	0x0, "u", 0x0, "r", 0x0, "n", 0x0, " ", 0x0, "v", 0x0, "a"
	DCB	0x0, "l", 0x0, "u", 0x0, "e", 0x0, " ", 0x0, "i", 0x0, "s"
	DCB	0x0, " ", 0x0, "Y", 0x0, "E", 0x0, "S", 0x0, " ", 0x0, 0xd
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |mmc_init_setup| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |mmc_init_setup| PROC

; 97   : {

  00000	e92d43f0	 stmdb     sp!, {r4 - r9, lr}
  00004		 |$M36763|

; 98   :     PDEVICE_CONTROLLER pc;
; 99   :     INT16   ctrlNo;
; 100  :     INT16   nFailures;
; 101  : 
; 102  :     nFailures = 0;
; 103  :     RETAILMSG(1, (TEXT("mmc_init_setup() \r\n")));

  00004	e59f00e0	 ldr       r0, [pc, #0xE0]
  00008	e3a09000	 mov       r9, #0
  0000c	e1a08009	 mov       r8, r9
  00010	eb000000	 bl        NKDbgPrintfW

; 104  :     
; 105  :     
; 106  : 
; 107  :     for (ctrlNo = 0; ctrlNo < N_INTERFACES; ctrlNo++)

  00014	e59f40cc	 ldr       r4, [pc, #0xCC]
  00018	e1a06009	 mov       r6, r9
  0001c	e1a07009	 mov       r7, r9
  00020		 |$L36538|

; 108  :     {
; 109  : 		RETAILMSG(1, (TEXT("mmc_init_setup() enter loop %d\r\n"), ctrlNo));

  00020	e59f00bc	 ldr       r0, [pc, #0xBC]
  00024	e1a01007	 mov       r1, r7
  00028	eb000000	 bl        NKDbgPrintfW

; 110  :         pc = &controller_s[ctrlNo];

  0002c	e0673207	 rsb       r3, r7, r7, lsl #4
  00030	e0845103	 add       r5, r4, r3, lsl #2

; 111  :         pc->controller_number = ctrlNo;
; 112  : 
; 113  :        

; 114  :         if ( mmcBusStart(ctrlNo) )   


  00034	e1a00006	 mov       r0, r6
  00038	e1c561b4	 strh      r6, [r5, #0x14]
  0003c	eb000000	 bl        mmcBusStart
  00040	e3500000	 cmp       r0, #0
  00044	0a000010	 beq       |$L36546|

; 115  :         {
; 116  : 			RETAILMSG(1, (TEXT("mmcBusStart successful\r\n")));

  00048	e59f0090	 ldr       r0, [pc, #0x90]
  0004c	eb000000	 bl        NKDbgPrintfW

; 117  :             

; 118  :             
; 119  :             

; 120  :             

; 121  :             

; 122  :             
; 123  :             if ( MMC_NO_ERROR == mmcReset ( pc, 0x00020000 ) )  


  00050	e3a01802	 mov       r1, #2, 16
  00054	e1a00005	 mov       r0, r5
  00058	eb000000	 bl        mmcReset
  0005c	e3500000	 cmp       r0, #0
  00060	1a000004	 bne       |$L36544|

; 124  :             {
; 125  :                 

; 126  : 				RETAILMSG(1, (TEXT("mmcReset() no error \r\n")));

  00064	e59f0070	 ldr       r0, [pc, #0x70]
  00068	eb000000	 bl        NKDbgPrintfW

; 127  :                 setMMCClockRate(5);

  0006c	e3a00005	 mov       r0, #5
  00070	eb000000	 bl        setMMCClockRate

; 128  :                 

; 129  :             }
; 130  :             else

  00074	ea000004	 b         |$L36546|
  00078		 |$L36544|

; 131  :             {
; 132  :                 nFailures++;

  00078	e1a00808	 mov       r0, r8, lsl #16
  0007c	e1a01840	 mov       r1, r0, asr #16
  00080	e2812001	 add       r2, r1, #1
  00084	e1a00802	 mov       r0, r2, lsl #16
  00088	e1a08840	 mov       r8, r0, asr #16
  0008c		 |$L36546|

; 133  :             }
; 134  :         }
; 135  :         pc->controller_number = -1;

  0008c	e3e00000	 mvn       r0, #0
  00090	e1c501b4	 strh      r0, [r5, #0x14]
  00094	e2870001	 add       r0, r7, #1
  00098	e1a01800	 mov       r1, r0, lsl #16
  0009c	e1a06841	 mov       r6, r1, asr #16
  000a0	e1a00806	 mov       r0, r6, lsl #16
  000a4	e1a07840	 mov       r7, r0, asr #16
  000a8	e3570001	 cmp       r7, #1
  000ac	baffffdb	 blt       |$L36538|

; 136  :     }
; 137  : 
; 138  :     if ( nFailures >= N_INTERFACES )

  000b0	e1a00808	 mov       r0, r8, lsl #16
  000b4	e1a01840	 mov       r1, r0, asr #16
  000b8	e3510001	 cmp       r1, #1

; 139  :         return NO;

  000bc	aa000002	 bge       |$L36533|

; 140  :     RETAILMSG(1, (TEXT("mmc_init_setup() end, return value is YES \r\n")));

  000c0	e59f0010	 ldr       r0, [pc, #0x10]
  000c4	eb000000	 bl        NKDbgPrintfW

; 141  :     return (YES);

  000c8	e3a09001	 mov       r9, #1
  000cc		 |$L36533|

; 139  :         return NO;

  000cc	e1a00009	 mov       r0, r9

; 142  : }

  000d0	e8bd43f0	 ldmia     sp!, {r4 - r9, lr}
  000d4	e12fff1e	 bx        lr
  000d8		 |$L36767|
  000d8	00000000	 DCD       |??_C@_1FK@CDMJ@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAd@|
  000dc	00000000	 DCD       |??_C@_1CO@PNCP@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAn?$AAo?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@|
  000e0	00000000	 DCD       |??_C@_1DC@MMOC@?$AAm?$AAm?$AAc?$AAB?$AAu?$AAs?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf@|
  000e4	00000000	 DCD       |??_C@_1EC@JFDD@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt@|
  000e8	00000000	 DCD       |controller_s|
  000ec	00000000	 DCD       |??_C@_1CI@DBNE@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AA?$AN?$AA?6?$AA?$AA@|
  000f0		 |$M36764|

			 ENDP  ; |mmc_init_setup|

	EXPORT	|mmcConfigDevice|
	IMPORT	|mmcIdentify|

  00000			 AREA	 |.text| { |mmcConfigDevice| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$mmcConfigDevice|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcConfigDevice| } ; comdat associative
|$T36775| DCD	|mmcConfigDevice|
	DCD	0x40000d01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |mmcConfigDevice| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |mmcConfigDevice| PROC

; 162  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M36773|

; 163  :     PDEVICE_CONTROLLER pc;
; 164  :     INT16   phys_drive;
; 165  : 
; 166  :     
; 167  : 
; 168  : #if (N_INTERFACES > 1)
; 169  :     pc = drno_to_controller(driveno);
; 170  :     phys_drive = drno_to_phys(driveno);
; 171  : #else
; 172  :     pc = &controller_s[0];

  00004	e59f4024	 ldr       r4, [pc, #0x24]

; 173  :     phys_drive = driveno;
; 174  : #endif
; 175  : 
; 176  :         
; 177  :         return (mmcIdentify( pc, pc->drive[phys_drive].drv_type, phys_drive ));

  00008	e1a02000	 mov       r2, r0
  0000c	e1a00800	 mov       r0, r0, lsl #16
  00010	e5941000	 ldr       r1, [r4]
  00014	e1a03840	 mov       r3, r0, asr #16
  00018	e0810283	 add       r0, r1, r3, lsl #5
  0001c	e5901010	 ldr       r1, [r0, #0x10]
  00020	e1a00004	 mov       r0, r4
  00024	eb000000	 bl        mmcIdentify

; 178  : }

  00028	e8bd4010	 ldmia     sp!, {r4, lr}
  0002c	e12fff1e	 bx        lr
  00030		 |$L36777|
  00030	00000000	 DCD       |controller_s|
  00034		 |$M36774|

			 ENDP  ; |mmcConfigDevice|

	EXPORT	|receive_data|
	IMPORT	|MMCReceive|

  00000			 AREA	 |.text| { |receive_data| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$receive_data|, PDATA, SELECTION=5, ASSOC=|.text| { |receive_data| } ; comdat associative
|$T36787| DCD	|receive_data|
	DCD	0x40000501
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |receive_data| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |receive_data| PROC

; 202  : {

  00000	e52de004	 str       lr, [sp, #-4]!
  00004		 |$M36785|

; 203  :     
; 204  :         return (MMCReceive((UCHAR *)pc->user_address, dLength, noBlocks, xferMode));

  00004	e5900004	 ldr       r0, [r0, #4]
  00008	eb000000	 bl        MMCReceive

; 205  : }

  0000c	e8bd4000	 ldmia     sp!, {lr}
  00010	e12fff1e	 bx        lr
  00014		 |$M36786|

			 ENDP  ; |receive_data|

	EXPORT	|send_data|
	IMPORT	|MMCTransmit|

  00000			 AREA	 |.text| { |send_data| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$send_data|, PDATA, SELECTION=5, ASSOC=|.text| { |send_data| } ; comdat associative
|$T36798| DCD	|send_data|
	DCD	0x40000501

⌨️ 快捷键说明

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