|
|
|
| Как известно, символьные устройства осуществляют ввод-вывод посимвольно, т.е. побайтно. К примеру, принтер, подключённый через com или lpt порт, принимает данные и интсрукции побайтно. А что если подавать ему побитно? Возможно ли это? Например, отправить полтора байта через com-порт? | |
|
|
|
|
|
|
|
для: dump
(05.12.2011 в 11:45)
| | Сначала давайте без LPT-порта. Да можно, только все-равно придется использовать 2 байта... тут штука в том, что байт - это 8 бит, размер регистра 8-битного компьютера. Потом появились 16-битные компьютеры, т.е. их регистры были уже 16-бит - 2 байта (или слово), потом появились 32-битные компьютеры - размер их регистра 4 байта (двойное слово). Т.е. мало того, что вы 2 байта посылаете, вместо 1.5, так в компьютере они путешествуют в виде пакета из 4 байт, более того, зачастую и в exe-коде 1.5 байта будут храниться с дополнительными 2.5 пустыми байтами - так называемое выравнивание границы, чтобы процессор быстрее данные обрабатывал. Т.е. все эти пересылки ограничиваются процессором и размером его регистра - записать вы туда можете что угодно, хоть один бит, но система воспринимает размер регистра как базовый. Поэтому мы и говорим о 32-битных и 64-битных системах - это минимальные объемы, если вы используете меньшие, вы проигрываете в скорости.
PS А возвращаясь именно к LPT-порту, если мне память не изменяет - он же параллельный? Т.е. для данных используется 8 отдельных проводов (остальные обслуживающие), каждый из которых соответствует отдельному биту, ни что не мешает вам не посылать по 7 проводам сигнал, а посылать только по одному - это будет передача одного бита. Более того полтора байта одновременно послать не получится, он за раз только 1 байт принимает, но информацию, заключенную в 1.5 байта - вполне, только это будет 2 отдельных байта, переданные в два разных момента времени. Тут о половине байта бессмысленно говорить - у него байт физически задан проводами. | |
|
|
|