Всем привет. Прошу помощи. Хочу записать данные на HDD (ATA) через порты, но получается, так как данные с порта 1F7h все время 0x00. Запускаю под bochs, код (метка: write_MBR_via_port): taz.newffr.com/TAZ/_VX_/vxmags/moonbug10/APPENDIX.ADD/MBR/RW_MBR.ASM Лог bochs: ata0-0: write sectors issued to non-disk Хотя если писать на диск с помощью int 13h то все нормально. Помогите пожалуйста.
nwin Сперва почитай http://ru.osdev.wikia.com/wiki/HDD + обсуждения. На мой взгляд лучше сперва научится считывать данные, а только потом переходить к записи. А диск-то вообще сконфигурирован? Если ты в int13h указываешь DL=80h это еще не означает, что он находится именно на ata[0; 0], да и вообще может быть не ATA по большому счету. Я тебе дал ссылку на статью, там есть пример, от него можешь и отходить. Если предполагается использовать на реальном железе (не древнем) , то стоит учесть, что если писать в стандартные порты 0x1F0/0x170, то очень большая вероятность вообще дисков не увидеть, т. к. надо искать контроллеры на шине PCI и у них получать BAR'ы и только убедившись, что контроллер работает в Legacy стоит писать в стандартные порты (подробности в статье).