回复 4楼 zjsxwc
多谢ZJSXWC兄的关心,现在我已经独立解决了。这个问题的关键点在于命令的顺序不能颠倒
如下
.MODEL SMALL
.386
.CODE
START:
CLD
MOV AX,40000H ;PRD DESCRIPTOR
MOV ES,AX
MOV DI,0
MOV EAX,20000H
STOSD
MOV EAX,80000200H
STOSD
MOV DX,0E094H
;PRD ADDRESS
MOV EAX,40000H
OUT DX,EAX
MOV AL,1 ;STATUS REG
MOV DX,0E092H
OUT DX,AL
INC DX
MOV AL,0
OUT DX,AL
INC DX
OUT DX,AL
INC DX
OUT DX,AL
INC DX
MOV AL,0E0H
OUT DX,AL
INC DX
MOV AL,0C9H ;DMA READ CMD
OUT DX,AL
MOV AL,0
MOV DX,0E090H
OUT DX,AL
MOV DX,0E092H
MOV AL,6
OUT DX,AL
MOV AL,9
MOV DX,0E090H ;READ START
OUT DX,AL
MOV AH,4CH
INT 21H
END START
;该DEMO用于将硬盘MBR扇区读入绝对地址2000:0处,大家可以试是,结尾为55AA
关于各自寄存器的来源遍历PCI总线,唯一确定的OFFSET 0BH,0AH值为01 00(硬盘)