Здравствуйте, пишу свою программу по установке пароля на жесткий диск. Честно говоря не уверен в разделе, но более подходящего не нашел. При разработке столкнулся с проблемой, у меня после посылки команды SECURITY SET PASSWORD или SECURITY UNLOCK в регистре состояния устанавливается флаг ошибки, а почему понять не могу. Архив с программой я прикладываю, функции посылки команды находятся в файле HDD.inc Код (Text): ;******************************************** ;*Передает жесткому диску одну из команд ;*SET PASSWORD; DISABLE PASSWORD; UNLOCK ;*Входные параметры передаются через глобальные ;* переменные и регисты: ;* ChannelNumber - номер канала (1 или 2); ;* DiskNumber - номер диска на канале (0 или 1). ;* Блок данных считывается из массива Sector512. ;*Вход - код команды, передается в регистре bl ;************************************************* PROC SecSendCommandToHDD near pushad push ES ;Конфигурируем Sector512 call GetPassword lea bx, [Sector512] mov [word ptr bx], 0000h ; Задать режим CHS mov [ATAAddressMode],0 ; Послать команду идентификации устройства mov [ATAFeatures],0 mov [ATAHead],0 mov [ATACommand],bl call SendCommandToHDD ;процедура корректна и работает cmp [DevErrorCode],0 ;проверить код ошибки jne @@End ;закончить, сохранив код ошибки ; Ожидать готовность HDD mov AX,0 mov ES,AX mov DX,[ATABasePortAddr] add DX,7 ;адрес регистра состояния @@WaitCompleet: ; Проверить время выполнения команды mov EAX,[ES:046Ch] sub EAX,[OpTime] cmp EAX,MaxHDDWaitTime ja @@Error1 ;ошибка тайм-аута ; Проверить готовность in AL,DX test AL, 80h jnz @@WaitCompleet test AL,1 ;состояние сигнала ERR jnz @@Error6 and AL,0c8h ;состояние сигнала BSY & DRQ & DRDY cmp AL,40h;состояние сигнала BSY = 0 & DRDY =1 & DRQ = 0 jnz @@WaitCompleet ;Послать блок данных контроллеру mov AX,DS mov ES,AX mov DI,offset Sector512 mov DX,[ATABasePortAddr] ;регистр данных mov CX,256 ;число посылаемых слов rep outsw ;послать блок данных jmp short @@End ; Записать код ошибки @@Error1: mov [DevErrorCode],1 jmp short @@End @@Error6: mov [DevErrorCode],6 MShowDecByte 16,15,AL @@End: pop ES popad ret ENDP SecSendCommandToHDD Может я как то не правильно ожидаю/проверяю готовность HDD?? Если у кого есть исходники программ устанавливающих пароль или которые посылают блок данных HDD можете скинуть?