📄 iospace.inc
字号:
;-----------------------------
GetIOSpaceInfo:
pusha
;;; KenWang [041602] >>>>>>
lea di,SubFuncSelect
mov al,ds:[di]
cmp al,70h
jnz ReGetIOSpaceInfo
mov al,0ffh
mov ds:[di],al
call DisplayFixedIOSpace
jmp short ReGetIOSpaceInfoDisp
;;; KenWang [041602] <<<<<<
ReGetIOSpaceInfo:
lea si,SearchFlag
mov al,ds:[si]
cmp al,KeyF3
jz GetIOSpaceInfoFuncRetF3
call EnterIOSpaceAddress
jc GetIOSpaceInfoFuncRet
ReGetIOSpaceInfoDisp:
call DisplaySelectedFunctionData
cmp ah,KeyF7
jnz ReGetIOSpaceInfoDispF7
call F7ChangeAccessMethod
jmp short ReGetIOSpaceInfoDisp
ReGetIOSpaceInfoDispF7:
cmp ah,KeyPgUp
jz ReGetIOSpaceInfoDisp
cmp ah,KeyPgDn
jz ReGetIOSpaceInfoDisp
cmp ah,KeyF10
jz ReGetIOSpaceInfo
cmp ah,KeyF8
jz ReGetIOSpaceInfoDisp
cmp ah,KeyF3
jz ReGetIOSpaceInfoDisp
;; jmp ReGetIOSpaceInfoDisp
GetIOSpaceInfoFuncRet:
popa
ret
;----------------------
GetIOSpaceInfoFuncRetF3:
call DisplayFixedIOSPort
jmp short ReGetIOSpaceInfoDisp
;----------------------
DisplayFixedIOSPort:
mov dx,IOSpaceAddressPosn-3
call SetCursor
lea si,IOSpaceAddressBuffer
mov ax,ds:[si]
xchg ah,al
call DisplayHex
xchg ah,al
call DisplayHex
ret
;----------------------
EnterIOSpaceAddress:
;;Empty IOSpace address
mov dx,IOSpaceAddressPosn
mov cx,4
call EmptyAddress
;;
mov dx,IOSpaceAddressPosn
mov cx,5
call EnterPortAddress
jc EnterIOSpaceAddressFail
mov dx,IOSpaceAddressPosn
call CalaFixedCursorposn ;Ouput=AX
mov cx,4
call GetPortAddressFromScreen
lea si,IOSpaceAddressBuffer
mov word ptr ds:[si],ax
clc
ret
EnterIOSpaceAddressFail:
cmp ah,KeyF10
jz IOSpaceF10
cmp ah,KeyF7 ; F7
jz EnterIOSpaceAddressF7
cmp ah,KeyPgUp
jz EnterIOSpaceAddress
cmp ah,KeyPgDn
jz EnterIOSpaceAddress
lea di,SubFuncSelect
stc
ret
IOSpaceF10:
lea di,SubFuncSelect
mov al,0ffh
mov ds:[di],al
stc
ret
EnterIOSpaceAddressF7:
call F7ChangeAccessMethod
jmp EnterIOSpaceAddress
;----------------------
; Input : BL=reg
; OutPut : al/ax/eax
IOSpaceRead:
push bx
lea si,IOSpaceAddressBuffer
mov dx,ds:[si]
add dx,bx
lea si,AccessMethod
mov al,ds:[si]
cmp al,2
jz ReadIOSDword
cmp al,1
jz ReadIOSword
in al,dx
jmp short IOSpaceReadExit
ReadIOSword:
in ax,dx
jmp short IOSpaceReadExit
ReadIOSDword:
in eax,dx
IOSpaceReadExit:
pop bx
ret
;-------------------------------
;Input : BL/BX/EBX=DATA
; CH=REG
IOSpaceWrite:
push bx
push cx
lea si,IOSpaceAddressBuffer
mov dx,ds:[si]
add dl,ch
mov eax,ebx
lea si,AccessMethod
mov bl,ds:[si]
cmp bl,2
jae WriteIOSDword
cmp bl,1
jz WriteIOSword
out dx,al
jmp short IOSpaceWriteExit
WriteIOSword:
out dx,ax
jmp short IOSpaceWriteExit
WriteIOSDword:
out dx,eax
IOSpaceWriteExit:
pop cx
pop bx
ret
;-------------------------------
GetIOSAddressFromScreen:
mov dx,IOSpaceAddressPosn
call CalaFixedCursorposn ;Ouput=AX
mov cx,4
call GetPortAddressFromScreen
lea si,IOSpaceAddressBuffer
mov word ptr ds:[si],ax
ret
;-------------------------------
DisplayFixedIOSpace:
mov dx,IOSpaceAddressPosn-03h
call SetCursor
lea si,IOSpaceAddressBuffer
mov ax,ds:[si]
xchg ah,al
call DisplayHex
xchg ah,al
call DisplayHex
ret
;-------------------------------
DisplayIOSpaceaInformation:
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -