"I eat breakfast at eight a.m."
に, in this case, is a grammatical particle tagged onto the end of the time, essentially being the "at" in the "at 8am" part of the phrase. あさ (kanji: 朝) here means "morning" and it's the first half of the word for "breakfast." (The latter half means "meal" or, more literally, "cooked rice.")
Because although 朝 (あさ) by itself means "morning," here it's a part of the word for "breakfast," 朝ご飯 (あさごはん). If you didn't include the 朝, the word wouldn't be "breakfast." You could consider it redundant, but I don't think it sounds all that unnatural to include "A.M." even when talking about breakfast already implies morning.
If I'm eating "breakfast" foods like waffles and pancakes for dinner, can I still call it asagohan? Like is the common English phrase "breakfast for dinner" one that translates smoothly? Or when you say "breakfast" in Japanese, is it mostly referring to the time of the meal? Just curious. The gozen made me wonder if breakfast in Japan is as loosely defined as it is here, haha.