You get it from Wallys father after beating Petalburgs gym leader Norman in Petalburg city. He is in a house near the petalburg gym.
Use the hm surf
if you have the HM FLY then you can fly there or you can surf but by some repels if you are going to surf
Wally's dad gives it to you after getting the 5th badge.
in petalburg city near the Pokemon gym a small cottage
you use the hm surf that you recently got from defeating the 4th gym. surf eastward from Mauvile city
There isn't anywhere els you can find surf every HM is in one spot hope that helps :)
you surf there. you have to have the 5th gym badge and the hm from wallys parents west of the petalburg gym.
wait until the tide rises and you find it and you need the hm surf
you have to defeat petalburg gym first. then Norman will tell you to go to wally's house next dooe. when you talk to wally's dad, he will give you the hm
To get surf in ruby, sapphire and emerald you need to beat the 5th gym (your dad) and go to wally's house (same town) then one of the people in wally's house should give you the surf HM
you have to beat your dad's gym and then go talk to Wally's parents, who gives you the HM surf
Surf is HM #3. :-)