А когда я смотрю на вот такие слова - как флаги - Z,C,N,V,H,S... мне даже не понятно что эти буквы означают и что такое ФЛАГ вообще...
далее операнды - что это такое хз.что такое Rd и Rr - хз.
Жалко у Вас там рядом нет ни одного гуру МК... А про C - никого не слушайте, пишите на ASM, по крайней мере, поначалу, только вот брутально учить мнемоники не стоит, постигайте их по мере необходимости, если чего - можно и в хелп глянуть.
Флаги - это такие биты в специальном регистре, которые автоматически устанавливаются в результате каких-либо действий.
Z - zero flag. Если стоит, значит в результате предыдущей операции получился ноль.
N - negative. Если стоит, значит в результате предыдущей операции получилось отрицательное число. И так далее...
Rd - условное обозначение исходного регистра.
Rr - условное обозначение принимающего регистра.
Последний раз редактировалось YS Ср июн 24, 2009 19:13:24, всего редактировалось 2 раза.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
так, а вот что из обучалки не понятно:
brmi - условный переход к метке - если результат предыдущего действия отрицателен. А это как как МК понимает отрицательное число?
Не умеешь - не берись, но не взявшись не научишься...
Stalker46 писал(а):так, а вот что из обучалки не понятно:
brmi - условный переход к метке - если результат предыдущего действия отрицателен. А это как как МК понимает отрицательное число?
Для начинающих есть язык СИ !!! АСМ для профессионалов оставьте.
А как в двоичной системе представляются отрицательные числа?
Stalker46, не слушайте этих фанатов С и теоретиков (простите, ikarab)! Пишите программы и отлаживайте их на реальном железе. Ни один эмулятор не сможет смоделировать систему абсолютно точно.
По поводу языков. Во первых, для начинающих хорош именно ASM, поскольку дает полное представление о процессах, происходящих в железе. С скрывает самое интересное. Во вторых, на С имеет смысл переходить только тогда, когда задача становится слишком сложной для написания на ASM и не критична по времени выполнения, поскольку НИ ОДИН существующий компилятор с языка высокого уровня не способен сгенерировать оптимальный код. Не верите - откройте asm файл у того же CVAVR.
Писать бегущие огоньки на С - однозначно изврат (если только они параллельно не играют mp3, не имеют высокоскоростного выхода в интернет и 17" ЖК монитора с тачскрином ).
Так что для начала - ОДНОЗНАЧНО ASM!
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Значение флага сохраняется только до тех пор, пока не произошло следующее событие, его изменяющее. Если Вы хотите организовать цикл с повторением 255 раз, то стоит сделать так:
ldi temp,0
LOOP: ;метка начала цикла
dec temp ;уменьшаем регистр на 1 - получаем 255
[Ваш код]
cpi temp,0 ; сравниваем с нулем
brne LOOP ; если не ноль - переходим по метке
или так:
LOOP: ;метка начала цикла
[Ваш код]
dec temp ;уменьшаем регистр на 1 - получаем 255
brne LOOP ; если при уменьшении получился не ноль - переходим по метке
И еще: символ ; означает в асме комментарий. Ставить его в конце каждой строки не обязательно.
Последний раз редактировалось YS Ср июн 24, 2009 21:20:06, всего редактировалось 1 раз.
Разница между теорией и практикой на практике гораздо больше, чем в теории.