assembly language for intel based based assembly language
play

Assembly Language for Intel- -Based Based Assembly Language for - PowerPoint PPT Presentation

Assembly Language for Intel- -Based Based Assembly Language for Intel th Edition Computers, 4 th Edition Computers, 4 Kip R. Irvine Chapter 3: Assembly Language Fundamentals (c) Pearson Education, 2002. Chapter Overview Chapter Overview


  1. Assembly Language for Intel- -Based Based Assembly Language for Intel th Edition Computers, 4 th Edition Computers, 4 Kip R. Irvine Chapter 3: Assembly Language Fundamentals (c) Pearson Education, 2002.

  2. Chapter Overview Chapter Overview • Basic Elements of Assembly Language • Example: Adding and Subtracting Integers • Assembling, Linking, and Running Programs • Defining Data • Symbolic Constants • Real-Address Mode Programming 2 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  3. Basic Elements of Assembly Language Basic Elements of Assembly Language • Integer constants • Integer expressions • Real-number constants • Character and string constants • Reserved words and identifiers • Directives • Instructions • Labels • Mnemonics • Operands • Comments • Examples 3 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  4. Integer Constants Integer Constants • Optional leading + or – sign • binary, decimal, hexadecimal, or octal digits • Common radix characters: • h – hexadecimal • d – decimal • b – binary • r- encoded real Examples: 30d, 6Ah, 42, 1101b Hexadecimal beginning with letter: 0A5h • To prevent the assembler from interpreting it as an identifier 4 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  5. Integer Expressions Integer Expressions • Operators and precedence levels: • Examples: 5 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  6. Real Number Constants Real Number Constants • Decimal Real • [sign] integer.[integer [exponent]] • E.g., 2., +3.0, -44.2E+05, 26.E5 • Encoded Real • Specify a real constant in hexadecimal as an encoded real if you know the exact binary representation of the number • E.g., 3F800000r -> +1.0 6 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  7. Character and String Constants Character and String Constants • Enclose character in single or double quotes • 'A', "x" • ASCII character = 1 byte • Enclose strings in single or double quotes • "ABC" • 'xyz' • Each character occupies a single byte • Embedded quotes: • 'Say "Goodnight," Gracie' 7 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  8. Reserved Words and Identifiers Reserved Words and Identifiers • Reserved words (Appendix D) cannot be used as identifiers • Instruction mnemonics (ADD, MOV …), directives (tell MASM how to assemble programs), type attributes (BYTE, WORD …), operators (+, - …), predefined symbols (@data …) • Identifiers • 1-247 characters, including digits • case insensitive (by default) • first character must be a letter, _, @, or $ 8 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  9. Directives Directives • Directives • not part of Intel instruction set • part of the assembler’s syntax • case insensitive • .data, .code, proc • Commands that are recognized and acted upon by the assembler as the program’s source code is being assembled • Used to declare code, data areas, select memory model, declare procedures, etc. • Different assemblers have different directives. 9 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  10. Instructions Instructions • Assembled into machine code by assembler • Executed at runtime by the CPU • Member of the Intel IA-32 instruction set • Parts • Label • Mnemonic • Operand • Comment Label: Mnemonic Operand(s) ; Comment 10 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  11. Labels Labels • Act as place markers • marks the address (offset) of code and data • Follow identifier rules • Data label • example: first BYTE 10 • Code label • target of jump and loop instructions • example: L1: target: mov ax, bx … jmp target 11 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  12. Mnemonics and Operands Mnemonics and Operands • Instruction Mnemonics • "reminder" • examples: MOV, ADD, SUB, MUL, INC, DEC • Operands • constant (immediate value) • constant expression • register • memory (data label) 12 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  13. Comments Comments • Comments are good! • explain the program's purpose • when it was written, and by whom • revision information • tricky coding techniques • application-specific explanations COMMENT ! • Single-line comments comment. • begin with semicolon (;) also comment. ! • Multi-line comments • begin with COMMENT directive and a programmer- chosen character • end with the same programmer-chosen character 13 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  14. Instruction Format Examples Instruction Format Examples • No operands • stc ; set Carry flag • One operand • inc eax ; register • inc myByte ; memory • Two operands • add ebx,ecx ; register, register • sub myByte,25 ; memory, constant • add eax,36 * 25 ; register, expression 14 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  15. Example: Adding and Subtracting Integers Example: Adding and Subtracting Integers TITLE Add and Subtract (AddSub.asm) ; This program adds and subtracts 32-bit integers. INCLUDE Irvine32.inc .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h call DumpRegs ; display registers exit ; call a predefined MS-Windows ; function that halts the program ; in Irvine32.inc main ENDP END main 15 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  16. Example Output Example Output Program output, showing registers and flags: EAX=00030000 EBX=7FFDF000 ECX=00000101 EDX=FFFFFFFF ESI=00000000 EDI=00000000 EBP=0012FFF0 ESP=0012FFC4 EIP=00401024 EFL=00000206 CF=0 SF=0 ZF=0 OF=0 16 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  17. Suggested Coding Standards [1/2] Suggested Coding Standards [1/2] • Some approaches to capitalization • capitalize nothing • capitalize everything • capitalize all reserved words, including instruction mnemonics and register names • capitalize only directives and operators • Other suggestions • descriptive identifier names • spaces surrounding arithmetic operators • blank lines between procedures 17 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  18. Suggested Coding Standards [2/2] Suggested Coding Standards [2/2] • Indentation and spacing • code and data labels – no indentation • executable instructions – indent 4-5 spaces • comments: begin at column 40-45, aligned vertically • 1-3 spaces between instruction and its operands • ex: mov ax,bx • 1-2 blank lines between procedures 18 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  19. Alternative Version of AddSub AddSub Alternative Version of TITLE Add and Subtract (AddSubAlt.asm) ; This program adds and subtracts 32-bit integers. .386 .MODEL flat,stdcall .STACK 4096 ExitProcess PROTO, dwExitCode:DWORD DumpRegs PROTO .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h call DumpRegs INVOKE ExitProcess,0 main ENDP END main 19 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  20. Program Template Program Template TITLE Program Template (Template.asm) ; Program Description: ; Author: ; Creation Date: ; Revisions: ; Date: Modified by: INCLUDE Irvine32.inc .data ; (insert variables here) .code main PROC ; (insert executable instructions here) exit main ENDP ; (insert additional procedures here) END main 20 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  21. Assembling, Linking, and Running Programs Assembling, Linking, and Running Programs • Assemble-Link-Execute Cycle • make32.bat • Listing File • Map File 21 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  22. Assemble- -Link Execute Cycle Link Execute Cycle Assemble • The following diagram describes the steps from creating a source program through executing the compiled program. • If the source code is modified, Steps 2 through 4 must be repeated. Link Library Step 4: Step 3: Step 2: OS loader Source Object linker Executable assembler Output File File File Listing Map File File Step 1: text editor 22 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  23. make32.bat make32.bat • Called a batch file • Run it to assemble and link programs • Contains a command that executes ML.EXE (the Microsoft Assembler) • Contains a command that executes LINK32.EXE (the 32-bit Microsoft Linker) • Command-Line syntax: make32 progName (progName includes the .asm extension) (use make16.bat to assemble and link Real-mode programs) 23 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

  24. Listing and Map Files Listing and Map Files • Listing File • Use it to see how your program is compiled • Contains • source code • offset addresses • object code (machine language) • segment names • symbols (variables, procedures, and constants) • Map File • Information about each program segment: • starting address • ending address • size • segment type 24 Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003.

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend