is sketch loaded at address 0 or at high address on UNO?

I know it is likely my ATmega328 chip is bad,

And I know that it is more likely that your chip is just fine. The bootloader does occupy high memory. The sketch loads starting from low memory (but not starting a 0 as there are interrupt vectors and other users of the lowest addresses).

The boards.txt file contains the maximum loaded memory size for the various Arduino board models:

For Uno board: uno.upload.maximum_size=32256

For Duemilanove board: atmega328.upload.maximum_size=30720

The difference is due to the smaller bootloader used in the Uno board.

Lefty