Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что за ошибка? Ошибка при компиляции 
:(
    Опции темы
Tamplier
Дата 1.5.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 23.4.2007

Репутация: нет
Всего: нет



Подскажите, что за ошибка и как с её исправить:

Invalid register combination (e.g [BP+BX]) in function main
PM MAIL   Вверх
anwe
Дата 1.5.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Адресация со смещением из 16-разрядных регистров можно только bx+si, bx+di, bp+si, bp+di

Это сообщение отредактировал(а) anwe - 1.5.2007, 11:25
PM MAIL   Вверх
Tamplier
Дата 1.5.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 23.4.2007

Репутация: нет
Всего: нет



Ещё один вопрос: в одном из самоучителей по ассемблеру прочитал, что команда loop работает только на ближенм расстоянии. Не подскажете поконкретнее: ближнее расстояние - это сколько строк? 
PM MAIL   Вверх
anwe
Дата 1.5.2007, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



127 байт
PM MAIL   Вверх
Tamplier
Дата 1.5.2007, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 23.4.2007

Репутация: нет
Всего: нет



Так и не разобрался с циклом. Программа должна выбирать из массива размерностью n наибольшее число, которое меньше 20.
Вот код. Почему-то цикл не работает, то есть он просто не оканчивается. 
#include <stdio.h>
main()


{
    int n,i,y,q;
    printf("\n\n vvedite rasmernost' n=");
    scanf("%d",&n);
    printf("Vvedite chisla\n");
    scanf("%d",&y);
    asm{
    mov ax,y
    }
    asm{
    mov cx,n
    }
reperat:
    asm{
    jmp o1
    }
o2:     asm{
    loop reperat
    jmp e
    }
o1:    
    scanf("%d",&i);
    asm{
    mov bx,i
    cmp bx,ax
    ja m1
    jb m3
    }
m1:
    asm{
    cmp bx,20
    jb m2
    ja m3
    }    
m2:
    asm{
    mov ax,bx
    jmp m3
    }
m3:     
    asm{
    jmp o2
    }
e:
    asm{
    mov q,ax
    }
printf ("\n max=%d", q);
} 
PM MAIL   Вверх
JAPH
Дата 1.5.2007, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 5
Всего: 23



Может, scanf изменяет CX?


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
anwe
Дата 1.5.2007, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



scanf наверное, считывает? Я не знаю какой API она соответствует, но функции Win32 не сохраняют значения в eax, ecx и edx после их выполнения. Вот и ошибка.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.