Do 有三種用法,一種是自己作為動詞「做」,例如做功課 do the home work。第二種用法是配合其他動詞(be 除外)用於詢問和否定句子中。所以詢問你昨天是否有打電話給我時,要用 did 配合call 這個動詞,或者在 I did not call you yesterday 這個否定句子中與動詞 call 一起用。
Be 比其他動詞「怪」,因為它自己用在詢問和否定語句時有自己的一套,不與 do 配合。例如 He isn't a member 和 Is he a Chinese?
In your case, ' call ' is the main verb, and also the verb-to-do when you want to make the main verb in a question form, you have to use ' do/did '.
' Were ' is not used as it is a verb-to-be. It will become the main verb if you use it. Besides, the meaning will changed if you use ' were ' , It will become ' were you called? ' which is a sentence in passive voice. (即是意思會變成 你有沒有被人叫 而不是 昨天你有沒有叫我)
' had ' is also not used. It is only used in past perfect tense in this sentence, that is ' had you called me? '. But actually, this tense is not suitable in the situation of the question, because past perfect tense is only used when you describe something before a past action.
the reason why you cant use the word ''were'' is because you can only use an adjectives or noun after the ''tobe''.
eg. were you hungry?, was he fat?
you cant use the word ''had'' is because the verb in this sentance ''X you X(call) me yesterday'' is ''call''. you could only use verb3 (called) with the word ''have'' or ''had'' etc. Finally if you use the word have, had or has to ask a question, you do not mention the time~ (hence this is called the perfact tense)
e.g. have you eaten? had you shouted at him?
lastly:
did, do etc. can be used with a verb1 (call etc.) << the time is already described by the verb (do or did), therefore the real verb should stay as verb1 (eat, want etc.).
With this kind of question, exact time should be included. - (yesterday, last week, last year)
e.g. did you do your homework yesterday? do you want to eat now?