IJVM
IJVM is an instruction set architecture created by Andrew Tanenbaum for his MIC-1 architecture. It is used to teach assembly basics in his book Structured Computer Organization.

IJVM is mostly a subset of the JVM assembly language that is used in the Java platform. This instruction set is so simple that it's difficult to write complex programs in it (for example, no shift instructions are provided).

IJVM Instructions 

There's also a set of special ARRAY instructions.

*where the first value was pushed on the stack first, so the top of the stack is the operand at the bottom of the lists shown above.

Operand descriptions
 byte: A numeric literal, in octal (032 - leading zero), decimal (26 - no leading digits), or hexadecimal (0x1A - leading zero-x) format. Character literals ('M - leading single quote) are also allowed. Compiled to a 1-byte constant.
 label name: The string name of a label. Compiled to a 2-byte offset.
 variable name: The string name of a local variable. Compiled to a 1-byte value, indicating an offset into the local variable frame.
 method name: The string name of a method. When compiled, the address of the method is calculated and put into the constant pool. This operand is then replaced with the 2-byte index (in the constant pool) of the address.
 constant name: The string name of a constant. Compiled to a 2-byte index.
 N/A: This instruction takes no operands.

External links
 mic1 Free and open source MIC-1 microarchitecture simulator and IJVM assembler.
 emuIJVM Open source and free, with a stack animation IJVM simulator developed by students at the University of Catania (for Windows, Mac, Linux)
 A Vrije Universiteit Amsterdam course assignment on implementing an interpreter/ emulator for the IJVM instruction set

Assembly languages