ATmega2560 assembly pin read and compare logic problem
Couple things that make me frown:

SBI PINA0,0         ;PA0 pull-up enable


According to the datasheet:


  Three I/O memory address locations are allocated for each port, one each for the Data Register – PORTx, Data Direction Register – DDRx, and the Port Input Pins – PINx. The Port Input Pins I/O location is read only, while the Data Register and the Data Direction Register are read/write. However, writing a logic one to a bit in the PINx Register, will result in a toggle in the corresponding bit in the Data Register. In addition, the Pull-up Disable – PUD bit in MCUCR disables the pull-up function for all pins in all ports when set.


To enable the pull-up you should write to PORTA not to PINA0. Also notice the difference PINA0 and PINA in your code. You cannot read a single bit from an IO port, you must read the whole byte. Then you can check one or more bits in the byte read using AND, SBRC or SBRS.

nop             ; Loop exit (do nothing)


Don't use nop to "do nothing", because the microcontroller will go forward to the next instruction in flash which can be anything, including an instruction from a previous program that was in flash if it wasn't overwritten. Anything can happen from there.