the problem has been solved. in order to specify color at each vertex, glEnable(GL_COLOR_MATERIAL) must be called. and if no light is specified, GL uses the default lighting, that's why in NEHE's lesson3 the colors can be shown without calling lighting functions.
i have just started learning OPENGL, i use MASM for programming. in lesson 3, if there isn't a lightsource in the scene, how can the color be shown? and i tried to put up a scene with a lightsource and a triangle, the glColor3x (b or f) function doesn't change the color of the triangle , it always appear gray, i don't know why.