Programming external ATmega328 with an Arduino SMD edition?
If you have the Arduino Uno SMD you cannot use it as an in-system programmer (ISP). This is due to an incompatibility with the OptiBoot bootloader (refer to ArduinoISP link below for more information).

You may have to purchase an ISP yourself to program the chip.



A less costly "solder yourself" version: USBTinyISP ($22)

Standard AVR ISP 2: @DigiKey ($38)



If you are using versions before (Arduino Duemilanove or Diecimila), you could possibly use it to program your chip. Refer to this article: http://arduino.cc/en/Tutorial/ArduinoISP

Example circuit setup:



Edit: A possibility is a usb-to-serial or similar adapter due to the fact your DIP Mega has a bootloader already on it that may support it. I refrained from mentioning as it nears the cost of an ISP which can support non-preburned chips, however you can surely do that too.