📄 5530rw.asm
字号:
;**************************************************************************
;*
;* 5530RW.ASM
;*
;* Copyright (c) 1999 National Semiconductor Corporation.
;* All Rights Reserved.
;*
;* Function:
;* Register read and write routines for the 5530.
;*
;* $Revision:: 1 $
;*
;**************************************************************************
.486P
INCLUDE DEF.INC
INCLUDE MACROS.INC
INCLUDE PORT80.INC
INCLUDE 5530.INC
_TEXT SEGMENT PUBLIC use16 'CODE'
ASSUME CS:SEGGROUP
;**************************************************************************
;*
;* Cy55x0RegRead32
;*
;* Entry:
;* EAX=80009000h + Func + Reg
;*
;* Exit:
;* EDX=32 bit value read
;*
;* Destroys:
;* EAX,EDX
;*
;**************************************************************************
Cy55x0RegRead32 PROC
mov dx, 0CF8h
out dx, eax ; Point to register specified
mov dx, 0CFCh
in eax, dx ; Read register into EDX
mov edx, eax
jmp bx
Cy55x0RegRead32 ENDP
;**************************************************************************
;*
;* Cy55x0RegWrite32
;*
;* Entry:
;* EAX= 80009000h + Func + Reg
;* EDX= Value to write
;*
;* Exit:
;*
;* Destroys:
;* EAX, ECX, DX
;*
;**************************************************************************
Cy55x0RegWrite32 PROC
mov ecx, edx
mov dx, 0CF8h
out dx, eax ; Point to register
mov dx, 0CFCh
mov eax, ecx
out dx, eax ; Write EDX to register specified
jmp bx ; return to calling address
Cy55x0RegWrite32 ENDP
;**************************************************************************
;*
;* Cy55x0RegRead16
;*
;* Entry:
;* EAX= 80009000h + Func + Reg (Reg must be on word boundary)
;*
;* Exit:
;* DX= 16 bit value read
;*
;* Destroys:
;* EAX, DX
;*
;**************************************************************************
Cy55x0RegRead16 PROC
mov dx, 0CF8h
out dx, eax ; Point to register specified
and eax, 02h
mov dx, 0CFCh
or dx, ax ; set word address
in ax, dx ; Read register into EDX
mov dx, ax
jmp bx
Cy55x0RegRead16 ENDP
;**************************************************************************
;*
;* Cy55x0RegWrite16
;*
;* Entry:
;* EAX= 80009000h + Func + Reg
;* DX= Value to write
;*
;* Exit:
;*
;* Destroys:
;* EAX, CX, DX
;*
;**************************************************************************
Cy55x0RegWrite16 PROC
mov cx, dx ; save data
mov dx, 0CF8h
out dx, eax ; Point to register
and eax,02h
mov dx, 0CFCh
or dx, ax ; set word address
mov ax, cx
out dx, ax ; Write AX to register specified
jmp bx ; return to calling address
Cy55x0RegWrite16 ENDP
;**************************************************************************
;*
;* Cy55x0RegRead8
;*
;* Entry:
;* EAX=80009000h + Func + Reg
;*
;* Exit:
;* DL=8 bit value read
;*
;* Destroys:
;* EAX, DX
;*
;**************************************************************************
Cy55x0RegRead8 PROC
mov dx, 0CF8h
out dx, eax ; Point to register specified
and eax,03h
mov dx, 0CFCh
or dx, ax ; set byte address
in al, dx ; Read register into al
mov dl, al
jmp bx
Cy55x0RegRead8 ENDP
;**************************************************************************
;*
;* Cy55x0RegWrite8
;*
;* Entry:
;* EAX= 80009000h + Func + Reg
;* DL= Value to write
;*
;* Exit:
;*
;* Destroys:
;* EAX, ECX, DX
;*
;**************************************************************************
Cy55x0RegWrite8 PROC
mov ecx, edx ; save data to write
mov dx, 0CF8h
out dx, eax ; Point to register
and eax,03h
mov dx, 0CFCh
or dx, ax
mov al, cl
out dx, al ; Write EDX to register specified
jmp bx ; return to calling address
Cy55x0RegWrite8 ENDP
_TEXT ENDS
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -