Si, el problema viene cuando programas un microcontrolador en C, entonces te das cuenta de "todo el tiempo perdido" que tampoco es perdido, pero en C es muchísimo mas facil, por ejemplo para sacar 00000001 por el puerto A hacer directamente:
PORTB = 0x01;
con esa línea ya lo sacas, o por ejemplo:
IF (PORTB == 0x01) then
PORTA = 1;
Imagina hacer esto último en ASM la de líneas que ocuparia, posiblemente 6 o 7 líneas mientras en C són dos.
Es mas, compiladores como MPLAB tiene todas las librerias de estos pics y no hace falta ni declarar direcciónes de memória ni nada, simplemente metes la librria con INCLUDE y fiesta. Lo que queda es ya directamente poner los fuzes o configuraciones iniciales y ya puedes programar directamente sobre los puertos sin preocuparte de bancos, registros ni nada con muchas menos líneas de codigo.
PORTB = 0x01;
con esa línea ya lo sacas, o por ejemplo:
IF (PORTB == 0x01) then
PORTA = 1;
Imagina hacer esto último en ASM la de líneas que ocuparia, posiblemente 6 o 7 líneas mientras en C són dos.
Es mas, compiladores como MPLAB tiene todas las librerias de estos pics y no hace falta ni declarar direcciónes de memória ni nada, simplemente metes la librria con INCLUDE y fiesta. Lo que queda es ya directamente poner los fuzes o configuraciones iniciales y ya puedes programar directamente sobre los puertos sin preocuparte de bancos, registros ni nada con muchas menos líneas de codigo.
, en ensamblador hay instrucciónes para ver si un registro o acumulador es o 0 1 y según lo que sea hace un salto, en la arquitectura 8081 que es la que usa Atmel hay instrucciónes como JNZ, JZ,JZE...