roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 фев 2025, 18:11

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




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 09 фев 2005, 04:01 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
Хочу вот спросить про переменные в асемблере
Как записать значение больше 255? регистр вроде не подойдет, у него то всего 255 значений,
а как зарезервировать и сохранить(а потом и считать)в память определенное
кол-во байтов? (если это возможно конечно) Вот читаю команды AVR'ов и вижу обозначение
.BYTE - оно подходит для моей задачи??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 фев 2005, 12:20 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Может быть я не доконца постиг дзена программирования на ASM ;)
но кажется никак, точнее по частям.

Есть правда ещё 16 битные регистры Х,У,Z но они кажется только для адресации.

Вот приер работы с большим числом.
Код:
;****************************************************************************************************
;*
;*           Подпрограмма вычисления квадратного корня для 24-ти битного аргумента                  *
;*         (c) 1998 Alexander Trush   http://troosh.pp.ru   troosh (at) kbotd : ru
;*
;
;   Вы можете свободно использовать, распространять, модифицировать этот
;   код до тех пор, пока вы указываете моё авторство и распространяете
;   это требование. Кроме того, я хотел бы получать уведомление о
;   применении этого кода по e-mail (troosh (at) kbotd : ru).

sqrt24:         ldi     mask,1         ; Используем маску в регистре, т.к. команды EORI нет...
      ldi     count,12      ; Последний бит значения корня не требует специального
                  ; подхода - есть запас от потери битов аж 4 бита
      clr16   work_h, work_l
      clr16   dist_h, dist_l      ; Очистка накопителя значения корня


sqrt24_1:       cpi     src_h, 64
      cpc     work_l, dist_l
      cpc     work_h, dist_h
      brcs    sqrt24_2
        subi  src_h, 64
        sbc   work_l, dist_l
        sbc   work_h, dist_h
sqrt24_2:       rol     dist_l      
      rol     dist_h      
      eor     dist_l, mask      ; Инверсия младшего бита значания корня,
                  ; т.к. при заёме должны писать 0, и 1 при отсутствии
      lsl     src_l         ; Сдвиг аргумента на 2 бита
      rol     src_m         ; work_h:work_l:src_h:src_m:src_l <<= 2
      rol     src_h
      rol     work_l
      rol     work_h

      lsl     src_l
      rol     src_m
      rol     src_h
      rol     work_l
      rol     work_h

      dec     count         ; Получили ли все биты значения корня кроме последнего?..
      brne    sqrt24_1


      cp      dist_l, work_l
      cpc     dist_h, work_h
      adc     dist_l, src_m      ; Команды ADCI нет, а src_m точно здесь равен 0
      adc     dist_h, src_m
      ret
;******************************************************************************


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

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


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

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


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

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