Re[3]: Короткий доступ к сектору
От: Stanky  
Дата: 22.11.04 21:54
Оценка:
> Короткий доступ- это не прямой доступ к памяти. Есть ли такой, и если
> есть, то как он действует?
>
PIO!!!

Вот кусок кода считывающий 20-й сектор Primary канала Master устройства:
;Базовый адрес 1F0h, канал 1 - Primary
;Ожидание готовности HDD к приему команды
    ;Регистр номера головки/номера диска
    mov dx,1F6h
    ;        1   0                0     1
    ;1, LBA/CHS, 1, Master/Slave, LBA(27-24)
    mov al,11100000b
    out dx,al
;Ожидать, пока диск не будет готов
    ;Регистр состояния/команд
    mov dx,1F7h
@@WaitHDReady:
    ;Прочитать регистр состояния
    in al,dx
    ;Проверить состояние сигнала BSY
    test al,80h
    jnz @@WaitHDReady
    ;Проверить состояние сигнала DRQ
    test al,08h
    jnz @@WaitHDReady

;Загрузить команду в регистры контроллера
    ;Регистр количества секторов
    mov dx,1F2h
    mov al,1
    out dx,al

    ;Регистр LBA(7-0)
    mov dx,1F3h
    ;Нужно считать 20-й сектор
    mov al,20
    out dx,al

    ;Регистр LBA(15-8)
    mov dx,1F4h
    mov ax,0
    out dx,al

    ;Регистр LBA(23-16)
    mov dx,1F5h
    mov al,0
    out dx,al

    ;Регистр номера головки/номера диска
    mov dx,1F6h
    ;        1   0                0     1
    ;1, LBA/CHS, 1, Master/Slave, LBA(27-24)
    mov al,11100000b
    out dx,al

;Послать команду в контроллер
    ;Регистр состояния/команд
    mov dx,1F7h
    ;Комманда ATA 20h - прочитать сектор в режиме PIO
    mov al,20h
    out dx,al

;Ожидать готовность данных HDD
    ;Регистр состояния/команд
    mov dx,1F7h
@@WaitCompleet:
    ;Проверить готовность
    in al,dx
    ;Состояние сигнала BSY
    test al,80h
    jnz @@WaitCompleet
    ;Состояние сигнала DRQ
    test al,08h
    jz @@WaitCompleet

;Принять сектор
    ;Настраиваем буфер приёма данных на 0000:7C00 (es:di)
    xor ax,ax
    mov es,ax
    mov di,7C00h
    ;Регистр данных
    mov dx,1F0h
    ;Число считываемых слов
    mov cx,256
    ;Считываем сектор
    rep insw
Posted via RSDN NNTP Server 1.9 gamma
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.