![]() |
|
![]() ![]() ![]() |
|
viktorchik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.3.2007 Репутация: нет Всего: нет |
Здравствуйте люди добрые! Помогите разобраться с небольшой проблеммкой и объяснить что я делаю не так есть код на Borland Turbo C++ 3.0 со вставками ASMa, по замыслу эта программа должна считать сумму цифр введеного пользователем числа, но при компилинге вылазиет ошибка " Undefined label 'met1'" и указатель прыгает на конец кода. Я не могу понять что ему нужно и как обозначить эту метку чтобы все работало. Всем заранее спасибо.
|
|||
|
||||
Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: нет Всего: 37 |
По моему у борланда все локальные метки с собаки должны были начинаться... Хотя не помню точно. попробуй
|
|||
|
||||
viktorchik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.3.2007 Репутация: нет Всего: нет |
К сожелению такой вариант не подходит все равно на метку met1 ругается
|
|||
|
||||
sgi1981 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: 2 Всего: 10 |
Есть такая особенность - символы 1 и l иногда путают.
-------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
|||
|
||||
viktorchik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.3.2007 Репутация: нет Всего: нет |
В том то и дело, что путаницы с символами нет! Именно возникает ошибка " Undefined label 'met1'" а не какой нить синтаксис эрор!
|
|||
|
||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
>> 004. BC не хочет понимать метки во встроенном ассемблере
> Q: BC не хочет понимать метки в ассемблерной вставке - компилятор сказал, > что не определена энта самая метка. Пришлось определить метку за > пределами ASM-блока. Может быть есть более корректное решение? A: (Michael Yutsis) - 27.12.95 Загляни в исходники RTL от BC++ 3.1 и yвидишь там нечто красивое, например: #define I asm //........ I or si,si I jz m1 I mov dx,1 m1: I int 21h и т.д. A: (Vadim Gaponov) - 06.01.96 Есть - компилировать с ключом '-B' (via Tasm) aka '#pragma inline'. Правда, при этом могут возникнуть другие проблемы: если присутствуют имена read и _read (например), то компилятор в них запутается ![]() BTW: Было замечено, что борланд (3.1, например) иногда генерит разный код в зависимости от ключа -B. Как правило, при его наличии он становится "осторожнее" - начинает понимать, что не он один использует регистры. A: (Victor Pomortseff) - 23.02.96 В документации по BC 3.1 я нашёл то место, где описано использование меток в inline assembler. Borland C++ version 3.1 Programmer's Guide. Chapter 12. BASM and inline assembly, Using jump instructions and labels, p.406. You can use any of conditional and unconditional jump inctructions, plus the loop instructions, in inline assembly. They are only valid inside a function. Since no labels can be defined in the `asm` statements, jump instruction must use C `goto` labels as the object of the jump. If the label is too far away, the jump will be automatically converted to a long-distance jump. Direct far jumps cannot be generated. In the following code, the jump goes to the C `goto` label "a". int x(){ a: /* This is the goto label "a" */ ... asm jmp a /* Goes to label "a" */ ... } Indirect jumps are also allowed. To use an indirect jump, you can use a register name as the operand of the jump instruction. источник Соответственно, пример кода в сабже будет:
-------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |