как МК понимает отрицательное число?
А как в двоичной системе представляются отрицательные числа?
Stalker46, не слушайте этих фанатов С и теоретиков (простите,
ikarab)! Пишите программы и отлаживайте их на
реальном железе. Ни один эмулятор не сможет смоделировать систему абсолютно точно.
По поводу языков. Во первых, для начинающих хорош именно ASM, поскольку дает полное представление о процессах, происходящих в железе. С скрывает самое интересное.

Во вторых, на С имеет смысл переходить только тогда, когда задача становится слишком сложной для написания на ASM и не критична по времени выполнения, поскольку
НИ ОДИН существующий компилятор с языка высокого уровня не способен сгенерировать оптимальный код. Не верите - откройте asm файл у того же CVAVR.
Писать бегущие огоньки на С - однозначно изврат (если только они параллельно не играют mp3, не имеют высокоскоростного выхода в интернет и 17" ЖК монитора с тачскрином

).
Так что для начала - ОДНОЗНАЧНО ASM!
Разница между теорией и практикой на практике гораздо больше, чем в теории.