Trap Flag) – Interrupts Execution of Every Single Instruction Enabling Programming of Debugging Applications, SF (Ang

Total Page:16

File Type:pdf, Size:1020Kb

Trap Flag) – Interrupts Execution of Every Single Instruction Enabling Programming of Debugging Applications, SF (Ang Lecture 6 IFE: Course in Low Level Programing Instruction Set of Intel x86 Microprocessors Conditional jumps Jcc – jump on condition cc, JMP – jump always, CALL – call a procedure, RET – return from procedure, INT – software interrupt, IRET – return from interrupt, LOOP – loop and iterate, State changing instructions STC – set carry flag, CLC – clear carry flag, STD – set direction flag, CLD – clear direction flag, STI – set interrupt flag, CLI – clear interrupt flag, Privileged instructions LGDT – load global descriptor table register, LIDT – load interrupt descriptor table register, LLDT – load local descriptor table register. IFE: Course in Low Level Programing Conditional jump instructions All programs contain loops and conditional instructions. In case of assembly language these are constructed via Jcc conditional jump instructions. Conditional jump instructions take into consideration appropriate flag bits contained in a processor's flag register. Flags are set by the processor's arithmetical operations, such as: add, sub, mul, div, and, or, xor, etc., also by comparing instructions, such as: cmp or test. cmp x,y instruction compares two arguments by substracting y argument form x, but the result is not stored anywhere, except that appropriate flags are set depending on the risult of that substraction. similarely test x,y performs bitwise and operation on both arguments, and sets appropriate flags, in this case also the result is not stored. Conditional jump instructions Processor's flag register OF (ang. overflow) – overflow for two's complement (signed) numbers , DF (ang. direction flag) – sets the direction for string operations, IF (ang. interrupt enable flag) – enables/disables interrupts, TF (ang. trap flag) – interrupts execution of every single instruction enabling programming of debugging applications, SF (ang. sign flag) – informs about a sign of the result of last arithmetical operation (two's complement numbers), ZF (ang. zero flag) – set when the result is equal to zero, AF (ang. auxiliary flag) – auxiliary carry for BCD numbers handling PF (ang. parity flag) – set when number of binary 1's in the result is even, CF (ang. carry flag) – overflow for binary coded (unsigned) numbers Conditional jump instructions Conditional jumps Jcc (from jump on condition cc) Instruction checks the state of one or more flags in FLAGS register depending on condition cc. If condition is met instruction performs a jump to a target instruction specified by the destination operand which is an immediate 8-bit signed value. The address of target instruction is calculated as the relative one. Affects no flags. Available variants: Jcc imm8 Jcc imm16 Jcc r/m16 Depending on condition cc the following variants of Jcc instruction are available: IFE: Course in Low Level Programing Conditional jump instructions Mnemonic Flags Description JA CF=0 and ZF=0 jump if greater (binary code) JAE CF=0 jump if greater or equal (binary code) JB CF=1 jump if smaller (binary code) JBE CF=1 or ZF=1 jump if smaller or equal (binary code) JC CF=1 see JB instruction JNC CF=0 see JAE instruction JE ZF=1 jump if equal JG SF=OF and ZF=0 jump if greater (two's complement code) JGE SF=OF jump if greater or equal (two's complement code) JL SF!=OF jump if smaller (two's complement code) JLE SF!=OF or ZF=1 jump if smaller or equal (two's complement code) JNA CF=1 or ZF=1 see JBE instruction JNAE CF=1 see JB instruction JNB CF=0 see JAE instruction Conditional jump instructions Mnemonic Flags Description JNBE CF=0 and ZF=0 see JA instruction JNC CF=0 see JAE instruction JNE ZF=0 jump if not equal JNG SF!=OF or ZF=1 see JLE instruction JNGE SF!=OF see JL instruction JNL SF=OF see JGE instruction JNLE SF=OF and ZF=0 see JG instruction JNO OF=0 jump if not carry JNP PF=0 jump if not number of 1 bits is not even JNS SF=0 jump if number is positive or zero JNZ ZF=0 see JNE instruction JO OF=1 jump if overflow occured JP PF=1 jump if not number of 1 bits is even JS SF=1 jump if number is negative JZ ZF=1 see JE instruction Conditional jump instructions EXAMPLES. 1) do {} while loop until AX value is equal to 0. Theloop: ; inside loop instructions test ax, ax jnz theloop 2) for loop iterated by CX register from zero to N-1. mov cx,0 theloop: cmp cx,N jae theend ; inside loop instructions inc cx jmp theloop theend: ; instructions after the loop Conditional jump instructions 3) while loop continuing when a value in CX register is even. theloop: and cx,1 jnz theend ; inside loop instructions jmp theloop theend: ; instructions after the loop 4) do {} while loop continuing when CX>0 and CX<N. theloop: ; inside loop instructions cmp cx,0 jbe theend cmp cx,N jae theend jmp theloop theend: ; instructions after the loop Conditional jump instructions The LOOP instruction. The LOOP instruction is an assembly language counterpart of for loop. First the LOOP instruction decrements CX register. Then it checks weather CX value is not equal to zero. If so, it performs a jump to a specified label (address). In the other case (CX = 0) it doesn't perform a jump, instead the program continues from the next instruction after the LOOP instruction. EXAMPLE. The loop which executes N times. mov cx, N theloop: ; inside loop instructions loop theloop ; instructions after the loop Conditional jump instructions There are also two available variants of the LOOP instruction: LOOPE – jump if CX is not equal to 0 and ZF=1, LOOPNE – jump if CX is not equal to 0 and ZF=0 EXAMPLE. The loop with an additional test for equality of AX and BX registers' values. mov cx, N theloop: ; inside loop instructions cmp ax,bx loopne theloop ; instructions after the loop Equally important is the JMP instruction, which jumps unconditionally (always) to a given address (label). Function calling support instructions Function calling support instructions are assembly counterparts of function calls and return instructions in hi-level programming languages. CALL label – jumps to an address specified by a label. Before making an actual jump it stores the return address on the processor's stack, i.e. the address of the next instruction after the call instruction. This enables proper return when the called function ends. RET – return from a function. Jump to an address which is located on the processor's stack top. By default it's the address stored by a recent call instruction (see above), which called the function. EXAMPLE. call function ; next instruction ... function: ; function instructions … ret ;jumps to a 'next instruction' above Interrupt support instructions Interrupt support instructions are very similar to CALL and RET instructions, except that they are intended to simulate in software an external interrupt occurrence. INT number – cause an interrupt with a number equal to number. causes an interrupt. The processor reacts as if truly an external interrupt occured, i.e. it checks an interrupt table to determine the address of an interrupt routine (number argument), it stores on a stack a return address of a next instruction after the simulated interrupt (after INT instruction). It also stores FLAGS register. IRET – works identiaclly as RET, but additionally, upon return, it retrieves FALGS register form the processor's stack, which was earlier stored by the INT instruction. EXAMPLE. int 09h ; perform simulated interrupt by jumping to an address ; located at 09h-th entry in an interrupt table ; next instruction int09h: ; interrupt handler instructions iret ;jumps to a 'next instruction' above State changing instructions State changing instructions set or clear chosen bits (flags) in a processor's FLAGS regiser, changing processor's internal operating modes. STC – Set carry flag CLC – Clear carry flag Useful for arithmetical operations behavior STD – Set direction flag. CLD – Clear direction flag, Direction is used in string and loop operations determining weather the CX iterating register should be incremented or decremented when performing consecutive string or loop operations. STI – set interrupt flag, CLI – clear interrupt flag, Enable and disable interrupts. Privileged instructions Privileged instructions are instructions which can only be executed when they are contained in a code segment with the highest privilege level attribute (set in a global or local descriptor tables). Normally only an operating system code contains such segments and all other code, i.e. applications' code is placed in segments with lowest privilege level, which means that applications cannot execute privileged instructions. Privileged instructions are thus a part of the protected mode system implemented in IA32 processors. LGDT – load global descriptor table register, LIDT – load interrupt descriptor table register, LLDT – load local descriptor table register. Applications cannot load processors' descriptor tables. Only an operating system can do that. IN – read a value from a given port OUT – write a value to a given port Applications cannot access or program external devices (printer, sound card, network card, video card, keyboard). Only an operating system can do that. Thank you for today's lecture .
Recommended publications
  • Lecture Notes in Assembly Language
    Lecture Notes in Assembly Language Short introduction to low-level programming Piotr Fulmański Łódź, 12 czerwca 2015 Spis treści Spis treści iii 1 Before we begin1 1.1 Simple assembler.................................... 1 1.1.1 Excercise 1 ................................... 2 1.1.2 Excercise 2 ................................... 3 1.1.3 Excercise 3 ................................... 3 1.1.4 Excercise 4 ................................... 5 1.1.5 Excercise 5 ................................... 6 1.2 Improvements, part I: addressing........................... 8 1.2.1 Excercise 6 ................................... 11 1.3 Improvements, part II: indirect addressing...................... 11 1.4 Improvements, part III: labels............................. 18 1.4.1 Excercise 7: find substring in a string .................... 19 1.4.2 Excercise 8: improved polynomial....................... 21 1.5 Improvements, part IV: flag register ......................... 23 1.6 Improvements, part V: the stack ........................... 24 1.6.1 Excercise 12................................... 26 1.7 Improvements, part VI – function stack frame.................... 29 1.8 Finall excercises..................................... 34 1.8.1 Excercise 13................................... 34 1.8.2 Excercise 14................................... 34 1.8.3 Excercise 15................................... 34 1.8.4 Excercise 16................................... 34 iii iv SPIS TREŚCI 1.8.5 Excercise 17................................... 34 2 First program 37 2.1 Compiling,
    [Show full text]
  • Microprocessor's Registers
    IT Basics The microprocessor and ASM Prof. Răzvan Daniel Zota, Ph.D. Bucharest University of Economic Studies Faculty of Cybernetics, Statistics and Economic Informatics [email protected] http://zota.ase.ro/itb Contents • Basic microprocessor architecture • Intel microprocessor registers • Instructions – their components and format • Addressing modes (with examples) 2 Basic microprocessor architecture • CPU registers – Special memory locations on the microprocessor chip – Examples: accumulator, counter, FLAGS register • Arithmetic-Logic Unit (ALU) – The place where most of the operations are being made inside the CPU • Bus Interface Unit (BIU) – It controls data and address buses when the main memory is accessed (or data from the cache memory) • Control Unit and instruction set – The CPU has a fixed instruction set for working with (examples: MOV, CMP, JMP) 3 Instruction’s processing • Processing an instruction requires 3 basic steps: 1. Fetching the instruction from memory (fetch) 2. Instruction’s decoding (decode) 3. Instruction’s execution (execute) – implies memory access for the operands and storing the result • Operation mode of an “antique” Intel 8086 Fetch Decode Execute Fetch Decode Execute …... Microprocessor 1 1 1 2 2 2 Busy Idle Busy Busy Idle Busy …... Bus 4 Instruction’s processing • Modern microprocessors may process more instructions simultaneously (pipelining) • Operation of a pipeline microprocessor (from Intel 80486 to our days) Fetch Fetch Fetch Fetch Store Fetch Fetch Read Fetch 1 2 3 4 1 5 6 2 7 Bus Unit Decode Decode
    [Show full text]
  • X86 Assembly Language Syllabus for Subject: Assembly (Machine) Language
    VŠB - Technical University of Ostrava Department of Computer Science, FEECS x86 Assembly Language Syllabus for Subject: Assembly (Machine) Language Ing. Petr Olivka, Ph.D. 2021 e-mail: [email protected] http://poli.cs.vsb.cz Contents 1 Processor Intel i486 and Higher – 32-bit Mode3 1.1 Registers of i486.........................3 1.2 Addressing............................6 1.3 Assembly Language, Machine Code...............6 1.4 Data Types............................6 2 Linking Assembly and C Language Programs7 2.1 Linking C and C Module....................7 2.2 Linking C and ASM Module................... 10 2.3 Variables in Assembly Language................ 11 3 Instruction Set 14 3.1 Moving Instruction........................ 14 3.2 Logical and Bitwise Instruction................. 16 3.3 Arithmetical Instruction..................... 18 3.4 Jump Instructions........................ 20 3.5 String Instructions........................ 21 3.6 Control and Auxiliary Instructions............... 23 3.7 Multiplication and Division Instructions............ 24 4 32-bit Interfacing to C Language 25 4.1 Return Values from Functions.................. 25 4.2 Rules of Registers Usage..................... 25 4.3 Calling Function with Arguments................ 26 4.3.1 Order of Passed Arguments............... 26 4.3.2 Calling the Function and Set Register EBP...... 27 4.3.3 Access to Arguments and Local Variables....... 28 4.3.4 Return from Function, the Stack Cleanup....... 28 4.3.5 Function Example.................... 29 4.4 Typical Examples of Arguments Passed to Functions..... 30 4.5 The Example of Using String Instructions........... 34 5 AMD and Intel x86 Processors – 64-bit Mode 36 5.1 Registers.............................. 36 5.2 Addressing in 64-bit Mode.................... 37 6 64-bit Interfacing to C Language 37 6.1 Return Values..........................
    [Show full text]
  • (PSW). Seven Bits Remain Unused While the Rest Nine Are Used
    8086/8088MP INSTRUCTOR: ABDULMUTTALIB A. H. ALDOURI The Flags Register It is a 16-bit register, also called Program Status Word (PSW). Seven bits remain unused while the rest nine are used. Six are status flags and three are control flags. The control flags can be set/reset by the programmer. 1. DF (Direction Flag) : controls the direction of operation of string instructions. (DF=0 Ascending order DF=1 Descending order) 2. IF (Interrupt Flag): controls the interrupt operation in 8086µP. (IF=0 Disable interrupt IF=1 Enable interrupt) 3. TF (Trap Flag): controls the operation of the microprocessor. (TF=0 Normal operation TF=1 Single Step operation) The status flags are set/reset depending on the results of some arithmetic or logical operations during program execution. 1. CF (Carry Flag) is set (CF=1) if there is a carry out of the MSB position resulting from an addition operation or subtraction. 2. AF (Auxiliary Carry Flag) AF is set if there is a carry out of bit 3 resulting from an addition operation. 3. SF (Sign Flag) set to 1 when result is negative. When result is positive it is set to 0. 4. ZF (Zero Flag) is set (ZF=1) when result of an arithmetic or logical operation is zero. For non-zero result this flag is reset (ZF=0). 5. PF (Parity Flag) this flag is set to 1 when there is even number of one bits in result, and to 0 when there is odd number of one bits. 6. OF (Overflow Flag) set to 1 when there is a signed overflow.
    [Show full text]
  • Overview of IA-32 Assembly Programming
    Overview of IA-32 assembly programming Lars Ailo Bongo University of Tromsø Contents 1 Introduction ...................................................................................................................... 2 2 IA-32 assembly programming.......................................................................................... 3 2.1 Assembly Language Statements................................................................................ 3 2.1 Modes........................................................................................................................4 2.2 Registers....................................................................................................................4 2.2.3 Data Registers .................................................................................................... 4 2.2.4 Pointer and Index Registers................................................................................ 4 2.2.5 Control Registers................................................................................................ 5 2.2.6 Segment registers ............................................................................................... 7 2.3 Addressing................................................................................................................. 7 2.3.1 Bit and Byte Order ............................................................................................. 7 2.3.2 Data Types.........................................................................................................
    [Show full text]
  • The 8086 Microprocessor
    11 The 8086 Microprocessor 1. Draw the pin diagram of 8086. Ans. There would be two pin diagrams—one for MIN mode and the other for MAX mode of 8086, shown in Figs. 11.1 and 11.2 respectively. The pins that differ with each other in the two modes are from pin-24 to pin-31 (total 8 pins). GND 1 40 VCC AD –AD 35–38 0 15 2–16 & 39 A/S16 3–A/S 19 6 NMI 17 34 BHE/S7 INTR 18 33 MN/MX CLK 19 32 RD INTEL GND 20 31 HOLD 8086 RESET 21 30 HLDA READY 22 29 WR TEST 23 28 M/IO INTA 24 27 DT/R ALE 25 26 DEN Fig. 11.1: Signals of intel 8086 for minimum mode of operation 2. What is the technology used in 8086 µµµP? Ans. It is manufactured using high performance metal-oxide semiconductor (HMOS) technology. It has approximately 29,000 transistors and housed in a 40-pin DIP package. 3. Mention and explain the modes in which 8086 can operate. Ans. 8086 µP can operate in two modes—MIN mode and MAX mode. When MN/MX pin is high, it operates in MIN mode and when low, 8086 operates in MAX mode. 194 Understanding 8085/8086 Microprocessors and Peripheral ICs through Questions and Answers For a small system in which only one 8086 microprocessor is employed as a CPU, the system operates in MIN mode (Uniprocessor). While if more than one 8086 operate in a system then it is said to operate in MAX mode (Multiprocessor).
    [Show full text]
  • Optimizing Subroutines in Assembly Language an Optimization Guide for X86 Platforms
    2. Optimizing subroutines in assembly language An optimization guide for x86 platforms By Agner Fog. Copenhagen University College of Engineering. Copyright © 1996 - 2012. Last updated 2012-02-29. Contents 1 Introduction ....................................................................................................................... 4 1.1 Reasons for using assembly code .............................................................................. 5 1.2 Reasons for not using assembly code ........................................................................ 5 1.3 Microprocessors covered by this manual .................................................................... 6 1.4 Operating systems covered by this manual................................................................. 7 2 Before you start................................................................................................................. 7 2.1 Things to decide before you start programming .......................................................... 7 2.2 Make a test strategy.................................................................................................... 9 2.3 Common coding pitfalls............................................................................................. 10 3 The basics of assembly coding........................................................................................ 12 3.1 Assemblers available ................................................................................................ 12 3.2 Register set
    [Show full text]
  • Assembly Language: IA-X86
    Assembly Language for x86 Processors X86 Processor Architecture CS 271 Computer Architecture Purdue University Fort Wayne 1 Outline Basic IA Computer Organization IA-32 Registers Instruction Execution Cycle Basic IA Computer Organization Since the 1940's, the Von Neumann computers contains three key components: Processor, called also the CPU (Central Processing Unit) Memory and Storage Devices I/O Devices Interconnected with one or more buses Data Bus Address Bus data bus Control Bus registers Processor I/O I/O IA: Intel Architecture Memory Device Device (CPU) #1 #2 32-bit (or i386) ALU CU clock control bus address bus Processor The processor consists of Datapath ALU Registers Control unit ALU (Arithmetic logic unit) Performs arithmetic and logic operations Control unit (CU) Generates the control signals required to execute instructions Memory Address Space Address Space is the set of memory locations (bytes) that are addressable Next ... Basic Computer Organization IA-32 Registers Instruction Execution Cycle Registers Registers are high speed memory inside the CPU Eight 32-bit general-purpose registers Six 16-bit segment registers Processor Status Flags (EFLAGS) and Instruction Pointer (EIP) 32-bit General-Purpose Registers EAX EBP EBX ESP ECX ESI EDX EDI 16-bit Segment Registers EFLAGS CS ES SS FS EIP DS GS General-Purpose Registers Used primarily for arithmetic and data movement mov eax 10 ;move constant integer 10 into register eax Specialized uses of Registers eax – Accumulator register Automatically
    [Show full text]
  • X86 Assembly Language Reference Manual
    x86 Assembly Language Reference Manual Part No: 817–5477–11 March 2010 Copyright ©2010 Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related software documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable: U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are “commercial computer software” or “commercial technical data” pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms setforth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.
    [Show full text]
  • Design of the RISC-V Instruction Set Architecture
    Design of the RISC-V Instruction Set Architecture Andrew Waterman Electrical Engineering and Computer Sciences University of California at Berkeley Technical Report No. UCB/EECS-2016-1 http://www.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-1.html January 3, 2016 Copyright © 2016, by the author(s). All rights reserved. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission. Design of the RISC-V Instruction Set Architecture by Andrew Shell Waterman A dissertation submitted in partial satisfaction of the requirements for the degree of Doctor of Philosophy in Computer Science in the Graduate Division of the University of California, Berkeley Committee in charge: Professor David Patterson, Chair Professor Krste Asanovi´c Associate Professor Per-Olof Persson Spring 2016 Design of the RISC-V Instruction Set Architecture Copyright 2016 by Andrew Shell Waterman 1 Abstract Design of the RISC-V Instruction Set Architecture by Andrew Shell Waterman Doctor of Philosophy in Computer Science University of California, Berkeley Professor David Patterson, Chair The hardware-software interface, embodied in the instruction set architecture (ISA), is arguably the most important interface in a computer system. Yet, in contrast to nearly all other interfaces in a modern computer system, all commercially popular ISAs are proprietary.
    [Show full text]
  • 0X03 the Simplest Device Drivers.Pdf
    The Simplest Device Drivers 3.1 How to compile and link the kernel-mode device driver 3.2 The simplest possible kernel-mode device driver 3.2.1 Simplest driver source code 3.2.2 DriverEntry Routine 3.3 Beeper device driver 3.3.1 Beeper driver source code 3.3.2 Controlling the system timer 3.3.3 Starting the driver automatically 3.4 Service Control Program for giveio driver 3.4.1 Giveio driver's SCP source code 3.4.2 Using the registry for passing some info to the driver 3.4.3 Accessing the CMOS 3.5 Giveio device driver 3.5.1 Giveio driver source code 3.5.2 I/O permission bit map 3.5.3 Reading info from the registry 3.5.4 Give user-mode process access to the I/O ports 3.6 A couple of words about driver debugging Source code: KmdKit\examples\simple\Beeper Source code: KmdKit\examples\simple\DateTime 3.1 How to compile and link the kernel-mode device driver I always place driver's source code into a batch file. Such file is a mixture of *.bat and *.asm files, but has "bat" extension. ;@echo off ;goto make .386 ; driver's code start ;:::::::::::::::::::::::::::::::: ; the rest of the driver's code ; ;:::::::::::::::::::::::::::::::: end DriverEntry ; driver's code end :make set drv=drvname \masm32\bin\ml /nologo /c /coff %drv%.bat \masm32\bin\link /nologo /driver /base:0x10000 /align:32 /out:%drv%.sys /subsystem:native %drv%.obj del %drv%.obj echo. pause If you run such "self-compiling" file the following will occur.
    [Show full text]
  • Instruction Set Summary 30
    Instruction Set Summary 30 This chapter lists all the instructions in the Intel Architecture instruction set, divided into three functional groups: integer, floating-point, and system. It also briefly describes each of the integer instructions. Brief descriptions of the floating-point instructions are given in “Floating-Point Unit”; brief descriptions of the system instructions are given in the Intel Architecture Software Developer’s Manual, Volume 3. Detailed descriptions of all the Intel Architecture instructions are given in Intel Architecture Software Developer’s Manual, Volume 2. Included in this volume are a description of each instruction’s encoding and operation, the effect of an instruction on the EFLAGS flags, and the exceptions an instruction may generate. 30.1 New Intel Architecture Instructions The following sections give the Intel Architecture instructions that were new in the MMX Technology and in the Pentium Pro, Pentium, and Intel486 processors. 30.1.1 New Instructions Introduced with the MMX™ Technology The Intel MMX technology introduced a new set of instructions to the Intel Architecture, designed to enhance the performance of multimedia applications. These instructions are recognized by all Intel Architecture processors that implement the MMX technology. The MMX instructions are listed in “MMX™ Technology Instructions”. 30.1.2 New Instructions in the Pentium® Pro Processor The following instructions are new in the Pentium Pro processor: • CMOVcc—Conditional move (see “Conditional Move Instructions”). • FCMOVcc—Floating-point conditional move on condition-code flags in EFLAGS register (see “Data Transfer Instructions”). • FCOMI/FCOMIP/FUCOMI/FUCOMIP—Floating-point compare and set condition-code flags in EFLAGS register (see “Comparison and Classification Instructions”).
    [Show full text]