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

📄 sru.asm

📁 memory dump,可以將DOS下1M內存的內容全部讀出來,並列印在螢幕上.
💻 ASM
字号:
CRLF	MACRO		;PRINT CR AND LF
	MOV	AH,02H
	MOV	DL,0DH
	INT	21H
	MOV	AH,02H
	MOV	DL,0AH
	INT	21H
ENDM
.MODEL SMALL
.STACK 256
.DATA
	MESS0	DB	'**********************',0DH,0AH,'$'
	MESS1	DB	'*    1 IO PROT       *',0DH,0AH,'$'
	MESS2	DB	'*    2 MEMERY	     *',0DH,0AH,'$'
	MESS3	DB	'*    3 ISA	     *',0DH,0AH,'$'
	MESS4	DB	'*    4 PCI	     *',0DH,0AH,'$'
	MESS5	DB	'*    5 PCI SCAN      *',0DH,0AH,'$'
	MESS6	DB	'*    6 ROUTING TABLE *',0DH,0AH,'$'
	MESS7	DB	'*    0 EXIT          *',0DH,0AH,'$'
	MESS8	DB	'***********************',0DH,0AH,'$'
	MESS9	DB	'PLEASE SELECT THE NUMBER:$'
	MESS10	DB	'ERROR!',0DH,0AH,'$'
	MESS11	DB	'INPUT THE BEGAINING ADDRESS(0000H~FF00H):',0DH,0AH,'$'
	MESS12	DB	'INPUT SEGMENT ADDRESS(0000H~0F000H):',0DH,0AH,'$'
	MESS13	DB	'INPUT ENABLE ADDRESS(0000H~0FFFFH):',0DH,0AH,'$'
	MESS14  DB	'INPUT INDEX PORT ADDRESS:',0DH,0AH,'$'
	MESS15  DB	'INPUT BUS NUMBER:',0DH,0AH,'$'
	MESS16	DB	'INPUT DEVICE NUMBER:',0DH,0AH,'$'
	MESS17	DB	'INPUT FUNCTION NUMBER:',0DH,0AH,'$'
	MESS18	DB	'THE BUS NUMBERS ARE:','$'
	MESS19	DB	'THE DEVICE NUMBERS ARE:','$'
	MESS20	DB	'THE FUNCTION NUMBERS ARE:','$'
	MESS21	DB	'THE RESULTS ARE:',0DH,0AH,'$'
	MESS22	DB	'THE ROUTING TABLE IS:',0DH,0AH,'$'
.586
.CODE
.STARTUP
MAIN	PROC	FAR
;******************************************************************
	CALL	CLRSCR
	MOV	AH,09H
	MOV	DX,OFFSET MESS0
	INT	21H
	MOV	DX,OFFSET MESS1
	INT	21H
	MOV	DX,OFFSET MESS2
	INT	21H
	MOV	DX,OFFSET MESS3
	INT	21H
	MOV	DX,OFFSET MESS4
	INT	21H
	MOV	DX,OFFSET MESS5
	INT	21H
	MOV	DX,OFFSET MESS6
	INT	21H
	MOV	DX,OFFSET MESS7
	INT	21H
	MOV	DX,OFFSET MESS8
	INT	21H
	MOV	DX,OFFSET MESS9
	INT	21H			;PRINT THE MESSAGE
;-----------------------------------------------------------------------------------
	CALL	GETNUM			;GET THE SELECTED NUMBER TO DL
;-----------------------------------------------------------------------------------
        CMP     DL,00H
	JE	EXT
	CMP	DL,01H
	JE	IO
	CMP	DL,02H
	JE	MEM
	CMP	DL,03H
	JE	ISA
	CMP	DL,04H
	JE	PCI
	CMP	DL,05H
	JE	PCISCAN
	CMP	DL,06H
	JE	RT
;-----------------------------------------------------------------------------------
EXT:	CALL	EXIT			;EXIT
IO:	CALL	IOPRINT
MEM:	CALL	MEMPRINT
ISA:	CALL	ISAPRINT
PCI:	CALL	PCIPRINT
PCISCAN:CALL	PCISCANPRINT
RT:	CALL	RTPRINT
MAIN	ENDP
;***********************************************************************************
EXIT	PROC	NEAR
	XOR	AL,AL
	MOV	AH,4CH
	INT	21H
EXIT	ENDP
;***********************************************************************************
;GET THE NUMBER TO SELECT ITEM
GETNUM  PROC    NEAR
        XOR     DX,DX
        MOV     AH,01H
        INT     21H
        SUB     AL,30H
        MOV     DL,AL
        RET
GETNUM  ENDP
;*******************************************************************************
CLRSCR	PROC	NEAR
	PUSHA
	MOV	AH,07H
	MOV	AL,00H
	MOV	BH,07H
	MOV	CH,00H
	MOV	CL,00H
	MOV	DH,24H
	MOV	DL,79H
	INT	10H                    ;CLEAR SCREEN
;------------------------------------------------------------------------------
	MOV	DH,00H
	MOV	DL,00H
	MOV	BH,00H
	MOV	AH,02H
	INT	10H                    ;PLACE CURSOR
	POPA
	RET
CLRSCR	ENDP
;******************************************************************************
;PLACE ADDRESS TO DX
GETADDR	PROC	NEAR
	PUSH	CX
	XOR	DX,DX
CIRCLE:	MOV	AH,01H
	INT	21H
	CMP	AL,0DH
	JZ	BACK
	CMP	AL,20H
	JZ	BACK
	SUB	AL,30H
	JB	ERR
	CMP	AL,0AH
	JB	GET
	SUB	AL,07H
	CMP	AL,0FH
	JBE	GET
	CMP	AL,2AH
	JB	ERR
	SUB	AL,20H
GET:	MOV	CL,04H
	SHL	DX,CL
	XOR	AH,AH
	ADD	DX,AX
	JMP	CIRCLE
ERR:	MOV	AH,09H
	MOV	DX,OFFSET MESS10
	INT	21H
	CALL	EXIT
BACK:	PUSH DX
	CRLF
	POP DX
	POP CX
	RET
GETADDR	ENDP
;*******************************************************************************
;PRINT THE NUMBER IN AL
ASC	PROC	NEAR
	PUSH	CX
	PUSH	DX
	MOV	CH,02H
	MOV	CL,04H
CIR1:   ROL	AL,CL
	MOV	DH,AL
	AND	AL,0FH
	ADD	AL,30H
	CMP	AL,3AH
	JL	PRINT
	ADD	AL,07H
PRINT:	MOV	DL,AL
	MOV	AH,02H
	INT	21H
	MOV	AL,DH
	DEC	CH
	CMP	CH,00H
	JNE	CIR1
	MOV	DL,20H
	MOV	AH,02H
	INT	21H
	POP	DX
	POP	CX
	RET
ASC	ENDP
;******************************************************************************
;PRINT ISA PORT'S REGISTERS
ISAPRINT	PROC	NEAR
	CALL	CLRSCR
	MOV	AH,09H
	XOR	DX,DX
	MOV	DX,OFFSET MESS14
	INT	21H
	CALL	GETADDR
CIR2:	PUSH	DX
	MOV	DH,04H
	MOV	DL,00H
	MOV	BH,00H
	MOV	AH,02H
	INT	10H
	POP	DX
	XOR	AL,AL
	MOV	CH,10H
COLU:	MOV	CL,10H
ROW:	OUT	DX,AL
	INC	DX
	INC	AL
;
	PUSH	AX
	XOR	AL,AL
	IN	AL,DX
	CALL	ASC
	POP	AX
	DEC	DX
	DEC	CL
	CMP	CL,00H
	JNZ	ROW
	PUSH	DX
	PUSH	AX
	CRLF
	POP	AX
	POP	DX
	DEC	CH
	JNZ	COLU
	JMP	CIR2
BACK1:	CALL	EXIT
	RET
ISAPRINT	ENDP
;*****************************************************************************
;PRINT IO REGISTERS
IOPRINT	PROC	NEAR
	CALL	CLRSCR
	MOV	AH,09H
	MOV	DX,OFFSET MESS11
	INT	21H
	CALL	GETADDR
	MOV	BX,DX
CIR3:	PUSHA
	MOV	DH,04H
	MOV	DL,00H
	MOV	BH,00H
	MOV	AH,02H
	INT	10H
	POPA
	MOV	CH,10H
COLU1:	MOV	CL,10H
ROW1:	IN	AL,DX
	INC	DX
	CALL	ASC
	DEC	CL
	JNZ	ROW1
	PUSHA
	CRLF
	POPA
	DEC	CH
	JNZ	COLU1
	MOV	DX,BX
	JMP	CIR3
	RET
IOPRINT	ENDP
;******************************************************************************
MEMPRINT	PROC	NEAR
	CALL	CLRSCR
	MOV	AH,09H
	MOV	DX,OFFSET MESS12
	INT	21H
	CALL	GETADDR
	MOV	ES,DX
	MOV	AH,09H
	MOV	DX,OFFSET MESS13
	INT	21H
	CALL	GETADDR
	MOV	SI,DX
CIR4:	PUSHA
	MOV	DH,06H
	MOV	DL,00H
	MOV	BH,00H
	MOV	AH,02H
	INT	10H
	POPA
	MOV	CH,10H
COLU2:	MOV	CL,10H
ROW2:	MOV	AL,ES:[SI]
	INC	SI
	CALL	ASC
	DEC	CL
	CMP	CL,00H
	JNE	ROW2
	PUSHA
	CRLF
	POPA
	DEC	CH
	CMP	CH,00H
	JNE	COLU2	
	MOV	SI,DX
	JMP	CIR4
	RET
MEMPRINT	ENDP
;******************************************************************************
PCIPRINT	PROC	NEAR
	CALL	CLRSCR
	XOR	EDX,EDX
	MOV	AH,09H
	MOV 	DX,OFFSET MESS15
	INT 	21H
	CALL	GETADDR
	MOV	CL,10H
	SAL	EDX,CL
	MOV	EBX,EDX
	BTS	EBX,31			;MAKE PCI ENABLE
	XOR	EDX,EDX
	MOV 	AH,09H
	MOV	DX,OFFSET MESS16
	INT	21H
	CALL	GETADDR
	MOV	CL,0BH
	SAL	EDX,CL
	ADD	EBX,EDX
	XOR	EDX,EDX
	MOV	AH,09H
	MOV	DX,OFFSET MESS17
	INT	21H
	CALL	GETADDR
	MOV	CL,08H
	SAL	EDX,CL
	ADD	EBX,EDX
	MOV	EAX,EBX			;PLACE PCI NUMBER TO EAX
	MOV	ECX,EBX
	
;------------------------------------------------------------------------------
	MOV	DX,0CF8H
CIR5:	PUSH	ECX
	PUSHA	       			;PLACE THE CURSOR
	MOV 	DH,07H
	MOV	DL,00H
	MOV	BH,00H
	MOV	AH,02H
	INT	10H
	POPA
	MOV	CH,10H
COLU3:	MOV	CL,04H
ROW3:	OUT	DX,EAX
	ADD	DX,04H
	IN	EAX,DX
	SUB	DX,04H
	PUSH	EBX
	PUSH	CX
	MOV	CL,08H
	MOV	CH,04H
CIRPRT:	MOV	EBX,EAX			;SAVE EAX
	AND	EAX,000000FFH
	CALL	ASC			;PRINT AL ON SCREEN
	ROR	EBX,CL
	MOV	EAX,EBX
	DEC	CH
	JNZ	CIRPRT
        POP	CX
        POP	EBX
	ADD	EBX,04H
	MOV	EAX,EBX
	DEC	CL
	JNZ	ROW3
	PUSHA
	CRLF
	POPA
	DEC	CH
	JNZ	COLU3
	POP	ECX
	MOV	EAX,ECX
	MOV	EBX,ECX
	JMP	CIR5
	RET
PCIPRINT	ENDP
;*****************************************************************************
PCISCANPRINT	PROC	NEAR
	CALL	CLRSCR
	MOV	AH,09H
	MOV	DX,OFFSET MESS21
	INT 	21H
	XOR	EAX,EAX
	XOR	EBX,EBX
	XOR	ECX,ECX
	XOR	EDX,EDX
	BTS	EBX,31
CIR6:	MOV	EAX,EBX
	MOV	DX,0CF8H
	OUT	DX,EAX
	MOV	DX,0CFCH
	IN	AX,DX
	ADD	EBX,00000100H		;POINT TO NEXT FUNCTION
	CMP	EBX,080FFFF00H
	JZ	BACK2			
	CMP	AX,0FFFFH
	JZ	CIR6			
;------------------------------------------------------------------------------
	MOV	CL,10H
	SUB	EBX,00000100H
	MOV	EAX,EBX
	SAR	EAX,CL
	PUSHA	
	MOV	AH,09H
	MOV	DX,OFFSET MESS18
	INT	21H
	POPA
	CALL	ASC 			;PINRT BUS NUMBERS
;------------------------------------------------------------------------------
	MOV	CL,0BH
	MOV	EAX,EBX
	AND	EAX,0000F800H
	SAR	EAX,CL
	PUSHA
	MOV	AH,09H
	MOV	DX,OFFSET MESS19
	INT	21H
	POPA
	CALL	ASC			;PRINT DEVICE NUMBERS
;------------------------------------------------------------------------------
	MOV	CL,08H
	MOV	EAX,EBX
	AND	EAX,00000700H
	SAR	EAX,CL
	PUSHA
	MOV	AH,09H
	MOV	DX,OFFSET MESS20
	INT	21H
	POPA
	CALL	ASC			;PRINT FUNCTION NUMBERS
	PUSHA
	CRLF
	POPA
;------------------------------------------------------------------------------
	ADD	EBX,00000100H
	JMP	CIR6
;------------------------------------------------------------------------------

BACK2:	CALL	EXIT			;FINISH SEARCHING
PCISCANPRINT	ENDP
;*****************************************************************************
RTPRINT	PROC	NEAR
	CALL	CLRSCR
	MOV	AH,09H
	MOV	DX,OFFSET MESS22
	INT	21H
	XOR	EAX,EAX
	XOR	EBX,EBX
	XOR	ECX,ECX
	XOR	EDX,EDX
	XOR	SI,SI
	XOR	DI,DI			;PLACE DI=0000H
	MOV	AX,0F000H
	MOV	ES,AX	   		;PLACE ES=0F000H
	MOV	EAX,52495024H
	MOV	CX,4000H		;THE TIMES TO CIRCLE
	CLD				;DI=DI+4
	REPNZ   SCASD  			;FIND THE STRING $PIR
	SUB	DI,04H			;THE ENABLE ADDRESS TO DI
	MOV	DX,DI
	MOV	BX,ES:[DI+6]		;PLACE THE SIZE OF TABLE TO BX
COLU4:	MOV	CL,10H
ROW4:	MOV	AL,ES:[DI]
	CALL	ASC
	INC	DI
	
	DEC	CL
	JNZ	ROW4
	PUSHA
	CRLF
	POPA
	SUB	BX,10H
	JNZ	COLU4
	RET
RTPRINT	ENDP
;*****************************************************************************
.EXIT
END

⌨️ 快捷键说明

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