roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 21:45

Часовой пояс: UTC + 4 часа




Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 27 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 09:33 
Не в сети

Зарегистрирован: 06 июн 2009, 20:42
Сообщения: 231
Откуда: Москва
Подскажите, пожалуйста (очень желательно на примерах) как сравнить и как очистить/обнулить 32-разрядное число (3 байта) на Ассемблере?

Прибавлять единицу (1) уже умею:
Код:
lds Temp1, Time
lds Temp2, Time+1
lds Temp3, Time+2
ldi Temp4, 1
add Temp1, Temp4
clr Temp4
adc Temp2, Temp4
adc Temp3, Temp4
sts Time, Temp1
sts Time+1, Temp2
sts Time+2, Temp3


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 09:41 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
32 разрядное число - это 4 байта

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 09:59 
Не в сети

Зарегистрирован: 06 июн 2009, 20:42
Сообщения: 231
Откуда: Москва
имеется то, что в коде выше - трёх байтовый "Time". Нужно его сравнивать с другим числом, чтобы когда он ("Time") будет равен или больше числу "86400", то чтобы происходило его ("Time") обнуление и, например, "ldi Temp_5, 1".

Уже всё написал, кроме этого момента. Подскажите, пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:00 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Точно так же как со сложением, только вместо add/adc - cp/cpc.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:07 
Не в сети

Зарегистрирован: 06 июн 2009, 20:42
Сообщения: 231
Откуда: Москва
Сравнение:
а как мне число "86400" записать? Тоже в 3-х байтовую переменную? Если да, то как это число в неё поместить?
(буду очень рад, если напишите примеры - уже столько искал, но всё бесполезно)

Очищение/обнуление:
правильно ли я понял, что надо так:
Код:
ldi Temp, 0
sts Time, Temp
sts Time+1, Temp
sts Time+2, Temp


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:11 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Переведи в 16-ричную или двоичную систему, разбей на байты.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:15 
Не в сети

Зарегистрирован: 06 июн 2009, 20:42
Сообщения: 231
Откуда: Москва
Боюсь показаться нахлебником, но я честно страрался и во всём, кроме сравнения и обнуления 3-х байтовых переменных, разобрался. Пытался, но не получается, мало информации (точнее, примеров). Пожалуйста, помогите с кодом этого момента, а то жалко, что программа из 300 строк простаивает... (уверен, что опытные быстро с этим справятся, а я уже четвёртые сутки мучаюсь)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:17 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
Ищете примеры для атмела, application notes, - там все есть
пусть одно число лежит в этих регистрах R19:R18:R17:R16
второе в этих R23:R22:R21:R20
Обнуляем первое число
clr r16
clr r17
clr r18
clr r19
записываем туда 86400 (15180 HEX)
ldi r16, $80
ldi r17, $51
ldi r18, $01
сравниваем второе число с первым
cp r20, r16
cpc r21, r17
cpc r22, r18
cpc r23, r19
Затем делается условный переход по анализам флагов Z и/или C


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:22 
Не в сети

Зарегистрирован: 06 июн 2009, 20:42
Сообщения: 231
Откуда: Москва
Спасибо Большое.

Маленький момент хотел бы уточнить:
Цитата:
записываем туда 86400 (15180 HEX)
ldi r16, $80
ldi r17, $51
ldi r18, $01

а r19?
ведь мы его используем в сравнении...может в него что-то записать? а то мало ли кто знает, что там... или там по-умолчанию ноль (0)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:31 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
Нет никакого умолчания. А ноль там потому, что строчкой выше я его туда записал. И он там будет до тех пор, пока я или еще кто туда не запишет что-нибудь другое. Или выключит питание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:47 
Не в сети

Зарегистрирован: 06 июн 2009, 20:42
Сообщения: 231
Откуда: Москва
Не заметил :oops:

СПАСИБО :good:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:50 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
ребят, я традиционно (заранее ведь знаю!!!) не в тему.

но. есть тип - long int. Это 4 байта. обнулить его можно присвоив переменной ноль. Сравнить можно, сравнив две переменные такого типа. Переполнение по третьему байту можно сделать, применив маску.

Код:
volatile long int a=100;
volatile long int b = 27089;
long int mask = 0x00FFFFFF;

while(a<b)
{
a = (a++)&mask;
}

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:56 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
dccharacter писал(а):
ребят, я традиционно (заранее ведь знаю!!!) не в тему

ГрейХантер принципиально хочет на асме. Ну ладно, может мы хоть толпой его убедим, что си рулит :)
Я там в исходной теме немножко ответил, до того как заметил эту. Ну тут я смотрю тоже ответили.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:57 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
А ЧО, В АСМЕ НЕТ ТИПОВ???
мааааааать
бежим все, врассыпную!!!!!!!!

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Возможно ли сравнение 32-разрядных чисел
СообщениеДобавлено: 12 апр 2011, 10:58 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
о прошлогодних птичках. простенький пример:
Код:
uint32_t a = 100, b = 100, c = 0;
if(a == b) c = 200;

сколько вам понадобиться времени, чтоб на асме переделать вот в такой код?
Код:
int a = -100, b = 100, c = 0;
if(a < b) c = 99;

а если это будет не пара строчек, а сотни или тысячи? вы просто задумайтесь, на что вы тратите столько времени, когда для ваших текущих задач асм не даст никаких преимуществ. за то время, пока вы узнаёте, как 2 числа сравнить и присвоить легко можно было весь каркас программы написать, а может и больше.


Последний раз редактировалось Angel71 12 апр 2011, 11:00, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 27 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO