Machine Language

Download Report

Transcript Machine Language

Assembly & Machine Languages
A Brief Overview
Jonathan-Lee
Jones
Overview of the Module
•
•
•
•
•
•
•
What operations can a computer can perform
The Pep/8 virtual machine
Immediate and direct addressing modes
Writing simple machine-language programs
Machine language and assembly language
Creating and running an assembly-language program
Writing simple programs using the Pep/8 virtual
machine
• Concept of assembler instructions
What operations can a computer can perform
• Interact with I/O
– reading input
– Writing output
– reading the program (in
memory)
– reading constant values (in
memory)
– reading and writing variables
(in memory)
• Executing instructions in
machine language
Overview
Differences between machine language and
assembly language
Machine Language
The language made up of
binary coded instructions
built into the hardware of
a particular computer and
used directly by the
computer
Differences between machine language and
assembly language
Machine Language
This is very hard to
understand by a human.
It is a series of numbers,
originally binary, but
hexadecimal is more
common today.
Differences between machine language and
assembly language
Machine Language
This originated from the
early days of computing,
where there were limited
mechanisms of input;
such as punched cards
and even just a series of
dials and switches.
Differences between machine language and
assembly language
Assembly Language
• A language that uses mnemonic codes to represent
machine-language instructions
• Much easier for the human to understand and read –
though nowhere near as easy as high level
languages.
• Harder for the computer to read! Requires and
assembler to use. An assembler is program that
reads each of the instructions in mnemonic form and
translates it into the machine-language equivalent
Machine Language
• Machine language – The language
made up of binary coded instructions
built into the hardware of a
particular computer and used
directly by the computer
• Every processor type has its own set
of specific machine instructions.
• The relationship between the
processor and the instructions it can
carry out is completely integrated.
• Each machine-language instruction
does only one very low-level task
Typically we have one instruction per
“word”
Types of Instruction
• data movement data processing
– op-code – what operation is
required
– source 1 – operand 1
– source 2 – operand 2
– destination
• flow control (jumps)
Machine Language
Types of
Instruction
Data Processing
op-code – what operation
is required
source 1 – operand 1
source 2 – operand 2
destination
Data Move
(actually a copy not
a move)
Flow control
Branch (jump to
address)
Conditional
Branch (tests
values)
Subroutine Calls
Return(from
Subroutine)
Machine Language
Processing instructions
• How many bits required?
addresses of operands and
results
– assume a 32 bit address for
memory
this would allow for 232 bytes
of addressable memory
this would need 96 bits for the
addresses in an instruction
• lets suppose 16 bits for the
op-code (216 instructions)
Each instruction is 112 bits !!
010110111001011011100110110111001011011100110110111001011
011100101101110010110111001011011100101101110010110111001
011011100101101110011011011100101101110011011011100101101
110010110111001011011100101101110010110111001011011100101
101110010110111001101101110010110111001101101110010110111
001011011100101101110010110111001011011100101101110010110
111001011011100110110111001011011100110110111001011011100
101101110010110111001011011100101101110010110111001011011
100101101110011011011100101101110011011011100101101110010
110111001011011100101101110010110111001011011100101101110
010110111001101101110010110111001101101110010110111001011
011100101101110010110111001011011100101101110010110111001
011011100110110111001011011100110110111001011011100101101
110010110111001011011100101101110010110111001011011100101
101110011011011100101101110011011011100101101110010110111
001011011100101101110010110111001011011100101101110010110
111001101101110010110111001101101110010110111001011011100
101101110010110111001011011100101101110010110111001011011
100110110111001011011100110110111001011011100101101110010
110111001011011100101101110010110111001011011100101101110
011011011100101101110011011011100101101110010110111001011
011100101101110010110111001011011100101101110010110111001
101101110010110111001101101110010110111001011011100101101
110010110111001011011100101101110010110111001011011100110
110111001011011100110110111001011011100101101110010110111
001011011100101101110010110111001011011100101101110011011
011100101101110011011011100101101110010110111001011011100
101101110010110111001011011100101101110010110111001101101
110010110111001101101110010110111001011011100101101110010
11011100101101110010111101110
010110111001011011100110
110111001011011100110110
111001011011100101101110
010110111001011011100101
1011100101101110
PEP/8 Virtual Computer
Instruction Format
• Operation code – Specifies
which instruction is to be
carried out
• Register specifier – Specifies
which register is to be used
(we will only use A for the
moment)
• Addressing-mode specifier –
Says how to interpret the
operand part of the
instruction
PEP/8 Virtual Computer
Some Sample Instructions
• 0000 Stop Execution
• 1100 Load operand to A Register
• 1110 Store contents of A Register into
operand
• 0111 Add operand to A Register
• 1000 Subtract operand to A Register
• 01001 Input character to operand
• 01010 Output character from operand
• Direct Addressing mode 000
• Indirect addressing mode 001
1.
2.
3.
4.
5.
6.
7.
8.
9.
11000000 0000000000000111
11000001 0000000000011111
11100000 0000000000000111
11000001 0000000000001010
01110000 0000001000001010
11000001 0000001000001010
01001001 0000000000001010
01010000 0000000001000001
01010001 0000000000001010
Programming in Assembly Language
Program
in
assembly
language
Input
Output
Assembler
Program
in
machine
language
Problem: Display “Hello”
CHARO
CHARO
CHARO
CHARO
CHARO
STOP
.END
0x0048,i;
0x0065,I;
0x006C,I;
0x006C,i;
0x006F,I;
Problem: Read and sum three values and print the sum