1 / 15

ECE 353 Introduction to Microprocessor Systems

ECE 353 Introduction to Microprocessor Systems. Michael G. Morrow, P.E. Week 6. Procedures Types Nesting Context Save/Restore Assembling/Linking Multiple Source Files Parameter Passing Register, Memory, Stack Pointers Arithmetic Operands Instructions. Objectives. Procedures. Why?

akiva
Download Presentation

ECE 353 Introduction to Microprocessor Systems

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. ECE 353Introduction to Microprocessor Systems Michael G. Morrow, P.E. Week 6

  2. Procedures Types Nesting Context Save/Restore Assembling/Linking Multiple Source Files Parameter Passing Register, Memory, Stack Pointers Arithmetic Operands Instructions Objectives

  3. Procedures • Why? • Syntax • PROC / ENDP • CALL / RET Operation • CALL types • Intrasegment • IP relative • Indirect • Intersegment • Direct • Indirect • RET types

  4. Procedures • Nesting and Single Module Programs • Example and stack operation • Context Save / Restore • Caller vs. procedure • Course documentation requirements • PUSH / POP balance and order • Testing & Debugging Procedures • Interface • Implementation • Integration

  5. Multiple File Assembly/Linking • Each assembly source file is assembled independently – linker then joins together. • How to make it all work… • EXTRN directive • PUBLIC directive • GLOBAL directive • Segment COMBINE types • Addressability issues • TASM/TLINK commands • Example source code • wk6main.asmwk6proc.asm

  6. Parameter Passing • Register Passing • Memory Passing • Using Pointer Parameters • Example • Stack Passing • Reentrant procedures • Using a stack frame • Parameters • Local variables • Example • ENTER / LEAVE

  7. Arithmetic Operands • Unsigned Binary Integers • Byte • Word • Double-word • Signed Binary Integers • Byte • Word • Double-word • Unpacked BCD • Packed BCD • Arithmetic Overflow • Multi-precision Operations

  8. Unsigned Arithmetic Operations • Most also used for signed arithmetic

  9. Signed Arithmetic Operations • All signed numbers represented in 2’s-complement format • Can use the general math operations discussed for unsigned numbers, plus some specific signed arithmetic instructions…

  10. BCD Arithmetic Operations • Unpacked BCD • Packed BCD

  11. Numeric Conversions • BCD  Binary • Convenient relationship between bit groups and digits • Hexadecimal  binary is similar, but have to account for 0-9 and A-F (a-f) • Binary  Decimal • No convenient relationship between bit groups and digits • Repeated subtraction • Division/modulus

  12. Wrapping Up • Exam 1 will be held on Thursday, October 18, 2001 from 7:15 to 8:45 PM in 132 Noland

  13. .186 assume cs:code, ss:stck, ds:data extrn MyProc:PROC public gVar stck segment db 256 dup (?) ;256 byte stack tos label word ;top of stack stck ends data segment public gVar db 0 ;define variable data ends code segment public main: mov ax, data ;DS addressability mov ds, ax mov ax, stck ;SS addressability mov ss, ax mov sp, offset tos ;initialize sp main_loop: call MyProc ;call external proc jmp main_loop code ends end main ;code entry point wk6main.asm

  14. wk6proc.asm .186 assume cs:code, ds:data global MyProc:PROC global gVar:BYTE data segment public ;empty segment for assume directive data ends code segment public ;need procedure comment header! MyProc proc inc gVar ret MyProc endp code ends end ;don't define another code entry point! wk6proc.asm

  15. TASM/TLINK Commands tasm /l /zi wk6main tasm /l /zi wk6proc tlink /v wk6main wk6proc (the executable file will have the same name as the first object file, so in this case the linker will create wk6main.exe) tlink /v wk6main wk6proc, wk6 (the executable file will be named wk6.exe)

More Related