CISP 310 Overview

Download Report

Transcript CISP 310 Overview

Assembly Language -- Overview
CISP 310
Prof. Chapman
Assembly Language Is…
Not A High-Level
Language
CRC CISP 310
Chapman
High-Level Languages (HLL)
*.obj file
*.c file
void main()
{
do something
}
Compiler
not text,
binary
*.exe file
C library
files
(existing
*.obj files)
not text,
binary
CRC CISP 310
Chapman
High-Level Languages (HLL)
*.c file
C language
program
Programmer’s focus is
on getting the syntax and
structured logic correct in
the source code
CRC CISP 310
Chapman
High-Level Languages
*.cpp file
C++ language
program
Object-oriented
(OO)
CRC CISP 310
Programmer’s focus is
on getting the syntax and
OO logic correct
Chapman
HLL Development Techniques
Compiler catches syntax mistakes
Compiler translates from text into
processor-specific binary codes (object
file)
CRC CISP 310
Chapman
HLL Development Techniques
Memory for data storage and program
code itself is automatically allocated
Linker creates *.exe file
CRC CISP 310
Chapman
Assembly is Not a HLL
An assembly programmer has to deal
directly with the processor memory
(RAM)
The instructions are much more cryptic
like “move data to a different memory
address”
CRC CISP 310
Chapman
Assembly is Not a HLL
We must write code to enable I/O
between keyboard, files, and monitor
(generally using operating system
procedures)
We must use a different design
philosophy besides OO
CRC CISP 310
Chapman
Assembly is Not a HLL
Loop and if logic is implemented
differently in assembly than with HLL
CRC CISP 310
Chapman
HLL OO Procedure
Let’s look at the code that defines the effect of clicking this
Button control (VB.NET language)
CRC CISP 310
Chapman
HLL comment
' called when Call Peedy button is clicked
Private Sub btnCall_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
btnCall.Click
subroutine with 7 HLL
statements
m_objMSpeaker.Show(0)
' move Peedy to a specified location
m_objMSpeaker.MoveTo(Convert.ToInt16(Cursor.Position.X - 100),
Convert.ToInt16(Cursor.Position.Y + 130))
m_objMSpeaker.Play("Wave")
' tell Peedy what to say
m_objMSpeaker.Speak("Hello, I'm Peedy. Please say or select the name of the
person whose phone number you would like to find.", "")
m_objMSpeaker.Speak("If you wish to say the name, press the Scroll Lock key
then speak the name.", "")
m_objMSpeaker.Play("RestPose")
cboName.Enabled = True
btnCall.Enabled = False
End Sub ' btnCall_Click
CRC CISP 310
Chapman
HLL Translated Into Assembly
Every high-level instruction is equivalent
to a group of many assembly
instructions
Each assembly instruction is cryptic
CRC CISP 310
Chapman
This HLL statement
m_objMSpeaker.Speak("Hello, I'm Peedy. Please say or select the name of the
person whose phone number you would like to find.", "")
=
Eight Assembly statements
000000f5
000000fb
00000101
00000103
00000109
0000010b
0000010e
00000114
CRC CISP 310
mov
push
mov
mov
mov
mov
mov
call
esi,dword ptr [ebx+000000ECh]
dword ptr ds:[02050024h]
ecx,esi
edx,dword ptr ds:[020529C4h]
eax,dword ptr [ecx]
eax,dword ptr [eax+0Ch]
eax,dword ptr [eax+000001ACh]
dword ptr [eax+5Ch]
Chapman
Sample Assembly Instruction
register
(memory)
000000f5 mov
esi,dword ptr [ebx+000000ECh]
operation code
CRC CISP 310
hexadecimal
constant
operands
Chapman
Assembly Language Is…
Not Self-Documenting
CRC CISP 310
Chapman
What Does This Accomplish?
000000f5 mov
esi,dword ptr [ebx+000000ECh]
000000fb push
dword ptr ds:[02050024h]
00000101 mov
ecx,esi
00000103 mov
edx,dword ptr ds:[020529C4h]
00000109 mov
eax,dword ptr [ecx]
0000010b mov
eax,dword ptr [eax+0Ch]
0000010e mov
eax,dword ptr [eax+000001ACh]
00000114 call
dword ptr [eax+5Ch]
Huh?
00000117 nop
CRC CISP 310
Chapman
What’s Difficult About
Assembly?
Cannot easily see purpose of code
segment (see previous slide)
Not portable (separate assembly
instructions for Intel, Motorola, …
processors)
CRC CISP 310
Chapman
What’s Right With Assembly?
Every language is based on machine code,
and assembly is closest to machine code
Assembly is necessary to write high-level
language translators
Java/C++/C#/VB.NET/Fortran/…)
CRC CISP 310
Chapman
What’s Right With Assembly?
We can write I/O code to communicate
between our program and peripherals
(cameras, iPods, etc.)
We can write instructions that are optimized
for our processor, creating very very small
and very very fast programs
CRC CISP 310
Chapman
What You Will Learn
At the end of this course, you will be
able to create simple command-line
programs that accept input from the
keyboard and display text output to the
monitor
You will finally understand the structure
of memory and the inner workings of
the processor chip
CRC CISP 310
Chapman
Ending Metaphor
HLL programmers: authors who develop the
content of a book but leave the details of
typesetting, printing, sales, and distribution to
someone else
Assembly programmers: authors who can
both write and publish, sell, and distribute
their own books. They understand
programming at a deeper level than a HLL
programmer.
CRC CISP 310
Chapman