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

📄 pci-256.asm

📁 DOS下读取PCI配置寄存器的汇编源代码。
💻 ASM
字号:
.386
STACK SEGMENT USE16 STACK 
      DB 100 DUP(?)
STACK ENDS

DATA  SEGMENT USE16
;DATA0	DW  0
DATA1	DW  0
NUMBER  DD 8000f900H
CONFIG	DW 128 DUP(?)
DATA  ENDS

CODE  SEGMENT USE16
      ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN     PROC NEAR
START:	 MOV  AX,DATA
	 MOV  DS,AX
	 MOV  CX,64
	 LEA  SI,CONFIG
A1:	 MOV  EAX,NUMBER
	 MOV  DX,0CF8H
	 OUT  DX,EAX
         MOV  DX,0CFCH
	 IN   EAX,DX
	 MOV  [SI],EAX
	 ADD  SI,4
	 ADD  NUMBER,4
	 LOOP A1	     ;get PCI configure register value (0-255)
	 LEA  SI,CONFIG      ;display the are 256 register's value

A2:	 MOV  CX,8
	 MOV  BX,DATA1	     ;display offset address
	 CALL BINIHEX
	 MOV  BX,3AH	     ;display :
	 CALL PRINT
A3:	 MOV  BX,20H	     ;display SP
	 CALL PRINT
	 MOV  DI,SI
	 ADD  DI,DATA1
	 MOV  BX,[DI]
	 CALL BINIHEX
	 ADD  DATA1,2
	 CMP  DATA1,256
	 JZ   EXIT
	 LOOP A3
	 MOV  BX,0DH
	 CALL PRINT
	 MOV  BX,0AH
	 CALL PRINT
	 JMP  A2


EXIT:	 MOV  AH,4CH
         INT  21H
MAIN	 ENDP

BINIHEX  PROC NEAR
         PUSH EAX
         PUSH EBX
         PUSH ECX
         PUSH EDX
	 MOV  CH,4
ROTATE:  MOV  CL,4
	 ROL  BX,CL
	 MOV  AL,BL
	 AND  AL,0FH
	 ADD  AL,30H
	 CMP  AL,3AH
	 JL   PRINTIT
	 ADD  AL,7H
PRINTIT: MOV  DL,AL
	 MOV  AH,2
	 INT  21H
	 DEC  CH
	 JNZ  ROTATE
         POP  EDX
         POP  ECX
         POP  EBX
         POP  EAX
	 RET
BINIHEX  ENDP

PRINT	 PROC NEAR
	 PUSH  EAX
	 PUSH  EDX
	 MOV   DL,BL
	 MOV   AH,2
	 INT   21H
	 POP   EDX
	 POP   EAX
	 RET
PRINT	 ENDP

CODE	 ENDS
	 END MAIN

⌨️ 快捷键说明

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