1 / 22

Assembly Language -- Overview

Assembly Language -- Overview. CISP 310 Prof. Chapman. Assembly Language Is…. Not A High-Level Language. *.obj file. not text, binary. Compiler. *.exe file. Linker. C library files (existing *.obj files). not text, binary. High-Level Languages (HLL). *.c file. void main() {

tanith
Download Presentation

Assembly Language -- Overview

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Assembly Language -- Overview CISP 310 Prof. Chapman

  2. Assembly Language Is… Not A High-Level Language Chapman

  3. *.obj file not text, binary Compiler *.exe file Linker C library files (existing *.obj files) not text, binary High-Level Languages (HLL) *.c file void main() { do something } Chapman

  4. 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 Chapman

  5. High-Level Languages *.cpp file C++ language program Object-oriented (OO) Programmer’s focus is on getting the syntax and OO logic correct Chapman

  6. HLL Development Techniques • Compiler catches syntax mistakes • Compiler translates from text into processor-specific binary codes (object file) Chapman

  7. HLL Development Techniques • Memory for data storage and program code itself is automatically allocated • Linker creates *.exe file Chapman

  8. 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” Chapman

  9. 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 Chapman

  10. Assembly is Not a HLL • Loop and if logic is implemented differently in assembly than with HLL Chapman

  11. HLL OO Procedure Let’s look at the code that defines the effect of clicking this Button control (VB.NET language) Chapman

  12. HLL comment subroutine with 7 HLL statements ' called when Call Peedy button is clicked Private Sub btnCall_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesbtnCall.Click 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 Chapman

  13. HLL Translated Into Assembly • Every high-level instruction is equivalent to a group of many assembly instructions • Each assembly instruction is cryptic Chapman

  14. 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 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] Chapman

  15. hexadecimal constant register (memory) operation code operands Sample Assembly Instruction 000000f5 mov esi,dword ptr [ebx+000000ECh] Chapman

  16. Assembly Language Is… Not Self-Documenting Chapman

  17. 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] 00000117 nop Huh? Chapman

  18. What’s Difficult About Assembly? • Cannot easily see purpose of code segment (see previous slide) • Not portable (separate assembly instructions for Intel, Motorola, … processors) Chapman

  19. 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/…) Chapman

  20. 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 Chapman

  21. 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 Chapman

  22. 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. Chapman

More Related