📄 usb_hwa.asm
字号:
; /*********************************************************************
; * SEGGER MICROCONTROLLER SYSTEME GmbH *
; * Solutions for real time microcontroller applications *
; **********************************************************************
; * *
; * (C) 2003 SEGGER Microcontroller Systeme GmbH *
; * *
; * Internet: www.segger.com Support: support@segger.com *
; * *
; **********************************************************************
;
; ----------------------------------------------------------------------
; File : USB_HWA.asm
; Purpose : Assembly routines
; ---------------------------END-OF-HEADER------------------------------
;
NAME MiscA(16)
RSEG CODE(2)
Public USB_HW_memcpy, USB_HW_Send64, USB_HW_Read64
; ***************************************************************
; *
; * USB_HW_memcpy
; *
; ***************************************************************
;
; void USB_HW_memcpy(void * pDest, void * pSrc, unsigned NumBytes) {
; A0: pDest
; R0: pSrc
; R2: NumBytes
USB_HW_memcpy:
ADD.B #-0x1, SP
PUSHM A1,R3,R1
MOV.W R2, R3 ; NumBytes
MOV.W A0, A1 ; pDest
MOV.W R0, A0 ; pSrc
mov.b #0, R1H ; high byte source addr
; Copy solitary byte
push R3
and #1, R3
smovf.b ; while (--R3) (R1H:A0++) -> (A1++)
pop R3
; Copy words as required
sha.w #-1, R3
smovf.w ; while (--R3) (R1H:A0++) -> (A1++)
POPM A1,R3,R1
ADD.B #0x1, SP
RTS
; ***************************************************************
; *
; * USB_HW_Send64
; *
; ***************************************************************
;
; void USB_HW_Send64(OS_U16 * pData);
; A0: pData
USB_HW_Send64:
PUSHM A1
mov.w #2e4h, A1
mov.w [A0] ,[A1]
mov.w 2[A0] ,[A1]
mov.w 4[A0] ,[A1]
mov.w 6[A0] ,[A1]
mov.w 8[A0] ,[A1]
mov.w 10[A0] ,[A1]
mov.w 12[A0] ,[A1]
mov.w 14[A0] ,[A1]
mov.w 16[A0] ,[A1]
mov.w 18[A0] ,[A1]
mov.w 20[A0] ,[A1]
mov.w 22[A0] ,[A1]
mov.w 24[A0] ,[A1]
mov.w 26[A0] ,[A1]
mov.w 28[A0] ,[A1]
mov.w 30[A0] ,[A1]
mov.w 32[A0] ,[A1]
mov.w 34[A0] ,[A1]
mov.w 36[A0] ,[A1]
mov.w 38[A0] ,[A1]
mov.w 40[A0] ,[A1]
mov.w 42[A0] ,[A1]
mov.w 44[A0] ,[A1]
mov.w 46[A0] ,[A1]
mov.w 48[A0] ,[A1]
mov.w 50[A0] ,[A1]
mov.w 52[A0] ,[A1]
mov.w 54[A0] ,[A1]
mov.w 56[A0] ,[A1]
mov.w 58[A0] ,[A1]
mov.w 60[A0] ,[A1]
mov.w 62[A0] ,[A1]
POPM A1
RTS
; ***************************************************************
; *
; * USB_HW_Read64
; *
; ***************************************************************
;
; void USB_HW_Read64(OS_U16 * pData);
; A0: pData
USB_HW_Read64:
PUSHM A1
mov.w #2e6h, A1
mov.w [A1], [A0]
mov.w [A1], 2[A0]
mov.w [A1], 4[A0]
mov.w [A1], 6[A0]
mov.w [A1], 8[A0]
mov.w [A1], 10[A0]
mov.w [A1], 12[A0]
mov.w [A1], 14[A0]
mov.w [A1], 16[A0]
mov.w [A1], 18[A0]
mov.w [A1], 20[A0]
mov.w [A1], 22[A0]
mov.w [A1], 24[A0]
mov.w [A1], 26[A0]
mov.w [A1], 28[A0]
mov.w [A1], 30[A0]
mov.w [A1], 32[A0]
mov.w [A1], 34[A0]
mov.w [A1], 36[A0]
mov.w [A1], 38[A0]
mov.w [A1], 40[A0]
mov.w [A1], 42[A0]
mov.w [A1], 44[A0]
mov.w [A1], 46[A0]
mov.w [A1], 48[A0]
mov.w [A1], 50[A0]
mov.w [A1], 52[A0]
mov.w [A1], 54[A0]
mov.w [A1], 56[A0]
mov.w [A1], 58[A0]
mov.w [A1], 60[A0]
mov.w [A1], 62[A0]
POPM A1
RTS
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -