Bist du sicher das was hier passiert die Port B als Ausgang schaltet, und Port A als Eingang? Weil du im beiden Code Teilen das gleiche macht:
Sind Port A und B nun nicht beiden Ausgang, oder beiden Eingang? (Ich kenne mich mit AVR Assembler nicht so gut aus.)

Code:
ldi     temp, 0xFF            ; Port B auf Ausgang

        out     DDRB, temp

                ldi     temp, 0xFF            //PortB auf HIGH

                out     PORTB, temp
Code:
                ldi     temp, 0xFF            // Port A auf Eingang

        out     DDRA, temp

                out     PORTA, temp           //Interne Pull UPs