![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
Приветствую!
Давненько мне не приходилось писать на асме в cи. Но вот время настало и что-то он ругается на мои метки. Видимо я чего-то не дописываю. В книге ничего не нашел.
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Tatarin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 5.1.2004 Где: Россия Репутация: нет Всего: нет |
если собирать под VC++7 то тут случаются две ошибки:
1) _asm вместо asm 2) в строке
происходит ошибка error C2432: illegal reference to 16-bit data in 'second operand' это он ругается на di. Если поменять на edi (32-битный) то все собирается без проблем. |
|||
|
||||
| Custodian |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 4.12.2003 Где: г. Киров Репутация: нет Всего: нет |
Все дело в том, что по не понятным причинам, _asm{} не хочет работать с метками.
Можно немного модифицировать код, но не потерять его рабочести: char n1[10]={0,0,1,2,3,4,5,6,7,8}; char n2[10]={0,0,8,7,6,5,4,3,2,1}; char n3[10]={0}; char len=10; void addition() { _asm { lea si, n1+9; lea di, n2+9; mov cx, 10;} for(int i=10;i>0;i--) _asm{lodsb; adc al, [di]; aaa; stosb;} } void main() { addition(); } Иногда не работает int i=10; в for, можно вынести к заголовку подпрограммы. |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
А чем отличается три оператора:
asm{} _asm{} __asm{} ? ? ? А в вижуал с++ 6.0 есть отличия? -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
метки надо исключать из блоков асм т.е. писать их вне, разрывая блоки
|
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
neutrino, си - это извращенный язык ;) Гораздо извращенне асма:
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
Да, блин. Вот [censored 6] фигня. Я тут запутался, глянь код. Что я не так делаю:
Я хотел сложить два числа в двух строках, а он что-то не то делает. Даже не знаю что. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
1. Судя по всему, ты пишешь на VC. Там очень легко сделать асм-дамп (в режиме дизассемблера). Сдампь то, что делает в результате компиллятор. У меня сильное подозрение, что надо писать не mov eax,[N1] а mov eax,N1 (получить указатель из стека). Приведи его тута ;)
2. Я точно не понимаю, что за числа ты складываешь. Приведи пример аргументов и ожидаемого тобой результата ;) -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |