8086 Interpreter: This program should allow the user to type in 8086 assembly language programs, syntax check them line by line, and run them.

This is my summer project for this year, I just want to better understand, what do I have to do. Is a interpreter the same as a emulator or compiler ? Would anybody have some hints ,or tutorials on assembly and writing interpreters ?

An interpreter is not the same as an emulator or compiler. An binary code interpreter will interpret the machine instructions dynamically at run time. An emulator will be an environment that poses as the target machine, and execute the instructions just like a physical machine. A compiler will take source code and turn it into machine code, which can then be executed on a physical machine, an emulator, or interpreted by the interpreter.

In Linux system, Qemu is an emulator support framework - allowing emulation of many classes of machines. The GCC compiler suite takes source and turns it into the target machine code. It is rare to see a machine-level interpreter these days. Source code interpretation is not so uncommon however. IE, there are C and C++ interpreters that can take source code, and run it without compilation. An emulator requires code already compiled for the target hardware.

Confused yet? :-) This is very advanced stuff...

There is really no such thing as an assembly language interpreter. The problem with trying to interpret something like "mov ax,3" is that the interpreter would itself be modifying the ax, and other registers, as it ran.

@mathematician, not if it made virtual registers in memory...