Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

46
Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler

Transcript of Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Page 1: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly & Machine Languages

CSCI130Instructor: Dr. Lynn Ziegler

Page 2: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Layered ArchitectureLAYER Order

Application SW: Excel & Access

2

High-order P.L.: Visual Basic 1

Low-order P.L.: Assembly 3

System SW: O.S. 3

Machine Language 4

Data Representation 5

HW: Circuit Design 6

Page 3: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Higher-level Programming Languages

(3GL) High-level languages are in the middle Use English-like phrases and mathematical

notation x = x+1;

A limited vocabulary with precise meaning Make us think at a higher-level of abstraction

No attention to technical and hardware details Like O.S.

Much larger instruction set for programmers Multiplication

Page 4: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Higher-level Programming Languages (PLs)

(1GL) Machine language programming limited set of instructions binary numbers:

opcodes, absolute memory addresses and data Memory addresses

(2GL) Assembly language English mnemonics for binary opcodes Decimal data Labels for memory addresses and variables limited instruction set

Use human languages to program Large vocabulary (space and time to search) … opcode lookup

500,000 words - 1,000,000 words (including scientific words) Synonyms Context

Page 5: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

CPU

- Connects to main memory (MM) thru a bus- Bus = bundle of wires- Transfers data between CPU and memory

- Width of bus determines speed - e.g. 32-bit bus (Higher faster)

- Where is data stored when copied to CPU?

Page 6: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

CPU Divided into CU and ALU CU (Control Unit)

Orchestra organizer Oversees transfer of data between MM and CPU Accesses info in ROM (e.g. during reboot) Has a bunch of memory registers

ALU (Arithmetic Logic Unit) Contains circuits to do computations

Built for each basic/hardwired operation (+,-, x, /, =,>,<, NOT)

Includes a special register accumulator AC to hold results

Page 7: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

The History of Computing

ENIAC (February 14, 1946) weighed over 30 tons, and consumed 200

kilowatts of electrical power

Page 8: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

• An ALU in 1957• This was an arithmetic unit you sit back and admire. It was

part of Honeywell's Datamatic 1000 computer. (Image courtesy of Honeywell, Inc.)

Page 9: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.
Page 10: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.
Page 11: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Modern CPUs

Page 12: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Programs & Algorithms Characteristics of an algorithm:

List of steps to complete a task Each step is PRECISELY defined and is suitable for

the machine used Increase the value of X Jump! Add 5 to variable X

The process terminates in a finite amount of time No infinite loops

Written in an English-like language (Pseudocode)

Page 13: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Programs & Algorithms Program: A formal representation of a

method for performing some task Written in a programming language

understood by a computer Detailed and very well-organized (computers

just do what they are told) Follows an algorithm … method for fulfilling

the task Plan to do something VS the actual performance

Page 14: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Combining Limited Instructions

Computing an answer to an equation: 5*3 + 62 – 7 Assume our computer can’t directly multiply,

subtract, or raise to power Multiplication task:

1: Get 1st number, Number_1 2: Get 2nd number, Number_2 3: Answer = 0 4: Add Number_1 to Answer 5: Subtract 1 from Number_2 6: if Number_2>0, go to step 4 7: Stop

Page 15: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly Language Machine code consists of the

binary instructions, data & addresses can directly be executed by the CPU

We as humans are not good in working with sequences of 1’s and 0’s We prefer to use an English-like style (English

mnemonics and decimal numbers) This is called the assembly language

It has 1-to-1 correspondence to machine code one instruction for every 3-bit Opcode and decimal numbers

for addresses and data Slight other changes

Page 16: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly Language

Additional problems addressed: Most commands like LOAD, STOR, JUMP and

ADD require memory addresses How do we know which address in memory is free

to use?

We also assumed that PC will contain 0 initially

Our program will be loaded to first memory location…is this always true?

What if we have multiple executing programs on the same machine?

Which will get the 0 address then?

Page 17: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly Language

In reality, when we program, we don’t concern ourselves with such low level details This is handled by the operating system.

From now on, we use variables/labels instead of addresses and totally forget about memory 110 10010 ADD Counter which must

initialized

Page 18: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

0

clock

16-3000 MHz (~3.0 GHz)

Page 19: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly Language of a ComputerInstruction Description

HALT Stop program execution

JUMP loc Go to location loc to continue program execution (unconditional)

JZER loc Go to location loc to continue program execution but only if AC=0 (i.e. if zflag=1) (conditional)

JPOS loc Go to location loc to continue program execution but only if AC>0 (i.e. if pflag=1) (conditional)

LOAD loc Copy contents of location loc into AC (zflag, pflag might be affected)

STOR loc Copy contents of AC into location loc

ADD loc Add contents of location loc to AC (zflag, pflag might be affected)

SUB loc Subtract contents of location loc from AC (zflag, pflag might be affected)

READ Put user’s input inside AC (zflag, pflag might be affected)

WRITE Output contents of AC to user – e.g. on screen

Page 20: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Simple VB-like program 1

Private Sub cmdSimple () Dim X As Integer X = inputbox(…) Msgbox x

End Sub

READ STOR X LOAD X WRITE HALT X: 0

Page 21: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Simple VB-like program 2

Private Sub cmdSimple () Dim X As Integer X = inputbox(…) If X>0 then

Msgbox x End If

End Sub

Page 22: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly Version for program 2

READ STOR X LOAD X JPOS Disp HALT Disp: WRITE HALT X: 0

Page 23: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Simple VB-like program 3 Private Sub cmdSimple ()

Dim X As Integer Dim Y As Integer Y = 0 X = inputbox(…) If X>0 then

Msgbox x Else

Msgbox y End If

End Sub

Page 24: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly Version for program 3

READ STOR X LOAD X JPOS Disp LOAD Y WRITE HALT

Disp: WRITE HALT X: 0 Y: 0

Page 25: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

VB-like program 4 Private Sub cmdSimple ()

Dim X As Integer Dim Y As Integer Dim Z As Integer X = inputbox(…) Y = inputbox(…) Z = 0 If X>Y then

Msgbox X ElseIf X=Y then

Msgbox Z

Else Msgbox Y

End If End Sub

Page 26: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly Version for program 4

READ STOR X READ STOR Y LOAD X SUB Y JPOS MaxX JZER Equal LOAD Y WRITE HALT

MaxX: LOAD X WRITE HALT Equal: LOAD Z WRITE HALT X: 0 Y: 0 Z: 0

Page 27: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

VB-like program 5 Private Sub cmdSimple ()

Dim Sum As Integer Dim N As Integer N = inputbox(…) Do

Sum = Sum + N N = N -1

Loop While N>0 Msgbox Sum

End Sub

Page 28: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly Version for program 5

READ STOR N Loop: LOAD Sum ADD N STOR Sum LOAD N SUB One STOR N JPos Loop

LOAD Sum WRITE HALT Sum:0 N: 0 One:1

Page 29: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

VB-like program 6 Private Sub cmdSimple ()

Dim Sum As Integer Dim N1 As Integer Dim N2 As Integer N1 = inputbox(…) N2 = inputbox(…) Do

Sum = Sum + N2 N2 = N2 -1

Loop While N2>=N1 Msgbox Sum

End Sub

Page 30: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly Version for program 6

READ STOR N1 READ STOR N2 Loop: LOAD Sum ADD N2 STOR Sum LOAD N2 SUB One STOR N2

SUB N1JPOS LoopJZER LoopLOAD SumWRITEHALTSum:0N1: 0N2: 0One:1

Page 31: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

VB-like program 6 Program to print a 1 if an input number is even (multiple of 2) and 0

otherwise Try it out in SimHymn:

http://www.csbsju.edu/Computer-Science/Useful-Links/Launch-CS-Applications.htm

VB-like:

Dim Sum As Integer

Dim N As Integer

N = InputBox(…)

Do

N = N - 2

Loop While N > 0

VB-like:

If N = 0 Then

MsgBox 1

Else

MsgBox 0

End If

Page 32: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

READ STOR N LOOP: LOAD N

SUB DecSTOR NJPOS LoopJZER EvenLOAD ZeroWRITEHALT

Even: LOAD OneWRITEHALT

Dec: 2 N: 0 One: 1 Zero: 0

Page 33: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

A Simple 8-bit Computer Use a simplified version of real computers to

understand machine language programs

32 8-bit main memory registers 5 bits (25 registers) to represent an address 00000 to 11111 PC holds memory addresses 5-bit PC

For simplicity, assume only positive and negative integers (2’s complement notation) 8-bit AC

Page 34: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

0

clock

16-3000 MHz (~3.0 GHz)

Page 35: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

A Simple 8-bit Computer

Two 1-bit flags zflag: 1 if AC zero, 0 otherwise pflag: 1 is AC is positive, 0 otherwise

ALU supports the following basic operations Addition, subtraction, if AC=0, if AC>0

8 instructions (next slide) 3 bits (8 instructions) 000 to 111 8 bits per memory location rest 5 bits of the instruction

contain the address of the input data to the instruction III AAAAA 8-bit IR

Memory holds 8-bit data or instructions

Page 36: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

The Machine Language Instruction set depending on CPU

Hardwired Binary code for each instruction (Opcode) Different CPUs might have different operations for

which circuits exit in the ALU

Programs can only use those opcodes

The set of all opcodes (i.e. instructions) together is known as the machine language

Page 37: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly Language

Computers can only understand machine code Programs written in assembly must be

translated to machine code to be executable by CPU

The assembler is responsible for that Stored in memory and executed before any

assembly program can be executed (english-like) assembly source code (binary)

machine code Does a lookup for each word (Opcodes)

Other things (find empty memory locations for my variables)

The result is called object code

Page 38: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Machine Language of a Computer

Instruction

Opcode

Address

Description

HALT: 000xxxxx

000 (i.e. 0)

NOT USED

Stop program execution (Halt does not require an address)

JUMP: 001xxxxx

001 (i.e. 1)

xxxxx Place address in PC (unconditional)

JZER: 010xxxxx

010 (i.e. 2)

xxxxx Place address in PC only of AC=0 (i.e. if zflag=1) (conditional)

JPOS: 011xxxxx

011 (i.e. 3)

xxxxx Place address in PC only of AC>0 (i.e. if pflag=1) (conditional)

LOAD: 100xxxxx

100 (i.e. 4)

xxxxx Copy contents of address into AC (zflag, pflag might be affected)

STOR: 101xxxxx

101 (i.e. 5)

xxxxx Copy contents of AC into address

ADD: 110xxxxx

110 (i.e. 6)

xxxxx Add contents of address to AC (zflag, pflag might be affected)

SUB: 111xxxxx

111 (i.e. 7)

xxxxx Subtract contents of address from AC (zflag, pflag might be affected)

Page 39: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

A Simple 8-bit Computer Input/Output (from user perspective)

LOAD 30: 100 11110 register 30 in memory is designated as an input cell

A LOAD with address 30 causes machine to access an input device

The user is asked to provide an input (input box) Program waits/pauses meanwhile

The input is saved in address 30 and loaded to AC

STOR 31: 100 11111 register 31 in memory is designated as an output cell

The contents of AC is saved in address 31 Machine also copies data to output device

User sees the output on his/her screen (message box)

Page 40: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

VB-like program 6 Private Sub cmdSimple ()

Dim Sum As Integer Dim N1 As Integer Dim N2 As Integer N1 = inputbox(…) N2 = inputbox(…) Do

Sum = Sum + N2 N2 = N2 -1

Loop While N2>=N1 Msgbox Sum

End Sub

Page 41: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Assembly Version for program 6

READ STOR N1 READ STOR N2 Loop: LOAD Sum ADD N2 STOR Sum LOAD N2 SUB One STOR N2

SUB N1JPOS LoopJZER LoopLOAD SumWRITEHALTSum:0N1: 0N2: 0One:1

Page 42: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Machine-like Version for program 6

00: LOADLOAD 3030 (10011110) 11: STOR 1717 (10101001) 22: LOAD LOAD 3030 (10011110) 33: STOR 1818 (10101010) 44: LOAD 1616 (10001000) 55: ADD 1818 (11001010) 66: STOR 1616 (10101000) 77: LOAD 1616 (10001000) 88: SUB 1919 (11101011) 99: STOR 1616 (10101000)

1010: SUB 1717(11101001)

1111:JPOS 44 (01100100)

1212: JZER 44 (01000100)

1313: LOAD 1616 (10001000)

1414: STORSTOR 3131 (10111111)

1515: HALT (00000000)

1616: 0 (00000000)

1717: 0 (00000000)

1818: 0 (00000000)

1919: 1 (00000001)

Page 43: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Von Neumann Machine

Will see how hardwired operations are accomplished later one Comparison and addition

Build up other operations/tasks using those basic/hardwired operations ones Programmed operations

Page 44: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Fetch-Execute Cycle

Programs are made up of instructions Fetch-Decode-Execute

CU supervises the fetch-execute cycle Fetches one instruction from memory Decodes instruction Increments PC Executes instruction

Page 45: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Fetch-Execute Cycle To supervise the fetch-execute cycle, the CU

has two registers PC (program counter)

Contains the address of the next instruction in memory to fetch

Initially points to first instruction of a program After fetching an instruction, it is incremented by one unless

there is a jump to some other instruction IR (instruction register)

Holds the current instruction Also has a timing clock

Clock chip that generates a steady stream of electric pulses At every pulse, the CPU proceeds by one step

Fetch, send data to ALU, etc … Higher frequency clocks result in faster computers

16-3000 MHz (~3.0 GHz)

Page 46: Assembly & Machine Languages CSCI130 Instructor: Dr. Lynn Ziegler.

Cycle PC IR AC

0 0 - -

1 – F 0 10011110 (LOAD

30)

-

1 – D 0 10011110 (LOAD

30)

-

1 – I 1 10011110 (LOAD

30)

-

1 – E 1 10011110 (LOAD

30)

5 (user input for N1)

2 – F 1 10101000

(STOR 17)

5

2 – D 1 10101000

(STOR 17)

5

2 – I 2 10101000

(STOR 17)

5

2 – E 2 10101000

(STOR 17)

5

… … … ...

… … … …

Cycle PC IR AC

5 – F 5 11001010

(ADD 18)

0 (sum)

5 – D 5 11001010

(ADD 18)

0

5 – I 6 11001010

(ADD 18)

0

5 – E 6 11001010

(ADD 18)

7 (0+ N2 which is 7)

… … … ...

… … … …11 – F 11 0110010

0(JPOS 4)

1 (N2-N2)

11 – D 11 01100100

(JPOS 4)

1

11 – I 12 01100100

(JPOS 4)

1

11 – E 4 01100100

(JPOS 4)

1

… … … ...

… … … …