cld ATA/ATAPI:Status レジスタ からの読み出しのための in 命令 条件ジャンプ命令を2回実行するぐらいのウェイト ATA/ATAPI:Device レジスタへマスタ/スレイブを選択するために書きこむ out 命令 call 命令1回ぐらいのウェイト mov cx,64h (PentinumIII 500MHz のPC場合?) loop me(笑) ATA/ATAPI:Status レジスタ からの読み出しのための in 命令 条件ジャンプ命令を2回とret命令1回を実行するぐらいのウェイト ATA/ATAPI:Features レジスタへ書きこむ out 命令 ジャンプ命令を1回実行するぐらいのウェイト ATA/ATAPI:Sector Count レジスタへ転送セクタ数を書きこむ out 命令 ジャンプ命令を1回実行するぐらいのウェイト ATA/ATAPI:Sector NumberレジスタへLBAアドレス下位8bitを書きこむ out 命令 ジャンプ命令を1回実行するぐらいのウェイト ATA/ATAPI:Cylinder-lowレジスタへLBAアドレス8-15bitを書きこむ out 命令 ジャンプ命令を1回実行するぐらいのウェイト ATA/ATAPI:Cylinder-highレジスタへLBAアドレス16-23bitを書きこむ out 命令 ジャンプ命令を1回実行するぐらいのウェイト ATA/ATAPI:Head-Number/DeviceレジスタへLBAアドレス24-27bitとマスタ/スレイブの選択を書きこむ out 命令 call,ret,条件ジャンプ命令を各1回、実行するぐらいのウェイト ATA/ATAPI:Command レジスタへ"Read multiple"コマンドを送出するための out 命令 call命令を3回,ret 命令を3回,ジャンプ命令を2回、実行するぐらいのウェイト ATA/ATAPI:Error レジスタ からの読み出しのための in 命令 cli ***** 読み出し先メモリのアドレスが4で割り切れる場合(それ意外は略) ***** es:di に読み出し先メモリ先頭アドレス cx に 80h*転送セクタ数 dx に ATA/ATAPI:Data レジスタ のI/O アドレス Rep Insd ..... sti