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

📄 asus1.asm

📁 该程序使用汇编来实现读写pci的功能
💻 ASM
字号:
;find out all PCI device,and list it out
;list item contain num,Bus num,device number,function num,venderID,DeviceID
      .model small
      .data
TITLE1 DB 'Number   Bus       Dev       Fun        VenderID   DeviceID$'
LINE   DB   '-----------------------------------------------------------$'
BUS    DB 0  ;8 bit <=255
DEV    DB 0  ;5 bit <=31
FUN    DB 0  ;3 bit <=7
COUNT  DW 0
      .code
DISP MACRO VAR
      MOV DL,VAR
      MOV AH,6
      INT 21H
ENDM

;This Macro disp some space,and the parameter SpaceNum include the number
DISPSPACE MACRO SpaceNum
      PUSH CX
      MOV CL,SpaceNum
      .WHILE 1              ;loop SpaceNum times,
      DISP ' '              ;each time display one space.
      DEC CL
      .BREAK .IF CL == 0
      .ENDW
      POP CX
ENDM
      .386
      .startup
      LEA DX,TITLE1
      MOV AH,9
      INT 21H
      DISP 0DH
      DISP 0AH

      MOV DX,OFFSET LINE
      MOV AH,9
      INT 21H
      DISP 0DH
      DISP 0AH

START:
      CALL ADRESSGEN
      MOV DX,0CF8H
      OUT DX,EAX
      MOV DX,0CFCH
      IN EAX,DX

      .IF AX != 0FFFFH
      PUSH EAX
      INC COUNT
      DISP ' '
      MOV AX,COUNT
      CALL DISPAX
      DISPSPACE 4
      MOV AH,0
      MOV AL,BUS
      CALL DISPAX
      DISPSPACE 6
      MOV AH,0
      MOV AL,DEV
      CALL DISPAX
      DISPSPACE 6
      MOV AH,0
      MOV AL,FUN
      CALL DISPAX
      DISPSPACE 8
      POP EAX
      CALL DISPAX
      DISPSPACE 7
      MOV CL,16
      ROL EAX,CL
      CALL DISPAX
      DISP 0DH
      DISP 0AH
      .ENDIF

      INC FUN
      .IF FUN>7
      MOV FUN,0
      JMP ADDDEV
      .ENDIF
      JMP START

ADDDEV:
      INC DEV
      .IF DEV>31
      MOV DEV,0
      JMP ADDBUS
      .ENDIF
      JMP START

ADDBUS:
      INC BUS
      .IF BUS!=0
      JMP START
      .ENDIF

      .exit
DISPAX PROC NEAR
      PUSH CX
      PUSH DX
      MOV CL,4
      MOV CH,4
DISPAX1:
      ROL AX,CL
      PUSH AX
      AND AL,0FH
      ADD AL,30H
      CMP AL,'9'
      JBE DISPAX2
      ADD AL,7
DISPAX2:
      MOV AH,2
      MOV DL,AL
      INT 21H
      POP AX
      DEC CH
      JNZ DISPAX1
      POP DX
      POP CX
      RET
DISPAX ENDP

ADRESSGEN PROC NEAR
      PUSH CX
      MOV CL,16
      MOV AH,80H
      MOV AL,BUS
      SHL EAX,CL
      MOV CL,3
      XOR AH,AH
      MOV AH,DEV
      ROL AH,CL
      MOV CL,FUN
      OR AH,CL
      MOV AL,0
      POP CX
      RET
ADRESSGEN ENDP

end

⌨️ 快捷键说明

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