How do you catch Dive in Pokemon FireRed?
You can't unless you trade a Pokemon from Pokemon Ruby, Sapphire
or Emerald and get a Pokemon that knows Dive. The HM Dive is not
necessary in Pokemon Firered and is thus not avaliable. However, a
Pokemon that knows Dive can be traded from Pokemon Sapphire, Ruby
or Emerald version to Firered.
I can't remember much, but I think you have to get it from Wallace or Juan.
Since dive is not a HM in firered you will have to trade a Pokemon to a friend that has ruby, sapphire or emerald then using that game use the HM Dive to teach the move Dive to that Pokemon trade it back so firered can have that Pokemon again it will still have Dive however you cannot use it to dive underwater.