А ассемблер очень важен. Именно потому, что понимаешь как оно изнутри. Понимаешь, что такое массив, к примеру, и как, примерно, компилятор реализует твою конструкцию. Я как то не был бы так уверен в том, что "практически в совершенстве владею прагроммированием МК на С++". Хотя, признаю что уверенность в себе - великая вещь.
Ребята мне помогут если чего запамятовал или попутал. Существуют следующие виды адресации регистровая прямая (непосредственная) косвенная (или относительная) индексная базовая
Ну и их модификации, - к примеру базово-индексная
Из под i80x86 можно напрямую работать с небольшими трёх мерными массивами, хотя компилятор так не делает.
AVR имеет первые три вида. 1) mov r1,r2 2) ldi r16,33 3) ld r1,Z
плюс косвенная со смещением типа ld r16,Z+5 и косвенная с автоинкрементом/автодекрементом типа ld r16,Z+
В рамки видов адресации укладывается всё. Так например переход rjmp PC+5 - есть просто сложение (прямая) jmp 0x100 - есть простое занесение в PC (прямая) ijmp - есть косвенная адресация регистра PC pop r16 - косвенная адресация с автодекрементом относительно SP
|