You can obtain surf after defeating all of the Kimono girls in Ecruteak City. A man in the audience will be so impressed with your performance against the girls' Pokemon that he will give you Surf.
You get HM Surf and surf there
no
They need HM 04 Strength Surf and waterfall
It's in the dark cave and you need HM SURF
When using HM Surf or fishing
to get surf in heartgold/soulsilver you have to first beat the the rocket grunt inside the ecruteak dance theater. after talk to the old man and then he will give the HM.
you get it from a gy
Assist the kimono girls at the dance hall and an old man will give you it.
Hidden Machine . They can be used as many times you want. HM moves can be used outside battle (eg. Fly, Surf)
Surf is HM #3. :-)
you get from alder at twist mountain.
There is no HM Dive in either Pokemon Silver/Gold or Heartgold/SoulSilver. It is exclusive to the Hoenn games.