Now, mind you, I don't normally program in assembly. And as I understand your problem, you have this working for one relay, and want to add more. Here is a try.
cpi byte2,'n' ;check to see if to turn on relay
breq Check_2nd_char ; turn on relay section
rjmp NextCheck ; turn off relay section
Check_2nd_char: ;turn on relay section
cpi byte1,'1' ;check for relay one
brne C2c2 ;no? check next
sbi portb,0 ;yes, set output
rjmp start ;go back to start of program
C2c2:
cpi byte1,'2' ;check for relay two
brne C2c3 ;no? check next
sbi portb,1 ;yes, set output
rjmp start ; go back to start of program
C2c3:
.
.
.
C2c8:
cpi byte1,'2' ;check for relay eight
brne start ;no? go back to start of program
sbi portb,7 ;yes, set output
rjmp start ; go back to start of program
do likewise for the turn off section
NextCheck:
cpi byte2,'w'
brne start
cpi byte1,'1'
brne Nc2 ;check next
cbi portb,0
rjmp start
Nc2:
cpi byte1,'2'
brne Nc3
cbi portb,1
rjmp start
Nc3:
.
.
.
Nc8:
cpi byte1,'8'
brne start
cbi portb,7
rjmp start
Well, anyway, that's my stab at it. There might be typos. BTW, this program isn't particularly "robust" as there are plenty of opportunities to get stuck in a loop, but if this is all the chip is doing, it might be fine.
j.