Страница 198 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 10:10:07
ranger93
FreshMan, ну и напоследок посоветую грызть datasheet, там ближе к концу есть список команд с расшифровкой сокращения или аббревиатуры

, действием и временем, за которое действие выполняется.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 10:26:16
akl
Лучше все таки
здесь
ranger93 писал(а):...действием и временем, за которое действие выполняется
Уточню, что время выражено в тактах.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 11:37:41
Jack_A
Alexeyslav писал(а): например "побитное И" и "логическое И" две разные вещи и работают совершенно по разному.
Вот с этого места ... "побитное И" -- это AND(ANDI), а логическое ? Случайно не перепутано с Си, где
z = x & y и
if ( x && y ) -- действительно разные вещи ?
сравнить значение ацп с константой
Добавлено: Ср авг 21, 2013 11:43:07
pimple2006
здравствуйте,подскажите как на ассемблере сравнить константу со значением,полученного с ацп на асме

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 11:52:47
pyzhman
Скорее всего коллега имел ввиду даже не сам язык, а алгоритм.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 11:54:07
ploop
pimple2006, CP, CPC, CPI
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 12:34:44
Alexeyslav
Вот с этого места ... "побитное И" -- это AND(ANDI), а логическое ? Случайно не перепутано с Си, где
z = x & y и if ( x && y ) -- действительно разные вещи ?
А причем тут Си? Эта вещь касается компилятора, верней даже не компилятора а препроцессора. Все эти выражения вполне работают и для ассемблера - но только при вычислении констант и в директиве ".if" к примеру(хотя по большому счету там тоже константа).
подскажите как на ассемблере сравнить константу со значением,полученного с ацп на асме
Пользуюсь таким макросом:
Код: Выделить всё
.macro comparew_iflo ; AH, AL , C константа, метка для перехода когда число меньше константы
mov tempi, @1
mov tempih, @0
SUBI tempi, low(@2)
SBCI tempih, high(@2)
BRLO @3
.endmacro
Для него нужно чтобы регистры tempi и tempih были объявлены в области R16...R31.
Параметром макроса могут быть любые регистры, в которые надо будет загрузить значение с АЦП, либо сократить макрос и загружать значение АЦП непосредственно в tempi и tempih.
Последнюю инструкцию можно заменить на BRHI - для перехода на метку если значение БОЛЬШЕ, BREQ - для перехода когда значение строго РАВНО.
Так же можно внутрь макроса запихнуть считывание с АЦП, тогда количество параметров сократится - надо будет указать только константу с которой сравниваем, и куда перейти.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 12:51:41
akl
Нее. CP и CPC лучше. Например, сравнить не теряя значений
Код: Выделить всё
COMP:
CP R0,R10
CPC R1,R11
CPC R2,R12
CPC R3,R13
RET
Ничего и никуда не надо переносить; просто работаем по флагам.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 12:56:57
Alexeyslav
Тогда константу придется переносить в регистры... один фиг.
Да и использование подпрограмм в данном случае слишком накладно - вызов подпрограммы сравним с временем её выполнения, даже больше. Макросы в данном случае более гибки, а сравнение при помощи CPI - к тому же экономит регистры, особенно когда в конкретных ситуациях сравниваемое значение находится всегда в определенных регистрах - отпадает необходимость их переносить.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 18:21:17
Jack_A
Alexeyslav писал(а):"побитное И" -- это AND(ANDI), а логическое ?
А причем тут Си? Эта вещь касается компилятора, верней даже не компилятора а препроцессора. Все эти выражения вполне работают и для ассемблера - но только при вычислении констант и в директиве ".if" к примеру(хотя по большому счету там тоже константа).
Я все-таки зануда и не позволю ускользнуть от ответа

. Пожалуйста, дайте мнемонику команды "логическое И", которая отличалась бы от "побитное И" .
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 18:44:09
Kavka
Jack_A писал(а):Я все-таки зануда и не позволю ускользнуть от ответа

. Пожалуйста, дайте мнемонику команды "логическое И", которая отличалась бы от "побитное И" .
Если считать, что любое число больше нуля есть "истина", число равное нулю есть "ложь", а рассматривать только единичные регистры, то мнемоника будет "add". Вот только на проверку результата надо будет ещё две команды.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 18:54:51
Alexeyslav
Причем тут мнемоники команд? Логические операции и арифметика о которой идет речь стоит вообще НАД компилятором - реализуется она на уровне препроцессора.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср авг 21, 2013 18:59:07
Jack_A
Да, когда вчитался, понял, что речь идет о вычислении выражений в константах, макросах и т.п. , а не машинных командах. Так что зря я полез в полемику ни о чем. Примите мои уверения и пр. и пр.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт авг 22, 2013 10:17:18
FreshMan
насколько я правильно понял, если шо то поправте, команды
rjmp,
rcall используются в МК с обемом флеша меньше или равно 8кБ,
в тех МК где обьем флеша перевалил за 8кБ мы должны использовать
jmp,
call.
мне вот жутко интерестно, а почему оно сделано именно так, почему идет такое деление до и после, почему нельзя просто использовать
jmp,
call или
rjmp,
rcall ?

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт авг 22, 2013 10:26:38
Gudd-Head
FreshMan писал(а):почему нельзя просто использовать jmp,call
Используй, кто тебе не даёт. Только занимают такие команды 2 маш. слова (4 байта), а не 1.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт авг 22, 2013 10:32:44
Jack_A
Потому что в RJMP под адрес перехода отведено 12 бит -- от -2k до +2k . Если камень маленький, этого хватает.
Кстати, в "толстых" МК RJMP-ом тоже никто не запроещает пользоваться. А вот наоборот -- облом-с. Маленькие камни просто не понимают команды JMP .
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт авг 22, 2013 10:38:18
FreshMan
Gudd-Head писал(а):Только занимают такие команды 2 маш. слова (4 байта)
почему?
Jack_A писал(а):Кстати, в "толстых" МК RJMP-ом тоже никто не запроещает пользоваться.
если в них можна юзать RJMP то зачем тогда придумали JMP ?
запутался я вовсе...., ничего не понимаю

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт авг 22, 2013 10:41:46
Gudd-Head
FreshMan писал(а):запутался я вовсе...., ничего не понимаю

Да потому что, бл., как ты запихнёшь 16-ти битный адрес метки (куда указывает jmp/call) чтобы прыгать в пределах 128 кбайт, если вся команда занимает 16 бит?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт авг 22, 2013 10:47:39
Jack_A
FreshMan писал(а):
если в них можна юзать RJMP то зачем тогда придумали JMP ?
Так для того, чтобы перескочить дальше, чем на +-2k ! Можно, конечно, через промежуточные точки :
RJMP L1
L1: RJMP L2 ...
но это было бы уж совсем "через Альпы"

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт авг 22, 2013 10:50:46
FreshMan
Jack_A, а шо такое +-2k ?