Machine Language Introduction - Lab 8
While we humans can read and understand algorithms written in pseudocode and various programming languges, a computer can only read and understand something called Machine Language.
To us, machine language is just long sequences of 1's and 0's. With some work, and a table showing what the different sequences of 1' and 0's mean, we can decipher it. It is very difficult to write a simple program in ML, yet alone an entire software application.
With some practice, we can learn to write simple ML programs. Each type of computer has its own machine language.
Lets look at a short example which shows the relationship between the pseudocode we have been using to write algorithms , something called assembly language and finally machine language. For this example we will use the languages of our laboratory simulators.
Pseudocode Algorithm Assembly
Language Program Machine
Steps label op operand comment address Machine Instruction
Set the value of A to 8 LOAD A 0000 0000 0000: 0000 0000 0000 0100
Set the value of B to 7 ADD B 0000 0000 0001: 0011 0000 0000 0101
Set the value of C to STORE C 0000 0000 0010: 0001 0000 0000 0110
the value of A + B HALT 0000 0000 0011: 1111 0000 0000 0000
A: .DATA 8 0000 0000 0100: 0000 0000 0000 1000
B: .DATA 7 0000 0000 0101: 0000 0000 0000 0111
C: .DATA 0 0000 0000 0110: 0000 0000 0000 0000
All three examples above add the values of variables A and B together and store the sum in the variable C.
The pseudocode algorithm should need no explanation.
Lets look at the Assembly Language (AL) program which implements the algorithm.
Each line in the AL program consists of 4 parts:
1) an optional label,
2) an op or a pseudo-op, ( an operation code such as ADD, SUM etc. )
3) an operand which refers to a memory location, or a piece of data and
4) an optional comment.
A program called an assembler takes the AL program and converts it into the corresponding Machine Language (ML) program.
The ML program is just the following:
0000 0000 0000 0100
0011 0000 0000 0101
0001 0000 0000 0110
1111 0000 0000 0000
0000 0000 0000 1000
0000 0000 0000 0111
0000 0000 0000 0000
The column labeled "address" is just for our reference.
For our simulator, and the textbook we use a machine language where each machine instruction or command takes 16 bits or 2 bytes of memory space. Each instruction has the same format:
where Opcode is 4 bits and address is 12 bits.
For example the first instruction above: 0000 0000 0000 0100 tells the computer to Load the information at memory location 0000 0000 0100 and store it in a special memory location in the Arithmetic / Logic Unit called Register R.
0000 is the operation code for 'Load' and 0000 0000 0100 is the address.
Let's back up a minute. Our ML simulator uses a very simple computer model:
This picture shows the Virtual Machine after fetching and decoding the instruction at memory location 0.
There is one Assembly Language OP (operation) for every opcode (instruction type) in the computer's vocabulary.
In the case of our simulated computer, there are 16 different instructions that it understands.
The table below lists these op codes along with the corresponding Assembly Language Instruction and the meaning. In the table, 'CON(X)' denotes the contents of memory cell X.
|Binary Op Code||Instruction||Meaning|
|0000||load X||CON(X) --> R|
|0001||store X||R --> CON(X)|
|0010||clear X||0 --> CON(X|
|0011||add X||R + CON(X) -->R|
|0100||increment X||CON(X) + 1 --> CON(X)|
|0101||subtract X||R - CON(X) --> R|
|0110||decrement X||CON(X) - 1 --> CON(X)|
|0111||compare X||if CON(X) > R then GT =1 else GT=0
if CON(X) is equal to R then EQ=1 else EQ=0
if CON(X) < R then LT =1 else LT=0
|1000||jump X||X --> PC|
|1001||jumpgt X||if GT is 1, X --> PC|
|1010||jumpeq X||if EQ is 1, X --> PC|
|1011||jumplt X||if LT is 1, X --> PC|
|1100||jumpneq X||if EQ is 0, X --> PC|
|1101||in X||Read in a value and store it in memory cell X|
|1110||out X||Print out the value in memory cell X|
|1111||halt||Stops the program|
In Laboratory Experiment #8 you will be working with the Machine Language Simulator
Machine Simulator Powerpoints