Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR-AS: замена сложения вычитанием
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
ARV
емеется массив uint8_t envelope[256];

делаю обработчик прерываний на ассемблере, в котором надо взять из этого массива байт. так как команды сложения с константой не существует, я делаю так:
Код
.extern offset // это смещение, оно 16-битное, но старший байт == 0
.extern envelope

lds    YL, offset
lds    YH, offset+1
subi    YL, lo8(-envelope)
sbci    YH, hi8(-envelope)
ld    r16, Y+
в итоге получаю сообщение об ошибке:
Цитата
../isr.S:49: Error: can't resolve `0' {*UND* section} - `envelope' {*UND* section}
в чем дело? что за ерунда?
нечитатель
Код
    subi    YL, low(65536 - envelope)
    sbci    YH, high(65536 - envelope)


О! В смысле ааа... Тыком:
Код
    subi    YL, low(- envelope)
    sbci    YH, high(- envelope)
"минус" отдельное слово, а не часть имени.

... а теперь даже и без пробела получилось. Развлечение нашёл.

У меня просто студио.
Владивольт
написать на C и посмотреть, что в листинге.
Вот фрагмент листинга одного из моих проектов.
Код
subi r22,lo8(-(abNum2Mask))
sbci r23,hi8(-(abNum2Mask))
ARV
Цитата(Владивольт @ Sep 18 2011, 23:44) *
написать на C и посмотреть, что в листинге.
Вот фрагмент листинга одного из моих проектов.
Код
subi r22,lo8(-(abNum2Mask))
sbci r23,hi8(-(abNum2Mask))
спасибо! хоть и не понятно, отчего сработало и почему раньше не срабатывало, но сработало - и ладненько! sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.