I2C EEPROM dump?

Here's an example of what I'm looking at:

#include <Wire.h>
#define EEPROM_ADDR 0x50

void setup(){
  Wire.begin();
  Serial.begin(9600);

  int rdata = 33;
  Wire.beginTransmission(EEPROM_ADDR);
  Wire.send(0x00); // MSB
  Wire.send(0x00); // LSB
  Wire.send(rdata);
  Wire.endTransmission();
  Serial.println(rdata);

  Wire.beginTransmission(EEPROM_ADDR);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.endTransmission(); 
  Wire.requestFrom(EEPROM_ADDR,1);
  if (Wire.available()) Serial.println(Wire.receive());
}
void loop(){
}

From what I can tell, this should open the I2C bus, move the address pointer to the first memory block, and write either the decimal value "33" or the ASCII equivalent "!" to that space. My understanding from the datasheet for the 24LC16B is that the pointer increments by 1 after every operation, so the next little piece moves back to 0x0000 and does a read. I would expect that the read would come back with either the 33 or the ! as well, but I get nothing. My serial monitor shows the 33 on one line, and that unprintable square character on the second line.