реклама на сайте
подробности

 
 
> Работа с отрицательными числами в асме....., Работаю в AVR studio.
Potter
сообщение Feb 5 2007, 15:07
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 27-05-06
Из: Харьков
Пользователь №: 17 508



Само число находится в РОН. Я так понимаю что у каждомго регистра общего назначения имеется где-то бит определяющий знак числа. Но я могу очень грубо ошибаться. Поправте пожалуйста......

Задача собственно простая: В в двух регистрах общего назначения хранится два числа. Числа могут быть положительные а могут быть отрицательные. Надо эти два числа сложить. Подскажите пожалуйста как это зделать?

И еще маленький вопросик... Как работать с портами и как их настраивать я знаю... Вот что-то только у меня не получается нормально работать с портом F в меге 128. Подскажите пожалуйста чего я незнаю....

Заранее огромнешее спасибо за помощь....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Potter
сообщение Feb 5 2007, 15:54
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 27-05-06
Из: Харьков
Пользователь №: 17 508



Проблемма с портом собствено следущая: Мне надо настроить порт на ввод и потом считывать состояния порта.

Настраиваю порт командой

ldi r16,0x00
out DDRF, r16

А компилятор выдает ошибку.

На сщет отрицательных чисел я понял. Старший бит определяет знак. И мы можем хранить число от -127 до 127 в любом РОН.

/*
Для 8-бит числа для преобразования "+" <->"-" есть команда NEG. В АВР, ессно.
*/

/*
Принцип прост. "-1" - 0xff. Отриц. число преобразуется в положительное путём инверсии с прибавлением 1 (и наоборот также). Можете это проверить. Такая операция для байта есть на ASMе AVR. Для двухбайтовых этой командой не пользуются применяют как я описал.
*/

А вот это мне не совсем ясно... Можно чуть чуть по подробнее.... Мне надо выполнять команды только сложения и вычитаня....
Go to the top of the page
 
+Quote Post
mse
сообщение Feb 5 2007, 17:05
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(Potter @ Feb 5 2007, 15:54) *
/*
Принцип прост. "-1" - 0xff. Отриц. число преобразуется в положительное путём инверсии с прибавлением 1 (и наоборот также). Можете это проверить. Такая операция для байта есть на ASMе AVR. Для двухбайтовых этой командой не пользуются применяют как я описал.
*/
А вот это мне не совсем ясно... Можно чуть чуть по подробнее.... Мне надо выполнять команды только сложения и вычитаня....

;О) Ну, типа, так: "0х1" ->"0xfe" ->"0xff". Можно проще: 0-0x1=0xff
Вариаццыи на тему для 16р арифметики:
Код
    com xl
    com xh
    adiw xl,1
...
    sub rx,rx
    sub ry,ry
    sub rx,rsl
    sbc ry,rsh
...

Это смена знака, если непонятно. ;О)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 08:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016