读写指令
1、in OPRD1,OPRD2
将数据从外围设备读入,OPRD2为端口号,OPRD1为cpu内部寄存器
2、in OPRD1,OPRD2
将数据写入外围设备,OPRD2为cpu内部寄存器,OPRD1为外围设备端口号
本质
端口是由外围设备提供的接口,本质上是寄存器,属于外围设备
主硬盘
主硬盘控制器端口共有8个,端口号分别为
0x1f0:16位端口,数据传输端口
0x1f1:错误类型返回
0x1f2:8位端口,设置读取的扇区数量
0x1f3:8位端口,扇区号低0~7位设置端口(LBA28模式)
0x1f4:8位端口,扇区号低8~15位设置端口(LBA28模式)
0x1f5:8位端口,扇区号低16~23位设置端口(LBA28模式)
0x1f6:8位端口,低四位设置扇区号低24~27位设置端口(LBA28模式)
0x1f6:高四位,第7、5位固定为1;第6位 置0表示CHS模式,置1表示LBA模式;第4位 置0表示主硬盘,置1表示从硬盘
0x1f7:8位端口,命令/状态端口;向这个端口传输0x20就表示 请求硬盘读,随后硬盘会每时每刻将它的状态信息传输到这个端口,一旦硬盘准备好了就可以开始传输数据;第7位 置0表示硬盘不忙,置1表示硬盘忙;第3位 置0表示未准备好与主机交换数据,置1 表示准备好与硬盘交换数据;第0位表示前一条命令执行错误,具体原因查看0x1f1端口
从硬盘
从硬盘控制器端口共有8个,端口号分别为0x170,0x171,0x172,0x173,0x174,0x175,0x176,0x177