150 likes | 318 Views
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?
E N D
ECE 353Introduction 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? • Syntax • PROC / ENDP • CALL / RET Operation • CALL types • Intrasegment • IP relative • Indirect • Intersegment • Direct • Indirect • RET types
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
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
Parameter Passing • Register Passing • Memory Passing • Using Pointer Parameters • Example • Stack Passing • Reentrant procedures • Using a stack frame • Parameters • Local variables • Example • ENTER / LEAVE
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
Unsigned Arithmetic Operations • Most also used for signed arithmetic
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…
BCD Arithmetic Operations • Unpacked BCD • Packed BCD
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
Wrapping Up • Exam 1 will be held on Thursday, October 18, 2001 from 7:15 to 8:45 PM in 132 Noland
.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
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
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)