+ -
当前位置:首页 → 问答吧 → IO端口输入输出数据

IO端口输入输出数据

时间:2011-07-30

来源:互联网

我希望能够直接通过io端口读取磁盘块的数据,使用的工具是linux下的nasm编译器,运行的时候会出现segment fault,我不知是不是因为寄存器的原因,各位大侠帮忙拉,,,,偶是新手阿,代码如下
section .bss
  buffer: resb 512
section .text
global _start
_start:
  mov dx,1f6h ; 要读入的磁盘号及磁头号
  mov al,0a0h ;磁盘0,磁头0  
  out dx,al 这点出现的异常

  mov dx,1f2h ;要读入的扇区数量
  mov al,1
  out dx,al

  mov dx,1f3h ;要读入的扇区号
  mov al,1
  out dx,al

  mov dx,1f4h ;要读入的柱面的低8位
  mov al,0 ;柱面低8位为0
  out dx,al

  mov dx,1f5h ;柱面高2位
  mov al,0  
  out dx,al

  mov dx,1f7h ;命令端口
  mov al,20h ;尝试读取扇区
  out dx,al

still_going:
  in al,dx
  test al,8 ;扇区缓冲是否准备好
  jz still_going

  mov cx,512/2
  mov eax,buffer
  mov edi,eax
  1,6 Top

作者: henujava   发布时间: 2011-07-30

可能是我写的程序在linux下没有访问端口的权限,所以报错了

作者: henujava   发布时间: 2011-07-30

你在nt下也不行的

作者: mydo   发布时间: 2011-07-30

在虚拟机下练习吧。

作者: mydo   发布时间: 2011-07-30

R0下面才可以对某一些端口读写

作者: WJN92   发布时间: 2011-07-30