270 likes | 360 Views
ECE 353 Introduction to Microprocessor Systems. Michael G. Morrow, P.E. Week 3. Objectives. 80C188EB Organization (continued) Segmentation Reset Processing Programmer’s Model 80C188EB Machine Language 80C188EB Assembly Language and Assemblers 80C188EB Debuggers. 80C188EB Architecture.
E N D
ECE 353Introduction to Microprocessor Systems Michael G. Morrow, P.E. Week 3
Objectives • 80C188EB Organization (continued) • Segmentation • Reset Processing • Programmer’s Model • 80C188EB Machine Language • 80C188EB Assembly Language and Assemblers • 80C188EB Debuggers
Segmented Memory Architecture • Memory Segmentation • Logical vs. Physical Addresses • Segment Organization • Topologies • Disjoint • Overlapping • Identical • Physical Address Generation • Advantages • Disadvantages
Programming • Programming Languages • HLL • Assembly Language • Machine Language • Machine Language Instructions • 1 – 6 bytes in length • Encoding
Assembler Primer • Assembler Types • Native Assembler • Cross Assembler • General Instruction Syntax • Instruction Examples • Assembler Functions • Syntax checking • Offset calculation • Encoding to machine code
Source Code File .186 ;use 80186 instructions SWITCHES equ 1234h ;define symbols LEDS equ 5678h assume cs:code ;establish CS addressability code segment ;start of code segment main: mov dx, SWITCHES ;load switch port address in al, dx ;read switches not al ;switch off turns LED on mov dx, LEDS ;load LED port address out dx, al ;write to LED port jmp main ;and repeat indefinitely code ends ;end of code segment end main ;code entry point is at main
Assembler Listing File (page 1) Turbo Assembler Version 4.1 09/12/01 08:49:11 Page 1 week3.ASM 1 .186 ;use 80186 instructions 2 3 =1234 SWITCHES equ 1234h ;define symbols 4 =5678 LEDS equ 5678h 5 6 assume cs:code ;establish CS addressability 7 8 0000 code segment ;start of code segment 9 10 0000 BA 1234 main: mov dx, SWITCHES ;load switch port address 11 0003 EC in al, dx ;read switches 12 0004 F6 D0 not al ;SW=1 --> LED on 13 0006 BA 5678 mov dx, LEDS ;load LED port address 14 0009 EE out dx, al ;write to LED port 15 000A EB F4 jmp main ;and repeat indefinitely 16 17 000C code ends ;end of code segment 18 19 end main ;code entry point is at main
Assembler Listing File (page 2) Turbo Assembler Version 4.1 09/12/01 08:49:11 Page 2 Symbol Table Symbol Name Type Value ??DATE Text "09/12/01" ??FILENAME Text "week3 " ??TIME Text "08:49:11" ??VERSION Number 040A @CPU Text 0103H @CURSEG Text CODE @FILENAME Text WEEK3 @WORDSIZE Text 2 LEDS Number 5678 MAIN Near CODE:0000 SWITCHES Number 1234 Groups & Segments Bit Size Align Combine Class CODE 16 000C Para none
Intel Hex Record Format :020000021000EC :0C000000BA3412ECF6D0BA7856EEEBF4ED :00000001FF Disassembling the data record payload. BA3412(mov dx, 1234h)EC(in al, dx)F6D0(not al) BA7856(mov dx, 5678h)EE(out dx, al)EBF4(jmp –12)
Debugger Primer • So, why is it called a bug, anyway? • Terminology • Typical Debugger Operation • Debugging Tools • Software • Hardware • Comparison of Debugging Tools
Paradigm C++ Demonstration • Paradigm C++ (PCPP) is used in ECE 315 • PCPP is an integrated development environment (IDE) • Code generation • Debugging • Code Development Tips • Use structured programming methods / no spaghetti code. • Use descriptive symbols and names. • Write comments as you go. • When fixing assembler errors, fix only the top one or two and re-assemble – a lot of the later errors may be due to the first few. • When debugging, verify what the registers are loaded with as compared to what you think they should be loaded with.
Instruction Decoding Exercise • The following memory dump was obtained from an 80C188EB-based system • CS:0013 is a valid instruction • Decode the memory data to determine the instructions that were assembled to produce it. CS:0013 B0 12 BA 34 12 FE C7 EB F7
Instruction Decoding Solution 16 000A B0 12 Target: mov al, 12h 17 000C BA 1234 mov dx, 1234h 18 000F FE C7 inc bh 19 0011 EB F7 jmp Target
Wrapping Up • Homework #2 due Friday 9/28