How can I use my SMD Arduino to program a separate DIP ATmega328?
Check the Arduino site for instructions to use your Arduino SMD board to program another Arduino board.



To extend this to programming a DIP ATmega328, you would translate the 6 wires pictured to the corresponding pins on the DIP module.


D13 = PB5, pin 19
D12 = PB4, pin 18
D11 = PB3, pin 17
RESET = RESET, pin 1
5V = AVCC and VCC, pins 20 and 7, respectively
GND = AGND and GND, pins 22 and 8, respectively


The Arduino UNO schematic would be helpful for reference for verification.

As pointed out, you would also need to connect a 16MHz crystal with 22pF capacitors on the chip that is being programmed.  You would need to connect this to pins 9 and 10 on the chip you are programming as seen here: