Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пн июл 14, 2025 04:39:58

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 296, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт ноя 25, 2016 20:08:55 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
Andrew Martin писал(а):
ptr128 писал(а):
Дайте возможность компоновщику потрудиться )

Не каждый ассемблер умеет генерить отладочную информацию в формате, поддерживаемом линкером, а отладка на уровне исходного кода очень удобна.


Плохо читали тему. Речь идет о GNU AVR ассемблере, который все это умеет. Отлаживайтесь на уровне исходного кода, сколько влезет.

Andrew Martin писал(а):
на относительно больших проектах

А разве код на МК не может быть частью большого проекта, включающего в себя и код для других МК, и код для X86?

_________________
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт ноя 25, 2016 21:10:22 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2917
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18739
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
Серый_ писал(а):
А как конвертится число, лежащее в двух регистрах в 4-х значное десятичное (0000, с разложением в 4 регистра)?

вот пример из моих файлов:
Код:
;--- преобразование двоичного числа, (не более 9999), в 4 десятичных цифры ---
;--- двоичное число в R11:R10, на выходе 4 десятичные цифры в R10:R11:R12:R13 в ASCII коде---
bin_to_4_decimal_digit:
clr R13
clr R12            ; очистим старшие байты
ldi R17, high(10)
ldi R16,  low(10)
rcall div_32_16_16_16
mov R13, R12
rcall div_16_8_8_8
mov R12, R11
clr R11            ; очистим старший байт
rcall div_16_8_8_8
ldi R18, '0'            ; символ "0"
add R13, R18
add R12, R18
add R11, R18
add R10, R18
ret

;--- деление 16 бит в R11:R10 на 8 бит в R16 ---
;------ целая часть в R10, остаток в R11 -------
div_16_8_8_8:
ldi R18, 8            ; делаем 8 циклов сдвига делимого/результата
div_16_8_8_8a:
lsl R10
rol R11
brcs div_16_8_8_8b
cp R11, R16
brcs div_16_8_8_8c      ; если меньше, то пропускаем вычитание
div_16_8_8_8b:
sub R11,R16
inc R10
div_16_8_8_8c:
dec R18
brne div_16_8_8_8a
ret

;--- деление 32 бита в R13:R12:R11:R10 на 16 бит в R17:R16 ---
;--------- целая часть в R11:R10, остаток в R13:R12 ----------
div_32_16_16_16:
ldi R18, 16            ; делаем 16 циклов сдвига делимого/результата
div_32_16a:
lsl R10
rol R11
rol R12
rol R13
brcs div_32_16b
cp R12, R16
cpc R13, R17
brcs div_32_16c   
div_32_16b:         ; если меньше, то пропускаем вычитание
sub R12,R16
sbc R13,R17
inc R10
div_32_16c:
dec R18
brne div_32_16a
ret

на выходе получаем 4 десятичные цифры в ASCII коде, готовые к выводу на дисплей.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт ноя 25, 2016 21:42:48 
Это не хвост, это антенна
Аватар пользователя

Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22
Сообщений: 1368
Откуда: Беларусь
Рейтинг сообщения: 0
Может так проще и быстрее?
Спойлер.equ AtBCD0 = 4 ;address of r4 для подпрограммы BIN2_BCD
.equ AtBCD2 = 6 ;address of r6

BIN_BCD:
; Input (r17:r16) output BCD number (r6:r5:r4:r3:r2).
; High registers used: 4(r16,r17,r18,r19)
; Pointers used: Z

ldi r18,16 ;Init loop counter
clr r6 ;clear result (3 bytes)
clr r5
clr r4
clr ZH ;clear ZH (not needed for AT90Sxx0x)
bBCDx_1:
lsl r16 ;shift input value
rol r17 ;through all bytes
rol r4 ;
rol r5
rol r6
dec r18 ;decrement loop counter
brne bBCDx_2 ;if counter not zero
; распределим числа по ячейкам
ldi r18,0x0F
mov r2,r4
and r2,r18
swap r4
mov r3,r4
and r3,r18
mov r4,r5
and r4,r18
swap r5
and r5,r18
ret ;return

bBCDx_2:
ldi r30,AtBCD2+1 ;Z points to result MSB + 1
bBCDx_3:
ld r19,-Z ;get (Z) with pre-decrement
subi r19,-$03 ;add 0x03
sbrc r19,3 ;if bit 3 not clear
st Z,r19 ;store back
ld r19,Z ;get (Z)
subi r19,-$30 ;add 0x30
sbrc r19,7 ;if bit 7 not clear
st Z,r19 ;store back
cpi ZL,AtBCD0 ;done all three?
brne bBCDx_3 ;loop again if not
rjmp bBCDx_1

_________________
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт ноя 25, 2016 22:16:29 
Вымогатель припоя
Аватар пользователя

Карма: 3
Рейтинг сообщений: 253
Зарегистрирован: Вт июн 25, 2013 18:45:07
Сообщений: 606
Рейтинг сообщения: -1
ptr128 писал(а):
Речь идет о GNU AVR ассемблере, который все это умеет. Отлаживайтесь на уровне исходного кода, сколько влезет.


На "гномике" его преимущества и заканчиваются :))) По сравнению с тем же fasm-ом GAS убог по части макроязыка. Вероятнее всего потому что он не ориентирован на использование в качестве самостоятельного инструмента.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт ноя 25, 2016 22:52:20 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: -2
Вы не священнослужитель, случайно, раз догмами оперируете? Мне как то всегда казалось, что сочетание CPP и макроязыка для X86 представляет собой очень мощный и гибкий механизм.

_________________
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб ноя 26, 2016 05:45:06 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2917
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18739
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
dr.doc писал(а):
Может так проще и быстрее?
ссылка на аналогичный алгоритм была недавно (сразу после задания вопроса).
да, по времени выполнения - быстрее, чем у меня.
но по длине кода - многократно длиннее, чем у меня. учитывая, что приведенные мной подпрограммы деления используются в других местах моих программ, то собственно преобразованием чисел является только этот код:
Спойлер
Код:
bin_to_4_decimal_digit:
clr R13
clr R12                    ; очистим старшие байты
ldi R17, high(10)
ldi R16,  low(10)
rcall div_32_16_16_16
mov R13, R12
rcall div_16_8_8_8
mov R12, R11
clr R11                    ; очистим старший байт
rcall div_16_8_8_8
ldi R18, '0'               ; символ "0"
add R13, R18
add R12, R18
add R11, R18
add R10, R18
ret

невооруженным глазом видно, что длина кода значительно короче.
к тому же, у меня вообще не используется обращение к ОЗУ.

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


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб ноя 26, 2016 05:48:21 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4329
Откуда: Ижевск
Рейтинг сообщения: 0
Цитата:
"Всё познается в сравнении"
Проверил программы преобразования "двоичного числа, (не более 9999), в 4 десятичных цифры"
Для проверки выбрано одно число 9876
dr.doc
777 тактов
Starichok51
397 тактов
адаптированная программа отсюда
294 такта
Вложение:
bcd.asm [4.18 KiB]
Скачиваний: 440

Пытался узнать как работает преобразователь у Atmel. Бросил, слишком много нужно дефайнить. Может для ценителей символики будет интересно. :)

10:38
Проверил программу от Atmel. Получилось
297 тактов
Спойлер
Код:
   .include "m8def.inc"
.def   rmp=r20

.def   rBin1L=r21
.def   rBin1H=r22

.def   rBin2L=r24
.def   rBin2H=r25
; Bin2ToBcd5
; ==========
; converts a 16-bit-binary to a 5-digit-BCD
; In: 16-bit-binary in rBin1H:L, Z points to first digit
;   where the result goes to
; Out: 5-digit-BCD, Z points to first BCD-digit
; Used registers: rBin1H:L (unchanged), rBin2H:L (changed),
;   rmp
; Called subroutines: Bin2ToDigit

GO:
   LDI   XH,HIGH(RAMEND)
   LDI   XL,LOW(RAMEND)
   OUT   SPH,XH
   OUT   SPL,XL

   LDI   rBin1H,HIGH(9876)
   LDI   rBin1L,LOW(9876)
   RCALL   BIN_BCD
   RJMP   GO
BIN_BCD:
Bin2ToBcd5:
   CLR   ZH
   LDI   ZL,10
;   push rBin1H ; Save number
;   push rBin1L
;   ldi rmp,HIGH(10000) ; Start with tenthousands
;   mov rBin2H,rmp
;   ldi rmp,LOW(10000)
;   mov rBin2L,rmp
;   rcall Bin2ToDigit ; Calculate digit
   ldi rmp,HIGH(1000) ; Next with thousands
   mov rBin2H,rmp
   ldi rmp,LOW(1000)
   mov rBin2L,rmp
   rcall Bin2ToDigit ; Calculate digit
   ldi rmp,HIGH(100) ; Next with hundreds
   mov rBin2H,rmp
   ldi rmp,LOW(100)
   mov rBin2L,rmp
   rcall Bin2ToDigit ; Calculate digit
   ldi rmp,HIGH(10) ; Next with tens
   mov rBin2H,rmp
   ldi rmp,LOW(10)
   mov rBin2L,rmp
   rcall Bin2ToDigit ; Calculate digit
   st z,rBin1L ; Remainder are ones
   sbiw ZL,4 ; Put pointer to first BCD
;   pop rBin1L ; Restore original binary
;   pop rBin1H
   ret ; and return
;
; Bin2ToDigit
; ===========
; converts one decimal digit by continued subraction of a
;   binary coded decimal
; Used by: Bin2ToBcd5, Bin2ToAsc5, Bin2ToAsc
; In: 16-bit-binary in rBin1H:L, binary coded decimal in
;   rBin2H:L, Z points to current BCD digit
; Out: Result in Z, Z incremented
; Used registers: rBin1H:L (holds remainder of the binary),
;   rBin2H:L (unchanged), rmp
; Called subroutines: -
;
Bin2ToDigit:
   clr rmp ; digit count is zero
Bin2ToDigita:
   cp rBin1H,rBin2H ; Number bigger than decimal?
   brcs Bin2ToDigitc ; MSB smaller than decimal
   brne Bin2ToDigitb ; MSB bigger than decimal
   cp rBin1L,rBin2L ; LSB bigger or equal decimal
   brcs Bin2ToDigitc ; LSB smaller than decimal
Bin2ToDigitb:
   sub rBin1L,rBin2L ; Subtract LSB decimal
   sbc rBin1H,rBin2H ; Subtract MSB decimal
   inc rmp ; Increment digit count
   rjmp Bin2ToDigita ; Next loop
Bin2ToDigitc:
   st z+,rmp ; Save digit and increment
   ret ; done
.exit


Последний раз редактировалось akl Сб ноя 26, 2016 08:42:13, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб ноя 26, 2016 07:11:33 
Это не хвост, это антенна
Аватар пользователя

Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22
Сообщений: 1368
Откуда: Беларусь
Рейтинг сообщения: 0
Цитата:
к тому же, у меня вообще не используется обращение к ОЗУ.
Так и в моем примере обращение к ОЗУ не нужно. вся работа выполняется в РОН. А наращивание разрядности насколько сложно в Вашем коде? В предложенном мной - добавить несколько строчек.

_________________
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб ноя 26, 2016 16:34:03 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2917
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18739
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
dr.doc писал(а):
Так и в моем примере обращение к ОЗУ не нужно
извини, я совсем упустил из виду, что по Z можно обращаться и к регистрам.
нарастить разрядность в моем коде можно, так как моя подпрограмма деления (div_32_16_16_16) принимает в себя 32 бита. но время выполнения вырастет значительно.
да, такой алгоритм, как сделано у тебя, мне сразу понравился (еще несколько страниц назад, когда была дана ссылка на такой алгоритм). разрядность наращивается совершенно без проблем.
в одной программе я получаю 6 десятичных разрядов. так пришлось сначала разделить число на 10000, а потом обрабатывать полученные части числа.
но я "примерю" этот алгоритм к своему 6-разрядному числу. возможно, получится выгоднее, чем у меня сделано сейчас с разбиением числа на части.

Добавлено after 2 hours 27 minutes 39 seconds:
сделал я примерку алгоритма от dr.doc для обработки 6-разрядного десятичного числа.
у меня
- получение 6 цифр,
- анализ на лидирующие нули (где поставить точку),
- преобразование в ASCII,
- вывод на индикатор
занимает 45 строк.

а по алгоритму от dr.doc только получение 6 цифр заняло 43 строки. а еще нужно сделать
- анализ на лидирующие нули (где поставить точку),
- преобразование в ASCII,
- вывод на индикатор

таким образом, менять свой алгоритм я не вижу смысла.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб ноя 26, 2016 20:40:24 
Вымогатель припоя
Аватар пользователя

Карма: 3
Рейтинг сообщений: 253
Зарегистрирован: Вт июн 25, 2013 18:45:07
Сообщений: 606
Рейтинг сообщения: 0
ptr128 писал(а):
Вы не священнослужитель, случайно, раз догмами оперируете? Мне как то всегда казалось, что сочетание CPP и макроязыка для X86 представляет собой очень мощный и гибкий механизм.


А причем CPP, если тут обсуждаются возможности ассемблеров? Да, GAS как самостоятельный инструмент - это УБОЖЕСТВО, и я не устану это повторять, хоть это и больная мозоль адептов гнутых компилеров. Если писать исключительно на асме, то GAS по сравнению с тем же fasm - это тьма беспросветная и жуть жуткая. :kill: Кто утверждает обратное - тот очевидно не знаком с fasm.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс ноя 27, 2016 07:26:06 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15089
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Компилятор соответствует структуре ядра и принятой системе адресации для конкретного семейства.
Нет смысла добавлять АВРкам свойства I8086 - там и имеющегося при правильном/полном использовании с избытком сделано. Ежли охота "экстриму" - попробуйте ассемблер для STM8...
:write:
Другое дело, что в большинстве случаев народ понимает под работой с ассемблером или написание примитивов "по Заецу" или написание коротких вставок под общей обработкой в СИ.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс ноя 27, 2016 09:37:39 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
Andrew Martin писал(а):
А причем CPP, если тут обсуждаются возможности ассемблеров? Да, GAS как самостоятельный инструмент - это УБОЖЕСТВО, и я не устану это повторять,


Потому что использование GNU ассемблер без С препроцессора (CPP), сродни использованию fasm без макросов. В GNU toolchain AS лишь один из компонентов, и не надо его выдирать отдельно. Вам же не приходит в голову ездить на автомобиле без двигателя, запрягая лошадь? )
А когда утверждения тупо повторяют без доказательств, это называется догматизм. Потому и я подумал, что Вы священнослужитель. У них именно так принято )

_________________
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс ноя 27, 2016 09:47:16 
Встал на лапы

Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03
Сообщений: 106
Откуда: Гродно, BY
Рейтинг сообщения: 0
ptr128 абсолютно прав про использование GNU ассемблера.
Это не инструмент, которым можно заниматься.
А, где можно скачать fasm под AVR? Че-то не могу найти?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс ноя 27, 2016 09:56:41 
Это не хвост, это антенна
Аватар пользователя

Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22
Сообщений: 1368
Откуда: Беларусь
Рейтинг сообщения: 0
Starichok51 писал(а):
Цитата:
да, такой алгоритм, как сделано у тебя, мне сразу понравился

Данный алгоритм я впервые встретил у Корабельникова, когда изучал PIC. А уже потом встретил и его родоначальника, но, к сожалению, запямятовал первоисточник.
Еще один плюс данного алгоритма - его обратимость. Когда писал частотомер/цифровую шкалу приходилось переводить вводимую ПЧ, так вот подсчет "в лоб" оказался очень громоздким. Проще вышло инвертировать BIN-BCD в BCD-BIN.

_________________
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс ноя 27, 2016 10:01:59 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
BOB51 писал(а):
Компилятор соответствует структуре ядра и принятой системе адресации для конкретного семейства.
Нет смысла добавлять АВРкам свойства I8086 - там и имеющегося при правильном/полном использовании с избытком сделано.


Во-первых, Вы не правы, считая компилятор платформозависимым. Например, LLVM toolchain не содержит ни одного платформозависимого компилятора, что не мешает ему успешно конкурировать с тем же GCC.
Во-вторых, что-что, а уж макросредства ассемблера точно не зависят от целевой платформы. Напирмер, я (и далеко не только я) в свое время успешно использовал макроассемблер IBM/370 при компиляции ассемблерного кода для i8048, i8080 и Z80. И то, что все все мнемоники машинных команд IBM/370 были закрыты макросами, и макросами же генерился бинарный код машинных команд - никак не напрягало. В связи с тем, что макроассемблер IBM/370 изначально был предназначен для написания ассемблерного кода к любому процессору - это был штатный режим его работы. Ведь этим же макроассемблером писались программы и для каналов ввода-вывода, и для сопроцессоров, и даже для некоторых программируемых стоек управления. Все особенности структуры ядря и системы адресации без проблем учитываются при написаннии макроса, формирующего машинную команду или сегмент данных.

_________________
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс ноя 27, 2016 10:17:38 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 4
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ptr128 писал(а):
Например, LLVM toolchain не содержит
ptr128 писал(а):
успешно использовал макроассемблер IBM/370 при компиляции ассемблерного кода для i8048, i8080 и Z80
главное, все это в теме про ассемблер для AVR очень уместно.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс ноя 27, 2016 10:58:41 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 2
trofim2 писал(а):
А, где можно скачать fasm под AVR?

https://flatassembler.net/download.php
flat assembler g
Цитата:
This release contains executables for 32-bit Linux and Windows. It contains examples of macroinstructions that allow assembly of simple programs for the architectures like x86, x64, 8052, AVR, or Java Virtual Machine.

есть реализация под PIC, пробовал - вроде неплохо по сравнению с мплабовским ассемблером.
Народ применяет для 8048, 8080, 8085, Z80...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс ноя 27, 2016 11:36:07 
Встал на лапы

Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03
Сообщений: 106
Откуда: Гродно, BY
Рейтинг сообщения: 0
Да....
Таким образом можно любой макроассемблер приспособить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс ноя 27, 2016 12:51:50 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
ARV писал(а):
ptr128 писал(а):
Например, LLVM toolchain не содержит

https://github.com/avr-llvm/llvm

ARV писал(а):
ptr128 писал(а):
успешно использовал макроассемблер IBM/370 при компиляции ассемблерного кода для i8048, i8080 и Z80
главное, все это в теме про ассемблер для AVR очень уместно.

То что я лично не использовал макроассемблер IMB/370 в качестве кроссассемблера AVR не говорит о том, что его нельзя использовать для AVR таким же образом, как и для перечисленных выше архитектур. Не исключаю, что до сих пор кому то удобней использовать HLASM в этих целях

_________________
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс ноя 27, 2016 14:10:56 
Встал на лапы

Зарегистрирован: Сб июл 30, 2011 21:00:24
Сообщений: 109
Рейтинг сообщения: 0
ptr128 писал(а):
Я не знаю, что Вы называете "классическим ассемблером", так как когда я впервые начал писать на ассемблере 8080 в 1984 году, то использовал для этого макроассемблер IBM/370 в режиме кросс-компиляции.

Под классическим ассемблером понимаю написание программ обычными ассемблерными командами: mov, ldi и т.д.
Макроассемблером условно называю язык АБ (Algorithm Builder), в котором широко используются макрокоманды и подпрограммы с параметрами. Встроенные макрокоманды расширяют действия обычных ассемблерных команд на многобайтные переменные. Скажем, а — 4-хбайтная переменная в SRAM, b - 4-хбайтная переменная в EEPROM, сложить эти переменные можно одной встроенной макрокомандой: a + b, наглядно и просто.
ptr128 писал(а):
IMHO, если планируете профессионально программировать МК, то учите С, а макроассемблеры оставьте в покое. Даже несмотря на то, что использование asm в С требует несколько большей писанины, чем написание модуля на макроассемблере.
В итоге, оно окупается сторицей на всех этапах жизненного цикла ПО

На мой взгляд, на макроассемблере АБ будет не «несколько меньше писанины», а глобальное упрощение программирования. Без примера такое заявление звучит неубедительно. Приведу простой пример из практики, измерительный прибор, который по затуханию сигнала определяет концентрацию вещества М.
Для такого измерения центральный МК должен считать с периферийного МК (расположен в блоке 1) опорный сигнал Vopor и измеренный после затухания сигнал Vizmer. Затем разделить один сигнал на другой, взять логарифм, провести калибровку, упаковать для вывода на индикатор и вывести на индикатор. Упрощённо на АБ программа будет выглядеть следующим образом:

Read_Blok_1 (Read_Vopor, Vopor, 4)
Delenie (Vopor, Vizmer, Itog_Delenia, 1)
Log_10 (Itog_Delenia, M)
Kalibrovka_1024 (M, ee_Koef_M)
Upakovka (M, Indicator)
Vyvod_Indikator

Это всё библиотечные элементы, только надо несколько настроить под параметры задачи.
Написать и отладить по времени займет, наверно день, два.
Объём будет довольно приличный . Один логарифм займет более 1 КБ, Read_Blok_1 (чтение данных от другого МК с проверкой, повторными запросами при неудачном обмене, чтением состояния периферийного МК и т.д.), вроде бы, ещё более мощный элемент.
Это, практически, ассемблер с его скоростью, гибкостью и небольшим объёмом кода.

Думаю, если бы АБ развили для других семейств МК, можно было бы программы без проблем переносить на другие семейства. Сошлюсь на вашу фразу: «Все особенности структуры ядра и системы адресации без проблем учитываются при написании макроса, формирующего машинную команду».
ptr128 писал(а):
Код на ЯВУ может быть автоматизировано проанализирован на предмет надежности и безопасности. Для ассемблера я таких анализаторов не встречал.

Думаю, можно было развить и анализ на надёжность и безопасность и прочее. Вопрос в том, кто будет это делать. Труда много, а этот труд денег не принесёт. Более того, для производителей МК будет ещё и убыток, ведь объём написанных программ будет значительно меньше, значит, будут покупать более дешёвые МК.
Получается, наработались, а прибыли упали. Капиталисты деньги считают.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 296, , , ...  

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y