ATmega2560 I2C (TWI) assembler configuration problems
Due to the limited number of address bits in IN and OUT opcodes, these instructions can only access I/O addresses from 0x00 to 0x3f. The I2C Registers TWBR to TWAMR are at 'memory mapped' addresses 0xb8~0xbd, so to access them you have to use LD and ST instructions. 

LD and ST work only with the 16 bit index registers X, Y and Z, which are concatenations of 8 bit registers R26-27, R28-29 and R30-31. To use them you must first load the address into the index register. 

So in line 27 you could replace:-

OUT    TWSR, R21           ;Set prescaler bits to 0  


with

LDI    XH,0
LDI    XL,TWSR               
ST     X, R21              ;Set prescaler bits to 0


For subsequent access to a different I/O address you only need to load XL (assuming you don't change XH/R27 in the mean time).