Вообще идет число вида 0xABCD - его делим на AB и CD, которые передаем через ком-порт. Задача: получить обратно 0xABCD на компе имея AB и CD средствами Вижал Бейсика. Кстати там они сложены в строку...
x = Asc(Mid$(buffer, 1, 1))
x = x + Asc(Mid$(buffer, 2, 1)) * 256
Это нормально работает с положительными, но для отрицательных он в упор не хочет работать. На Си я мог легко делать со знаковым битом все что угодно, как и с любым другим. А тут видимо не пускает. Да и битовые операции работают как-то не так. Not например вместо инверсии переводит в отрицательное.
![Shocked :shock:](http://roboforum.ru/images/smilies/shok.gif)