Ece 353 introduction to microprocessor systems
1 / 24

ECE 353 Introduction to Microprocessor Systems - PowerPoint PPT Presentation

  • Uploaded on

ECE 353 Introduction to Microprocessor Systems. Michael J. Schulte. Week 5. Flags Register Bit manipulation Logical Instructions Shift/Rotate Instructions Branching Conditional Unconditional Looping Structured Programming Stack Allocation and Operation. Topics. FLAGS Register.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'ECE 353 Introduction to Microprocessor Systems' - lenora

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Ece 353 introduction to microprocessor systems

ECE 353Introduction to Microprocessor Systems

Michael J. Schulte

Week 5


Flags Register

Bit manipulation

Logical Instructions

Shift/Rotate Instructions





Structured Programming

Stack Allocation and Operation


Flags register
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

Psw status flags
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

Control flags
Control Flags

  • The control flags control certain aspects of the processor’s execution

    • DF – direction flag

      • Determines the direction of pointer modifications in string operations. If DF=0, 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.

Logical instructions
Logical Instructions

  • Logical instructions operate bit-wise.

  • NOT does not affect flags.


  • 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?

Bit manipulation
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

Shift instructions
Shift Instructions

  • Arithmetic versus logical shifts

  • Shift count source

    • 1

    • CL

    • Immediate byte (new to 80186 instruction set)

Rotate instructions
Rotate Instructions

  • Rotate count sources same as shifts

  • Using rotate instruction to swap nibbles

  • Execution time dependent on count

Unconditional jumps
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

Conditional jumps
Conditional Jumps

  • Allow program flow to change in response to conditions.

  • Action is based on current state of flags.

  • Syntax: j<X> short-label

    • <X> 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


  • 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


  • Can use the LOOP instructions

  • CX is loop control variable

    • Warning: modifying CX in the loop can be disastrous

Implementing structured programming constructs
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

Repeated string instructions
Repeated String Instructions

  • String instructions become very useful when used with the REP prefix


  • Pointer modification based on DF (CLD, STD).

  • CX is always loop variable for repeated string instructions

  • CMPS order of evaluation is reversed from CMP!


  • Provides a syntax for creating and accessing bit-encoded data structures.

  • Syntax

    • name RECORD field_name:exp[=init_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

Stack implementation
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

80c188eb stack operation
80C188EB Stack Operation

  • Stack is defined by SS:SP

  • Allocating stack space

  • Stack operations

    • All stack operations are 16-bit transfers


    • POP / POPA / POPF



  • Example

Wrapping up
Wrapping Up

  • Homework #3 is due Friday, March 4, 2005.

  • Exam #1 will be held on Wednesday, February 13th, 2005 from 7:15 to 8:45PM 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.


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

DS:DI - 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.