Синтаксическая ошибка во встроенном коде на языке ассемблера

Доброго времени суток!
Редактирую исходник программки на MS Visual С++ с ассемблерными вставками. Программа изначально была написана вроде под Борланд С++, но его у меня нет. По этому переделываю под MS Visual C++. Все ошибки устранил, но одну побороть не могу. А именно:

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”

Программу писал не я. Надеюсь на вашу помощь. Спасибо!

  • Готовые программы Assembler
  • Использование арифметического сопроцессора

Формулировка задачи

14   голосов , оценка 3. 786 из 5

2016, 14:05. Показов 4863. Ответов 2

visual studio 2013 выдал такую ошибку error C2400: синтаксическая ошибка во встроенном коде на языке ассемблера в “код операции”; обнаружено “newline, что это за ошибка?

__________________Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

25 ответов

12 июня 2011 года

889 / / 29. 2009

это pop cx

23 / / 15. 2010

Как правильно записать в VC++ ? Чтобы не ругалось.

7K / / 26. 2011

pop ecx
хотя не уверен.

С компилировалось, но под win 7 результат не запускается

А эта прога случайно не под дос была раньше?

Да, программка для доса. Пойду гуглить.

У доса ж прерывания другие. Естественно, что инструкции вида int. у вас работают некорректно.

Читайте также:  ЛЕССАР ККБ КОДЫ ОШИБОК

Подскажите, что сделать то? Чтобы программа заработала 🙂

эта программа не для доса. в досе это прерывание устанавливаетчитает системное время.

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

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

Программка для сканирования подключенных устройств.

Всем спасибо, буду разбираться с Борландом

1K / / 16. 2003

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

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

Сканер PCI шины, есть исходник, рабочий, но он не компилируется. Код написан на Борланд С++, на VS C++ не компилируется, хотя я и исправил все, вроде как правильно. на экран должно вывести какие устройства подключены к ПК.

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

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

Читайте также:  Коды ошибок для windows phone

Тогда чем откомпилировать код, для ДОСа? Подскажите плз.

13 июня 2011 года

зачем компилировать под дос, если запускаться будет в винде?

С компилировалось, запускается и вроде работает. Спасибо!
Единственно, не показывает устройства.

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

Запускаю в Windows, программа запускается, выводит сообщение, PCI Bios disabled

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

Запускал программу через DOSBox 0. 74, результат точно такой же.

в ДОСе.

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

Тогда подскажите плз, как мне ее в чистом ДОСе запустить? 🙂

Очевидно, что водрузив ДОС на физической машине, тогда вы получите список реальных PCI устройств. Либо водрузив ДОС в виртуальной машине в этом случае вы получите список виртуальный устройств.

PS: В итоге, я бы Вам всеже рекомендовал огласить условия задачи и контекст в котором данная задача выполняется.

Запустил из под ДОСа, работает! Спасибо за советы!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *