Си даёт сравнительно маленькую абстракцию поверх ассемблера и почти не защищает программиста от некорректных действий во время выполнения. Не обязательно учить ассемблер, достаточно понимать то, что выдаёт отладчик и как выполняется программа.
Я рекомендую взять отладчик с хорошим интерфейсом, например, Ollydbg, в котором работа с памятью, инструкциями и регистрами видна наглядно на всех этапах, и поэкспериментировать с C-программами в нём.