|
|
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
Всем привет. Прошу помощи в нелёгком освоении asm. Пытаюсь освоить работу с оборудованием через порты из asm. Вот написал почти 1 в 1 со статьи, но не работает (на выходе получаю в памяти вместо первого сектора кучу FFFFh) Что я делаю не так как надо? буду очень благодарен за любые подсказки и ссылочки. Итак, сам код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2012, 15:30 |
|
||
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
P.S. Кстати, может ли как-то на результат повлиять то, что я сижу с ноута? (хотя сам я думаю что нет) Может ли как-то повлиять то, что винчестер на 300GB, то есть может адрес должен быть 32-битным? но когда как с ними работать... Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2012, 15:33 |
|
||
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
я неправильно вопрос задал? )) Хоть что-то подскажите пожалуйста... какие-нить предложения... А то не могу понять ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2012, 17:07 |
|
||
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
Програмёр, это не будет работать в современных операционках. Надо из дос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2012, 17:29 |
|
||
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
?, дак в том то и дело, что запускаю то я в досе... винда мне вообще не позволила бы записать что либо в порт) но за ответ спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2012, 17:46 |
|
||
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
Вообщем, кажется понемногу проясняется... На одном умном сайте прочитал, что обслуживание sata устройств (каковым и является мой hdd) немного отличается от устройств IDE(ATA). Там вроде как всё просходит по тому же принципу, только базовый порт имеет другой номер, а все остальные располагаются относительно него по тем же "смещениям". так вот... также там написано как сканировать шину PCI на расположение устройств (то есть нахождение базовых портов устройств)... Жалко всё на английском... я его плохо знаю. Вот ссылочка PCI bus info and code from a programmer's perspective. Вообщем буду разбираться, переводить... но если у кого есть ссылочки на русском, или какие-нить идеи/подсказки, буду очень благодарен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 13:00 |
|
||
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
Програмёр, Добрый день. Меня интересует вы решили эту проблему? Сейчас передо мной стоит такая же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 15:46 |
|
||
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
NeoMatrixRoomПрограмёр, Добрый день. Меня интересует вы решили эту проблему? Сейчас передо мной стоит такая же. Добрый. По ссылке выше есть хорошая документация по получению данных об устройствах. Когда разбирался, смог выйти на нужное устройство, считать все данные об устройстве, но вот с чтением данных из устройства у меня всё же были какие-то проблемы (то ли мне hdd говорил всегда что он занят, толи ... не помню уже). Вообщем из-за недостатка времени (хватало на поесть, поспать и поработать) забросил. Но в принципе за 2-3 полноценных дня тему раскурить можно полностью (тем более если не на асме) ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 16:02 |
|
||
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
Не на асме. Можно на словах, что делать :) Можно на С. Но времени в обрез осталось, 12 часов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 16:05 |
|
||
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
NeoMatrixRoomНе на асме. Можно на словах, что делать :) Можно на С. Но времени в обрез осталось, 12 часов :) Если время так ограничено, могу предположить, что есть какое-то явное задание. Просто разобраться в теме за такое время будет сложно (я в инете документацию неделю искал, пока нашёл нормальное описание PCI интерфейса, структуру описания функций устройств и т.д.). Могу предложить посмотреть в сторону bios функций. Он прерывания предлагает для работы с устройствами и всё такое. просто для меня это был чисто спортивный интерес :). Просто сейчас мало что подсказать смогу, дело то было год назад... я уже последовательность действий забыл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 16:48 |
|
||
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
Програмёр, Да задание вывести информацию о SATA диске. Использовать нужно порты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 17:24 |
|
||
|
asm и низкоуровневое чтение сектора hdd
|
|||
|---|---|---|---|
|
#18+
NeoMatrixRoomПрограмёр, Да задание вывести информацию о SATA диске. Использовать нужно порты. ссылка вышеBUS EQU 0 DEV EQU 7 FN EQU 3 VEN_ID EQU 0 ; vendor ID=PCI regs 0,1 PCI_INDEX EQU 0CF8h PCI_DATA EQU 0CFCh .386 mov ax, 8000h ; set bit 31 (after shift) or al, BUS ; add in bus number shl eax, 16 mov ax, DEV shl ax, 11 ; slide device # up to bits 15:11 mov al, FN or ah, al ; add function into bits 10:8 mov al, VEN_ID cli mov dx, PCI_INDEX out dx, eax ; send our request out mov dx, PCI_DATA in eax, dx ; read back 32bit value. sti Remember that PCI registers are 8 bit values. The above read from PCI_DATA reads a 32bit value, or 4 PCI registers. In the above example, after the read, EAX = device ID, AX = vendor ID. Per the PCI specification, the vendor ID is always registers 0 and 1, and the device ID is registers 2 and 3. Thus, AL=register 0, AH=register 1, EAL=register 2, EAH=register 3. Так можно получить инфу о любом устройстве. осталось только отыскать устройство с нужной функцией (то есть sata hdd... как я понимаю это делается по id устройства... не помню уже. я свой хард по производителю искал :) ). Тут пример для получения первых четырёх байт структуры (id производителя и id устройства... там ещё есть куча всего. Надо искать инфу). больше подсказать не могу к сожалению... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2012, 18:24 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38096360&tid=1341988]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
152ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 448ms |

| 0 / 0 |
