The write code does not look right
for(int i=0;i<=11;i++)
{
digitalWrite(CHIP_SEL ,HIGH);
shiftOut(DATA_OUT,CLOCK,MSBFIRST,WRITE); //sending WRITE instruction
shiftOut(DATA_OUT,CLOCK,MSBFIRST,low); //sending low address
shiftOut(DATA_OUT,CLOCK,MSBFIRST,dataword); //sendind data
digitalWrite(CHIP_SEL ,LOW);
delay(100);
low++; //incrementing low address
}
shiftOut(DATA_OUT,CLOCK,MSBFIRST,dataword);
dataword with out an index is a byte pointer, so it should only be printing the address value.
I think you must be using newer code, or are reading old data.
you may be wanting this:
shiftOut(DATA_OUT,CLOCK,MSBFIRST,dataword[ i ] );
and dataword is a null terminated string, so it contains 13 characters ( including the null ), your loop only writes 11.