Question: I've heard the terminologies: register, hardware register, program register,register file.

What's the difference between all these? And in assebmly, what is the type of the EAX register? Program register?

Answer: 
A register is a storage area inside the CPU. Here are some definitions:

* A register file is an array of registers - see <http://en.wikipedia.org/wiki/Register_file> for a full description.
* The eax register is the accumulator register of the Intel x86 family of CPUs - it's the place where integer maths gets done.
* The program register (I think you mean program counter) is a special purpose register which contains the address of the next machine code instruction to be executed
a register is a small bit of memory that sits inside the CPU. and is used by assembly language to perform various tasks.

could it be that by program register you mean program counter?