16.317 Microprocessor Systems Design I Instructor: Dr. Michael Geiger Fall 2012 Lecture 10: Flag control instructions Conditional execution.

Slides:



Advertisements
Similar presentations
NEG Instruction Change operand content into two’s complement (negative value) and stored back into its operand mov bl, b neg bl; bl = mov.
Advertisements

Microprocessor Systems Design I Instructor: Dr. Michael Geiger Fall 2013 Lecture 14 Compare instructions; conditional execution.
Computer Organization & Assembly Language
80x86 Instruction Set Dr. Qiang Lin.
Gursharan Singh Tatla 21-Nov-20101www.eazynotes.com.
8086 : INSTRUCTION SET By, Pramod Sunagar Assistant Professor
9-1 ECE 424 Design of Microprocessor-Based Systems Haibo Wang ECE Department Southern Illinois University Carbondale, IL x86 Instructions Part.
Microprocessor Systems Design I
Ch. 7 Logic, Shift and Rotate instr.
Khaled A. Al-Utaibi  Introduction  Arithmetic Instructions  Basic Logical Instructions  Shift Instructions  Rotate Instructions.
Types of Registers (8086 Microprocessor Based)
Lecture 4 ( Assembly Language).
Microprocessors Monday, Apr. 13 Dr. Asmaa Farouk Faculty of Engineering, Electrical Department, Assiut University.
Lecture 5 Presented By Dr. Shazzad Hosain Asst. Prof. EECS, NSU.
1 Logic, Shift, and Rotate Instructions Read Sections 6.2, 7.2 and 7.3 of textbook.
Parul Polytechnic Institute Subject Code : Name Of Subject : Microprocessor and assembly language programming Name of Unit : Instruction cycle.
Assembly 05. Outline Bit mapping Boolean logic (review) Bitwise logic Bit masking Bit shifting Lookup table 1.
Logical and Bit Operations Chapter 9 S. Dandamudi.
EEL 3801 Part V Conditional Processing. This section explains how to implement conditional processing in Assembly Language for the 8086/8088 processors.
3.4 Addressing modes Specify the operand to be used. To generate an address, a segment register is used also. Immediate addressing: the operand is a number.
Introduction to Microprocessors Chapter 3. Programming Model (8086)  Shows the various internal registers that are accessible to the programmer.
III] Logical Group 1)ANA r : LOGICAL AND REGISTER WITH ACCUMULATOR Format : [A] [A] Λ [r] Addressing : Register addressing Group : Logical group Bytes.
The Assemble, Unassemble commands of the debugger: U Command for converting machine code language source Equivalent machine code instructions Equivalent.
Chapter 7 Bit Manipulation. 7.1 Logical Operations.
Comparison Instructions Test instruction –Performs an implied AND operation between each of the bits in 2 operands. Neither operand is modified. (Flags.
Computer and Information Sciences College / Computer Science Department CS 206 D Computer Organization and Assembly Language.
Riyadh Philanthropic Society For Science Prince Sultan College For Woman Dept. of Computer & Information Sciences CS 251 Introduction to Computer Organization.
Bitwise and Logical Manipulations Assembly Language Programming University of Akron Dr. Tim Margush.
Microprocessor Systems Design I
Microprocessor Systems Design I
Chapter Nov-2010
Microprocessor Systems Design I
Microprocessor Systems Design I
16.317: Microprocessor System Design I
Microprocessor Systems Design I
Assembly Language Programming Part 3
Microprocessor Systems Design I
8086 Microprocessor.
Today we are going to discuss about,
Microprocessor Systems Design I
Microprocessor Systems Design I
ICS312 SET 7 Flags.
ADDRESSING MODES.
Microprocessor Systems Design I
EE3541 Introduction to Microprocessors
Instruction System - Bit Manipulation Instruction
Machine control instruction
INSTRUCTION SET.
More on logical instruction and
Assembly Language Programming Part 2
16.317: Microprocessor System Design I
ADDRESSING MODES.
Intel 8088 (8086) Microprocessor Structure
4.2 Arithmetic Instructions
CS-401 Assembly Language Programming
X86’s instruction sets.
Introduction to Assembly Language
Lecture 4 ( Assembly Language).
Flags Register & Jump Instruction
Intel 8088 (8086) Microprocessor Structure
Shift & Rotate Instructions)
University of Gujrat Department of Computer Science
Shift & Rotate Instructions)
University of Gujrat Department of Computer Science
EECE.3170 Microprocessor Systems Design I
EECE.3170 Microprocessor Systems Design I
Microprocessor and Assembly Language
Computer Organization and Assembly Language
Shift and Rotate Instructions.
Ch. 5 – Intel 8086 – study details from Yu & Marut
Presentation transcript:

Microprocessor Systems Design I Instructor: Dr. Michael Geiger Fall 2012 Lecture 10: Flag control instructions Conditional execution

Lecture outline Announcements/reminders  HW 2 due today Solution posted by Monday—no late submissions after that  Next week: lecture on Tuesday, not Monday  Exam 1: Wednesday, 2/20 Will be allowed calculator, one 8.5” x 11” double-sided note sheet Will be provided list of instructions Review  Rotate instructions  Bit test/bit scan instructions Today’s lecture  Flag control instructions  Compare instructions 7/2/2015 Microprocessors I: Lecture 10 2

Review Rotate instructions: bits that are shifted out one side are shifted back in other side  ROL, or ROR,  CF = last bit rotated Rotate through carry instructions  CF acts as “extra” bit that is part of value being rotated  RCL, or RCR, Bit test instructions  Check state of bit and store in CF  Basic test (BT) leaves bit unchanged  Can also set (BTS), clear (BTR), or complement bit (BTC) Bit scan instructions  Find first non-zero bit and store index in dest.  Set ZF = 1 if source non-zero; ZF = 0 if source == 0  BSF: scan right to left (LSB to MSB)  BSR: scan left to right (MSB to LSB) 7/2/2015 Microprocessors I: Lecture 10 3

Flag Control Instructions Modifying the carry flag  Used to initialize the carry flag  Clear carry flag (CLC): CF = 0  Set carry flag (STC): CF = 1  Complement carry flag (CMC): CF = ~CF Modifying the interrupt flag  Used to turn off/on external hardware interrupts  Clear interrupt flag (CLI): IF = 0  Set interrupt flag (STI): IF = 1 7/2/2015 Microprocessors I: Lecture 10 4

5 Flag Control Instructions- Example Debug flag notation CF  CY = 1, NC = 0 Example—Execution of carry flag modification instructions CY=1 CLC ;Clear carry flag STC ;Set carry flag CMC ;Complement carry flag 7/2/2015

Microprocessors I: Lecture 10 6 Loading and Saving the Flag Register All loads and stores of flags take place through the AH register Format of the flags in the AH register B 0 = CF B 2 = PF B 4 = AF B 6 = ZF B 7 = SF Load AH with content of flags registers (LAHF) AH = (Flags) Flags unchanged Store content of AH in flags register (SAHF) (Flags) = AH SF,ZF,AF,PF,CF  updated 7/2/2015

Microprocessors I: Lecture 10 7 Loading and Saving the Flag Register Application—saving a copy of the flags and initializing with new values LAHF ;Load of flags into AH MOV [MEM1],AH ;Save old flags at address MEM1 MOV AH,[MEM2] ;Read new flags from MEM2 into AH SAHF ;Store new flags in flags register 7/2/2015

Microprocessors I: Lecture 10 8 Flag Control Instructions- Example Example—Execution of the flags save and initialization sequence Other flag notation: Flag = 1/0 SF = NG/PL ZF = ZR/NZ AF = AC/NA PF = PE/PO 7/2/2015

Example Given initial state shown in handout List all changed registers/memory locations and their values, as well as CF Instructions  LAHF  MOV[20H], AH  MOVAH, [30H]  SAHF  MOVAX, [26H]  CMC  RCLAX, CL 7/2/2015 Microprocessors I: Lecture 10 9

Example solution LAHF  AH = Flags register = 00H MOV[20H], AH  Address = DS:20H = 10110H  Byte at 10110H = 00H MOVAH, [30H]  Address = DS:30H = 10120H  AH = byte at = 1EH SAHF  Flags register = AH = 1EH  SF = Bit 7 = 0  ZF = Bit 6 = 0  AF = Bit 4 = 1  PF = Bit 2 = 1  CF = Bit 0 = 0 7/2/2015 Microprocessors I: Lecture 10 10

Example solution (cont.) MOVAX, [26H]  Address = DS:26H = 10116H  AX = word at = 4020H CMC  Complement CF  CF = ~CF = ~0 = 1 RCLAX, CL  Rotate AX left through carry by CL places  (CF,AX) = rotated left by 5  AX = = 0414H, CF = 0 7/2/2015 Microprocessors I: Lecture 10 11

Compare Instructions Compare 2 values; store result in ZF/SF General format: CMP D,S  Works by performing subtraction (D) – (S) D, S unchanged  ZF/SF/OF indicate result (signed values) ZF = 1  D == S ZF = 0, (SF XOR OF) = 1  D < S ZF = 0, (SF XOR OF) = 0  D > S 7/2/2015 Microprocessors I: Lecture 10 12

Microprocessors I: Lecture Compare Instructions- Example Example—Initialization of internal registers with immediate data and compare. Example: MOV AX,1234H;Initialize AX MOV BX,ABCDH;Initialize BX CMP AX,BX;Compare AX-BX Data registers AX and BX initialized from immediate data IMM16  (AX) = 1234H  + integer IMM16  (BX) = ABCDH  - integer Compare computation performed as: (AX) = (BX) = (AX) – (BX) = ZF = 0 = NZ SF = 0 = PL ;treats as signed numbers CF = 1 = CY AF = 1 = AC OF = 0 = NV PF = 0 = PO 7/2/2015

Condition codes Conditional execution: result depends on value of flag bit(s) Intel instructions specify condition codes  Condition code implies certain flag values  Opcodes written with cc as part of name  cc can be replaced by any valid code  Examples: SETcc, Jcc Specific examples: SETL, SETZ, JNE JG 7/2/2015 Microprocessors I: Lecture 10 14

Condition codes (cont.) Testing overflow alone  O (OF = 1), NO (OF =0) Testing carry flag alone  “Below” or “above” describes carry flag  Used with unsigned comparisons  B, NAE, or C (CF = 1)  NB, AE, or NC (CF = 0) Testing sign flag alone  S (SF = 1), NS (SF = 0) Testing parity flag alone  P or PE (PF = 1)  NP or PO (PF = 0) 7/2/2015 Microprocessors I: Lecture 10 15

Condition codes (cont.) Testing equality/zero result  E or Z (ZF = 1)  NE or NZ (ZF = 0) Codes that combine multiple flags  Testing “above”/”below” and equality BE or NA (CF OR ZF = 1) NBE or A (CF OR ZF = 0)  Testing less than/greater than L or NGE (SF XOR OF = 1) NL or GE (SF XOR OF = 0) LE or NG ((SF XOR OF) OR ZF = 1) NLE or G ((SF XOR OF) OR ZF = 0) 7/2/2015 Microprocessors I: Lecture 10 16

Final notes Next time: Exam 1 Preview (Tuesday) Reminders:  HW 2 due today Solution posted by Monday—no late submissions after that  Next week: lecture on Tuesday, not Monday  Exam 1: Wednesday, 2/20 Will be allowed calculator, one 8.5” x 11” double-sided note sheet Will be provided list of instructions 7/2/2015 Microprocessors I: Lecture 10 17