ECE 353 Introduction to Microprocessor Systems - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

ECE 353 Introduction to Microprocessor Systems

Description:

Mnemonic. Rotate Instructions. Rotate count ... Mnemonic. Unconditional Jumps ... X is mnemonic for condition to test. All conditional jumps are short. ... – PowerPoint PPT presentation

Number of Views:33
Avg rating:3.0/5.0
Slides: 25
Provided by: michaelmor
Category:

less

Transcript and Presenter's Notes

Title: ECE 353 Introduction to Microprocessor Systems


1
ECE 353Introduction to Microprocessor Systems
Week 5
  • Michael J. Schulte

2
Topics
  • Flags Register
  • Bit manipulation
  • Logical Instructions
  • Shift/Rotate Instructions
  • Branching
  • Conditional
  • Unconditional
  • Looping
  • Structured Programming
  • Stack Allocation and Operation

3
FLAGS Register
  • aka the Processor Status Word (PSW)
  • A flag is generally a marker used to indicate
    or record some condition.
  • PSW contains 6 status flags
  • AF, CF, OF, PF, SF, ZF
  • and 3 control flags
  • DF, IF, TF

80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW) 80C188EB Processor Status Word (PSW)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-- -- -- -- OF DF IF TF SF ZF -- AF -- PF -- CF
1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
4
PSW Status Flags
  • The status flags reflect the result of the
    previous logical or arithmetic operation.
  • AF indicates a carry or borrow between the high
    and low nibbles of the accumulator, used for BCD.
  • CF indicates a carry from, or a borrow to, the
    MSb of an arithmetic result
  • Can also modify directly with CLC / CMC / STC to
    use as a Boolean status bit.
  • OF an arithmetic overflow has occurred
  • PF set if the operation resulted in even parity
  • SF set if the result is negative (i.e. MSb 1)
  • ZF set if the result is zero

5
Control Flags
  • The control flags control certain aspects of the
    processors execution
  • DF direction flag
  • Determines the direction of pointer modifications
    in string operations. If DF0, then increment
    pointers, otherwise decrement.
  • IF interrupt enable flag
  • If set, the processor can recognize maskable
    interrupts.
  • TF trap flag
  • If set, the processor will execute in single-step
    mode.

6
Logical Instructions
  • Logical instructions operate bit-wise.
  • NOT does not affect flags.

Mnemonic Operands Function O S Z A P C
NOT dst Logical complement - - - - - -
AND dst,src Logical AND 0 ? ? ? ? 0
OR dst,src Logical OR 0 ? ? ? ? 0
XOR dst,src Logical exclusive OR 0 ? ? ? ? 0
TEST dst,src Non-destructive AND 0 ? ? ? ? 0
7
Questions?
  • What logical operations would be necessary to
  • Check the state of a single bit?
  • Check if multiple bits are 1?
  • Check if certain bits have desired states?
  • Set a bit or bits?
  • Clear a bit or bits?
  • Toggle a bit or bits?

8
Bit Manipulation
  • Clearing bit(s) - AND
  • Set desired bits to 0 in mask
  • All other bits in mask to 1
  • Setting bit(s) - OR
  • Set desired bits to 1 in mask
  • All other bits in mask to 0
  • Toggling bit(s) - XOR
  • Set desired bits to 1 in mask
  • All other bits in mask to 0
  • Read-modify-write issues

9
Shift Instructions
  • Arithmetic versus logical shifts
  • Shift count source
  • 1
  • CL
  • Immediate byte (new to 80186 instruction set)

Mnemonic Operands Function O S Z A P C
SHL dst, cnt Shift logical left ? ? ? ? ? ?
SAL dst, cnt Shift arithmetic left ? ? ? ? ? ?
SHR dst, cnt Shift logical right ? ? ? ? ? ?
SAR dst, cnt Shift arithmetic right ? ? ? ? ? ?
10
Rotate Instructions
  • Rotate count sources same as shifts
  • Using rotate instruction to swap nibbles
  • Execution time dependent on count

Mnemonic Operands Function O S Z A P C
ROL dst, cnt Rotate left ? - - - - ?
ROR dst, cnt Rotate right ? - - - - ?
RCL dst, cnt Rotate through carry left ? - - - - ?
RCR dst, cnt Rotate through carry right ? - - - - ?
11
Unconditional Jumps
  • Redirect program flow by loading a new IP (and
    possibly a new CS) value.
  • Syntax jmp target
  • Label attributes
  • Target by direct addressing
  • Target by indirect addressing
  • Jump tables
  • Be sure index is bounds-checked!
  • FAR versus NEAR jump tables

12
Conditional Jumps
  • Allow program flow to change in response to
    conditions.
  • Action is based on current state of flags.
  • Syntax jltXgt short-label
  • ltXgt is mnemonic for condition to test.
  • All conditional jumps are short.
  • Can use double jumps if target out of range.
  • Prior instruction must be used to set flags
  • Examples

13
Looping
  • Can use backwards conditional jumps to create a
    loop that can be terminated -
  • By a condition
  • After a predetermined number of iterations
  • Or a combination of both

Mnemonic Operands Function O S Z A P C
INC dst Increment ? ? ? ? ? -
DEC dst Decrement ? ? ? ? ? -
CMP dst, src Compare (dst src, nondestructive) ? ? ? ? ? -
14
Looping
  • Can use the LOOP instructions
  • CX is loop control variable
  • Warning modifying CX in the loop can be
    disastrous

Mnemonic Operands Function O S Z A P C
LOOP shrt_lbl DEC CX JNZ - - - - - -
LOOPE LOOPZ shrt_lbl Loop while CX ltgt 0 and ZF 1 (last operation was zero) - - - - - -
LOOPNE LOOPNZ shrt_lbl Loop while CX ltgt 0 and ZF 0 (last operation was not zero) - - - - - -
15
Implementing Structured Programming Constructs
  • Structured programming basics
  • One entry point, one exit point per procedure
    (subroutine)
  • Based on three basic control structures
  • Sequence
  • Selection
  • If, If/Else, Switch/Case
  • Repetition
  • While
  • Do-While
  • Flowchart Basics

16
Repeated String Instructions
  • String instructions become very useful when used
    with the REP prefix
  • REP, REPE/REPZ, REPNE/REPNZ
  • Pointer modification based on DF (CLD, STD).
  • CX is always loop variable for repeated string
    instructions
  • CMPS order of evaluation is reversed from CMP!

Mnemonic Operands Function O S Z A P C
SCAS dst_s Scan string (AL ESDI) ? ? ? ? ? ?
CMPS dst_s Compare string (DSSI ESDI) ? ? ? ? ? ?
17
Records
  • Provides a syntax for creating and accessing
    bit-encoded data structures.
  • Syntax
  • name RECORD field_nameexpinit_val,
  • Operations
  • MASK
  • Creates a mask for the bit-field identified
  • Shift
  • Using the bit-field name is interpreted as a
    right shift count to move that field to the LSB
  • WIDTH
  • Returns number of bits in a record or field

18
Stack Implementation
  • Stack is a LIFO data structure.
  • What uses the stack?
  • Subroutine return addresses
  • Passed parameters
  • Temporary memory allocation
  • Two basic stack operations
  • PUSH
  • POP
  • Hardware stacks vs. memory stacks
  • Hardware stack
  • Memory stack pointer
  • Stack pointer

19
80C188EB Stack Operation
  • Stack is defined by SSSP
  • Allocating stack space
  • Stack operations
  • All stack operations are 16-bit transfers
  • PUSH / PUSHA / PUSHF
  • POP / POPA / POPF
  • CALL / RETURN
  • ENTER / LEAVE
  • Example

20
Wrapping Up
  • Homework 3 is due Friday, March 4, 2005.
  • Exam 1 will be held on Wednesday, February 13th,
    2005 from 715 to 845PM in room 1227 Engineering
    Hall.
  • One 8.5x11 sheet with original, handwritten
    notes.
  • Instruction set guide will be provided.
  • For next time week read Ch. 8.3-8.5, 8.8, 9.

21
Exercise
Write a code fragment that implements the C
function strchr, which finds a given character in
an ASCIIZ string. strchr scans the string in the
forward direction, looking for the specified
character and finds the first occurrence of the
character in the string. The null-terminator is
considered to be part of the string. Assume the
following initial conditions AL - character to
search for DSDI - address of null-terminated
string to search (string must not start at
offset of zero!) If found, set AX equal offset
of first occurrence, otherwise set AX 0.
22
Mnemonic Jump if condition Flags for condition
JA/JNBE Above / not below or equal (CF OR ZF) 0
JAE/JNB Above or equal / not below CF 0
JB/JNAE Below / not above or equal CF 1
JBE/JNA Below or equal / not above (CF OR ZF) 1
JC Carry CF 1
JCXZ Jump if CX equal 0 CX 0 (uses register)
JE/JZ Equal / zero ZF 1
JB/JLNE Below / not less nor equal ((SF XOR OF) OR ZF) 0
JGE/JNL Greater or equal / not less (SF XOR OF) 0
JL/JNGE Less / not greater nor equal (SF XOR OF) 1
JNC No carry CF 0
JNE/JNZ Not equal / not zero ZF 0
JNO Not overflow OF 0
JNP/JPO Not parity / parity odd PF 0
JNS Not sign (positive) SF 0
JO Overflow OF 1
JP/JPE Parity / parity even PF 1
JS Sign (negative) SF 1
23
Read-Modify-Write Issues
24
PIC16F84 Hardware Stack
Write a Comment
User Comments (0)
About PowerShow.com