Как искать неисправность? Это оказалось несложно. Идея такая:
MOV eax, 55AA00FFh
MOV dx, 110h ; первая 32-х битная посылка
OUT dx, eax
MOV dx, 114h ; вторая 32-х битная посылка
OUT dx, eax
Кстати, тоже интересует вот это. Прием, я так понимаю, позволяет резко сузить область поиска неисправности.
С азами ассемблера я знаком, но вот две вещи никак не могу понять: во-первых, каким образом можно занести данные в регистры процессора на нестартующей материнке?! Во-вторых, где потом проверять исказились они или нет?
Вот что я сам нагуглил по этому поводу. Хоть понимания это мне и не прибавило:
Цитата:
_____У процессора есть адресная шина. К этой шине подключаются устройства (в частности, ОЗУ), так, что если процессор посылает запрос по шине, соответствующее устройство опознаёт, что обращение идёт именно к нему, и как-то реагирует (например, ОЗУ или ПЗУ возвращают содержимое ячейки памяти, а какой-нибудь контроллер может возвратить значение своего регистра).
_____На уровне команд x86 есть различие между пространством адресов памяти и пространством адресов портов ввода/вывода. К первому пространству адресов подключаются ОЗУ, ПЗУ, но и могут быть устройства (например, видеосистема), которые тоже отображаются в памяти. Доступ к содержимому этого адресного пространства происходит при помощи соответствующих адресных регистров и команд пересылки данных между памятью и регистрами. (Например, ассемблерная мнемокоманда MOV с двумя операндами в зависимости от типа источника и приёмника преобразуется в разные машинные коды). Ко второму пространству адресов подключаются разные периферийные устройства, и оно служит для обмена данными между устройствами и процессором. Поэтому каждый адрес этого пространства называется портом ввода/вывода. Доступ к этому пространству осуществляется при помощи команд ввода/вывода IN и OUT.
_____Порты ввода/вывода и ячейки памяти чисто технически (для процессора) представляют собой одно и то же с точки зрения адресации. Но для программиста они идеологически различаются. Память - это хранилище данных. Если ты туда что-то записал, оно там и будет лежать, и его оттуда можно прочитать обратно. Порт - это не хранилище. Т.е. записав что-то в порт, обратно можешь прочитать совсем другое значение, зависящее от работы устройства.
Кстати, тоже интересует вот это. Прием, я так понимаю, позволяет резко сузить область поиска неисправности.
С азами ассемблера я знаком, но вот две вещи никак не могу понять: во-первых, каким образом можно занести данные в регистры процессора на нестартующей материнке?! Во-вторых, где потом проверять исказились они или нет?
Вот что я сам нагуглил по этому поводу. Хоть понимания это мне и не прибавило: