Твой софтовый форум > Тематические форумы > Программирование

C/C++ и assembler

,

C/C++ и assembler

Дата публикации: 13.07.2006 - 15:26
Штуцер
Такая задачка: есть некий прибор, подключеный к паралельному порту. Нужна функция, считывающая данные с порта в массив. И маленькая, но неприятная особенность - считывать нужно побитово, не побайтово. Сама прога написана на С++. Думаю, без асемблера здесь никак. Буду очень благодарен за помощь.
yah
QUOTE(Штуцер @ 12.07.2006 - 15:08)
Сама прога написана на С++
*



Может выложишь искходники, все-таки легче будет.
CraZy_JumPeR
В С++ есть битовые поля.

QUOTE
Элементы структуры или объединения могут быть определены как битовые поля шириной от 1 до 16 бит, знаковые или беззнаковые. Общая форма описания битового поля:
имя_типа  имя_поля : ширина;
Допустимые типы битовых полей - int, char, unsigned int, unsigned char. Ширина битового поля - целое число от 0 до 16. Идентификатор поля может быть пропущен, в этом случае заданное число бит размещается в памяти, но будет недоступно. Для знаковых полей старший левый бит интерпретируется как знак. Над элементами битовых полей не может быть выполнена операция взятия адреса &.
Пример:
struct  Date
{ unsigned int Day:5;
  unsigned int Mon:4;
  unsigned int Year:7;} Start ={1,9,98};


Другой вопрос, чё с ними делать.:) Обратиться к ним мне так и не удалось, сколько я ни пыхтел, хотя я далеко не высшая программистская инстанция. Может тебе и удастся.
Да и нужно это было для курсача, так что выход был таким:
CODE
unsigned char* DecToBin(int Dec, int k)
{
unsigned char* res;
res = new unsigned char[k];
for (int i = 0; i < k; i++) res[i] = 0;
int lg;
for (; Dec > 0; )
{
 lg = (log(Dec)/log(2) + 0.000001);
 res[k - lg - 1] = 1;
 Dec -= pow(2,lg);
}
return res;
}

Штуцер
Спасибо, CraZy_JumPeR, полезная инфа. Но все-таки, есть в С++ функция, считывающая с порта 1 бит? А если нет, то как реализовать ее, сишную, на асемблере?
ZaHack
QUOTE(Штуцер @ 13.07.2006 - 15:18)
... Но все-таки, есть в С++функция, считывающая с порта 1 байт? ...
*



QUOTE
...Нужна функция, считывающая данные с порта в массив. И маленькая, но неприятная особенность - считывать нужно побитово, не побайтово.


Так тебе нужно побайтово или все-таки побитово??? Определись наконец!


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке: C/C++ и assembler
SoftoRooM © 2004-2024