Title: Assembly Language -- Overview
1Assembly Language -- Overview
2Assembly Language Is
- Not A High-Level Language
3High-Level Languages (HLL)
.c file
void main() do something
4High-Level Languages (HLL)
.c file
C language program
Programmers focus is on getting the syntax and
structured logic correct in the source code
5High-Level Languages
.cpp file
C language program Object-oriented (OO)
Programmers focus is on getting the syntax and
OO logic correct
6HLL Development Techniques
- Compiler catches syntax mistakes
- Compiler translates from text into
processor-specific binary codes (object file)
7HLL Development Techniques
- Memory for data storage and program code itself
is automatically allocated - Linker creates .exe file
8Assembly 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
9Assembly 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
10Assembly is Not a HLL
- Loop and if logic is implemented differently in
assembly than with HLL
11HLL OO Procedure
Lets look at the code that defines the effect of
clicking this Button control (VB.NET language)
12 ' called when Call Peedy button is clicked
Private Sub btnCall_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles btnCall.Click m_objMSpeaker.Show(
0) ' move Peedy to a specified location
m_objMSpeaker.MoveTo(Convert.ToInt16(Cursor
.Position.X - 100), Convert.ToInt16(Cursor.Positio
n.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
13HLL Translated Into Assembly
- Every high-level instruction is equivalent to a
group of many assembly instructions - Each assembly instruction is cryptic
14This 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 mov esi,dword ptr
ebx000000ECh 000000fb push dword ptr
ds02050024h 00000101 mov ecx,esi
00000103 mov edx,dword ptr
ds020529C4h 00000109 mov eax,dword
ptr ecx 0000010b mov eax,dword ptr
eax0Ch 0000010e mov eax,dword ptr
eax000001ACh 00000114 call dword ptr
eax5Ch
15Sample Assembly Instruction
000000f5 mov esi,dword ptr
ebx000000ECh
16Assembly Language Is
17What Does This Accomplish?
000000f5 mov esi,dword ptr
ebx000000ECh 000000fb push dword ptr
ds02050024h 00000101 mov ecx,esi
00000103 mov edx,dword ptr
ds020529C4h 00000109 mov eax,dword
ptr ecx 0000010b mov eax,dword ptr
eax0Ch 0000010e mov eax,dword ptr
eax000001ACh 00000114 call dword ptr
eax5Ch 00000117 nop
Huh?
18Whats Difficult About Assembly?
- Cannot easily see purpose of code segment (see
previous slide) - Not portable (separate assembly instructions for
Intel, Motorola, processors)
19Whats 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/)
20Whats 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
21What 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
22Ending 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.