Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MS V C++ 2010 - Синтаксическая ошибка во встроенном коде на ассемблере

51K
12 июня 2011 года
xiwnik
23 / / 15.03.2010
Доброго времени суток!
Редактирую исходник программки на MS Visual С++ с ассемблерными вставками.
Программа изначально была написана вроде под Борланд С++, но его у меня нет. По этому переделываю под MS Visual C++. Все ошибки устранил, но одну побороть не могу.
А именно:
Код:
_asm{
        mov ax,0x0B103   // найти устройство PCI заданного класса
        mov si,0         // индекс (порядковый номер) устройства
        mov cx, clas   
        push cx    
                      mov ch, subclas
        mov cl, interface
        push cx    

        db 0x66,0x59   // получаем так сказать ECX
       
                      int 0x1A       // выполняем прерывание
        mov b_h,bh        // читаем
        mov b_l,bl        // данные
        mov a_h,ah        // в
        mov s_i,si       //  переменные
        }


Ругается на: db 0x66,0x59

Ошибка: error C2400: синтаксическая ошибка во встроенном коде на языке ассемблера в "код операции"; обнаружено "constant"

Программу писал не я. Надеюсь на вашу помощь. Спасибо!
316
12 июня 2011 года
Alm3n
889 / / 29.05.2009
это pop cx
51K
12 июня 2011 года
xiwnik
23 / / 15.03.2010
Как правильно записать в VC++ ? Чтобы не ругалось.
277
12 июня 2011 года
arrjj
1.7K / / 26.01.2011
pop ecx
хотя не уверен ..
51K
12 июня 2011 года
xiwnik
23 / / 15.03.2010
С компилировалось, но под win 7 результат не запускается... х(
277
12 июня 2011 года
arrjj
1.7K / / 26.01.2011
А эта прога случайно не под дос была раньше?
51K
12 июня 2011 года
xiwnik
23 / / 15.03.2010
Да, программка для доса.
Пойду гуглить...
278
12 июня 2011 года
Alexander92
1.1K / / 04.08.2008
У доса ж прерывания другие. Естественно, что инструкции вида int ... у вас работают некорректно.
51K
12 июня 2011 года
xiwnik
23 / / 15.03.2010
Подскажите, что сделать то? Чтобы программа заработала :)
316
12 июня 2011 года
Alm3n
889 / / 29.05.2009
эта программа не для доса. в досе это прерывание устанавливает\читает системное время.
Цитата:
INT 1A - PCI BIOS v2.0c+ - FIND PCI CLASS CODE
AX = B103h
ECX = class code (see also #F0085,#00878)
bits 31-24 unused
bits 23-16 class
bits 15-8 subclass
bits 7-0 programming interface
SI = device index (0-n)
Return: CF clear if successful
CF set on error
AH = status (00h,86h) (see #00729)
00h successful
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 func)
86h device not found
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
the meanings of BL and BH on return were exchanged between the initial
drafts of the specification and final implementation
all devices sharing the same Class Code may be enumerated by
incrementing SI from 0 until error 86h is returned


наверное, нужно будет делать драйвер.

51K
12 июня 2011 года
xiwnik
23 / / 15.03.2010
Программка для сканирования подключенных устройств.
51K
12 июня 2011 года
xiwnik
23 / / 15.03.2010
Всем спасибо, буду разбираться с Борландом... х(
316
12 июня 2011 года
Alm3n
889 / / 29.05.2009
ты можешь написать драйвер, который разрешит использование прерываний, если никто не напишет, как можно вызвать 1Ah из ring 3.
http://www.cyberguru.ru/programming/visual-cpp/visual-cpp-vxd-creation.html
http://www.cyberguru.ru/programming/visual-cpp/virtual-drivers-basics.html
260
12 июня 2011 года
Ramon
1.1K / / 16.08.2003
Цитата: xiwnik
Всем спасибо, буду разбираться с Борландом... х(



Мальчик/Девочка (RM/PM) - какая разница.

Вы лучше обозначте то, что вам надо.

51K
12 июня 2011 года
xiwnik
23 / / 15.03.2010
Сканер PCI шины, есть исходник, рабочий, но он не компилируется...
Код написан на Борланд С++, на VS C++ не компилируется, хотя я и исправил все, вроде как правильно.
т.е. на экран должно вывести какие устройства подключены к ПК.
260
12 июня 2011 года
Ramon
1.1K / / 16.08.2003
Цитата: xiwnik
Сканер PCI шины, есть исходник, рабочий, но он не компилируется...
Код написан на Борланд С++, на VS C++ не компилируется, хотя я и исправил все, вроде как правильно.
т.е. на экран должно вывести какие устройства подключены к ПК.



Это вам надо сделать под какую платформу Windows али DOS?

PS: А работать ваша программа будет только в ДОСе, причем откомпилированная для него же, VS C++ компилирует как бы для Windows.

51K
12 июня 2011 года
xiwnik
23 / / 15.03.2010
Тогда чем откомпилировать код, для ДОСа? Подскажите плз.
260
12 июня 2011 года
Ramon
1.1K / / 16.08.2003
Цитата: xiwnik
Тогда чем откомпилировать код, для ДОСа? Подскажите плз.



Каким-нибудь Borland C++ 3.1

316
13 июня 2011 года
Alm3n
889 / / 29.05.2009
зачем компилировать под дос, если запускаться будет в винде?
51K
13 июня 2011 года
xiwnik
23 / / 15.03.2010
С компилировалось, запускается и вроде работает. Спасибо!
Единственно, не показывает устройства.
260
13 июня 2011 года
Ramon
1.1K / / 16.08.2003
Цитата: xiwnik
С компилировалось, запускается и вроде работает. Спасибо!
Единственно, не показывает устройства.



Вопрос все тот же, про мальчика с девочкой. Где вы ее запускаете в DOSе или в Windows'е?

51K
13 июня 2011 года
xiwnik
23 / / 15.03.2010
Запускаю в Windows, программа запускается, выводит сообщение, PCI Bios disabled

mov _ah,ah // если в ah 0 то идем дальше, иначе вывод сообщения PCI Bios disabled

Запускал программу через DOSBox 0.74, результат точно такой же.
260
13 июня 2011 года
Ramon
1.1K / / 16.08.2003
Цитата: Ramon
работать ваша программа будет только в ДОСе.

В чистом ДОСе.

PS: Возвращаемся к условию задачи?

51K
13 июня 2011 года
xiwnik
23 / / 15.03.2010
Тогда подскажите плз, как мне ее в чистом ДОСе запустить? :)
260
13 июня 2011 года
Ramon
1.1K / / 16.08.2003
Очевидно, что водрузив ДОС на физической машине, тогда вы получите список реальных PCI устройств. Либо водрузив ДОС в виртуальной машине в этом случае вы получите список виртуальный устройств.

PS: В итоге, я бы Вам всеже рекомендовал огласить условия задачи и контекст в котором данная задача выполняется.
51K
13 июня 2011 года
xiwnik
23 / / 15.03.2010
Запустил из под ДОСа, работает! Спасибо за советы!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог