Appendix A: 8051 Microcontroller Instructions Set

Total Page:16

File Type:pdf, Size:1020Kb

Appendix A: 8051 Microcontroller Instructions Set Appendix A: 8051 Microcontroller Instructions Set Data transfer operations Instruction Byte Cycles Code Symbolic representation Movement within the microcontroller (no flag is affected) The content of the second register/memory is copied to the content of the first register/ memory MOV A,Rn 1 1 1110 1rrr (PC) (PC) + 1 The program counter is (A) (Rn) added by one unit, and the content of the Rn register is copied to the content of the accumulator (A) register. No flag is affected MOV A, 2 1 1110 0101 (PC) (PC) + 2 The program counter is direct direct (A) (direct) added by two units, address and the content of the position of the internal RAM whose address is direct is copied to the content of the accumulator (A) register MOV A, 1 1 1110 011I (PC) (PC) + 1 The program counter is @Ri (A) ((Ri)) added by one unit, and the content of the memory location whose address is given by the content of the Ri register is copied to the content of the accumulator (A) register MOV A, 2 1 0111 0100 (PC) (PC) + 2 The program counter is #data immediate (A) #data added by two units, data and the date value is copied to the content of the accumulator (A) register (continued) # Springer International Publishing AG, part of Springer Nature 2019 293 S. P. Gimenez, 8051 Microcontrollers, https://doi.org/10.1007/978-3-319-76439-9 294 Appendix A: 8051 Microcontroller Instructions Set Data transfer operations Instruction Byte Cycles Code Symbolic representation MOV Rn,A 1 1 1111 1rrr (PC) (PC) + 1 The program counter is (Rn) (A) added by one unit, and the content of the accumulator (A) register is copied to the content of the Rn register MOV Rn, 2 2 1010 1rrr (PC) (PC) + 2 The program counter is direct direct (Rn) (direct) added by two units, address and the content of the internal RAM location whose address is direct is copied to the content of the Rn register MOV Rn, 2 1 0111 1rrr (PC) (PC) + 2 The program counter is #data immediate (Rn) #data added by two units, data and the date value is copied to the content of Rn register MOV direct, 2 1 1111 0101 (PC) (PC) + 2 The program counter is A direct (direct) (A) added by two units, address and the content of the accumulator (A) register is copied to the content of the internal RAM location whose address is direct MOV direct, 2 2 1000 1rrr (PC) (PC) + 2 The program counter is Rn direct (direct) (Rn) added by two units, address and the content of the Rn register is copied to the content of the internal RAM memory location whose address is direct MOV direct, 3 2 1000 0101 (PC) (PC) + 3 The program counter is direct dir.adr.src (direct) (direct) added by three units, dir.adr. and the content of the dest position of the internal RAM whose address is direct is copied to the content of the internal RAM memory location whose address is direct MOV direct, 2 2 1000 011i (PC) (PC) + 2 The program counter is @Ri direct (direct) ((Ri)) added by two units, address and the content of the internal RAM position whose address is given (continued) Appendix A: 8051 Microcontroller Instructions Set 295 Data transfer operations Instruction Byte Cycles Code Symbolic representation by the content of the Ri register is copied to the content of the internal RAM memory location whose address is direct MOV direct, 3 2 0111 0101 (PC) (PC) + 3 The program counter is #data dir. adr. (direct) #data added by three units, immed. and the date value is data copied to the content of the internal RAM location whose address is direct MOV @Ri, 1 1 1111 011i (PC) (PC) + 1 The program counter is A ((Ri)) (A) added by one unit, and the content of the accumulator (A) register is copied to the content of the internal RAM position whose address is given by the content of the Ri register MOV @Ri, 2 2 1010 011i (PC) (PC) + 2 The program counter is direct direct ((Ri)) (direct) added by two units, address and the content of the internal RAM location whose address is direct is copied to the content of the internal RAM position whose address is given by the content of the Ri register MOV @Ri, 2 1 0111 011i (PC) (PC) + 2 The program counter is #data immediate ((Ri)) #data added by two units, data and the content of the internal RAM position whose address is given by the content of the Ri register is initialized with the date value MOV 3 2 1001 0000 (PC) (PC) + 3 The program counter is DPTR, imme. (DPH) #data15,8 added by three units, #data16 data15,8 (DPL) #data7,0 and the value data16 is imme. copied to the content of data7,0 the 16-bit DPTR register (continued) 296 Appendix A: 8051 Microcontroller Instructions Set Data transfer operations Instruction Byte Cycles Code Symbolic representation Moving the content from the program memory to the content of the accumulator (A) register (no flag is affected) MOVC A, 1 2 1001 0011 (PC) (PC) + 1 The program counter is @A + DPTR (A) added by one unit, and ((A) + (DPTR)) the content of the program memory position addressed by the sum of the contents of the accumulator (A) and DPTR registers is copied to the content of the accumulator (A) register MOVC A, 1 2 1000 0011 (PC) (PC) + 1 The program counter is @A + PC (A) ((A) + (PC)) added by one unit, and the content of the program memory position addressed by the sum of the contents of the accumulator (A) and PC registers is copied to the content of the accumulator (A) register Moving the content from the external data memory to the content of the accumulator (A) register and vice versa (no flag is affected) MOVX A, 1 2 1110 001i (PC) (PC) + 1 The program counter is @Ri (A) ((Ri)) added by one unit, and the content of the memory location of the external RAM whose address is given by the content of the Ri register is copied to the content of the accumulator (A) register MOVX A, 1 2 1110 0000 (PC) (PC) + 1 The program counter is @DPTR (A) ((DPTR)) added by one unit, and the content of the memory location of the external RAM whose address is given by the content of the DPTR register is copied to the content of the accumulator (A) register (continued) Appendix A: 8051 Microcontroller Instructions Set 297 Data transfer operations Instruction Byte Cycles Code Symbolic representation MOVX 1 2 1111 000i (PC) (PC) + 1 The program counter is @Ri,A ((Ri)) (A) added by one unit, and the content of the accumulator (A) register is copied to the content of the memory location of the external RAM whose address is given by the content of the Ri register MOVX 1 2 1111 0000 (PC) (PC) + 1 The program counter is @DPTR,A ((DPTR)) (A) added by one unit, and the accumulator (A) register is copied to the content of the memory location of the external RAM whose address is given by the content of the DPTR register Storing data with direct addressing in the stack (no flag is affected) PUSH direct 2 2 1100 0000 (PC) (PC) + 2 The program counter is direct (SP) (SP) + 1 added by two units, the address ((SP)) (direct) content of the stack pointer (SP) register is added by one unit (it points to the next memory location), and the content of the register/memory location < src > is copied to the content of the memory location whose address is given by the contents of the SP register Reading data from the stack to the content of data memory with direct addressing (no flag is affected) POP direct 2 2 1101 0000 (PC) (PC) + 2 The program counter is direct (direct) ((SP)) added by two units, the address (SP) (SP) – 1 content of the memory location whose address is given by the content of the SP register is copied to the content of the register/memory location <dest>, and the content of the stack pointer (SP) register is (continued) 298 Appendix A: 8051 Microcontroller Instructions Set Data transfer operations Instruction Byte Cycles Code Symbolic representation decremented by one unit (it points to the memory position of the previously stored data in the stack) Data exchange (no flag is affected) XCH A,Rn 1 1 1100 1rrr (PC) (PC) + 1 The program counter is (A) $ (Rn) added by one unit and exchanges the content of the accumulator (A) register with the content of the Rn register XCH A, 2 1 1100 0101 (PC) (PC) + 2 The program counter is direct direct (A) $ (direct) added by two units and address exchanges the content of the accumulator (A) register with the content of the position of internal RAM whose address is direct XCH A,@Ri 1 1 1100 011i (PC) (PC) + 1 The program counter is (A) $ ((Rn)) added by one unit and exchanges the content of the accumulator (A) register with the content of the internal RAM position whose address is given by the content of the Ri register XCHD A, 1 1 1101 011i (PC) (PC) + 1 The program counter is @Ri (A3–0) $ ((Rn3–0)) added by one unit and exchanges the content of the least significant 4 bits of the accumulator (A) register with the content of the least significant 4 bits of the content of the internal RAM position whose address is given by the contents of the Ri register Arithmetic operations Addition (all flags are affected) ADD A,Rn 1 1 0010 1rrr (PC) (PC) + 1 The program counter is (A) (A) + (Rn) added by one unit, and (continued) Appendix A: 8051 Microcontroller Instructions Set 299 Data transfer operations Instruction Byte Cycles Code Symbolic representation the result of the addition operation between the contents of the accumulator (A) register and Rn register is stored in the content of the accumulator (A) register ADD A, 2 1 0010 0101 (PC) (PC) + 2 The program counter is direct direct (A) added by two units, address (A) + (direct) and the result of the addition operation between the contents of the accumulator (A) register and the position of the internal RAM whose address is
Recommended publications
  • The Instruction Set Architecture
    Quiz 0 Lecture 2: The Instruction Set Architecture COS / ELE 375 Computer Architecture and Organization Princeton University Fall 2015 Prof. David August 1 2 Quiz 0 CD 3 Miles of Music 3 4 Pits and Lands Interpretation 0 1 1 1 0 1 0 1 As Music: 011101012 = 117/256 position of speaker As Number: Transition represents a bit state (1/on/red/female/heads) 01110101 = 1 + 4 + 16 + 32 + 64 = 117 = 75 No change represents other state (0/off/white/male/tails) 2 10 16 (Get comfortable with base 2, 8, 10, and 16.) As Text: th 011101012 = 117 character in the ASCII codes = “u” 5 6 Interpretation – ASCII Princeton Computer Science Building West Wall 7 8 Interpretation Binary Code and Data (Hello World!) • Programs consist of Code and Data • Code and Data are Encoded in Bits IA-64 Binary (objdump) As Music: 011101012 = 117/256 position of speaker As Number: 011101012 = 1 + 4 + 16 + 32 + 64 = 11710 = 7516 As Text: th 011101012 = 117 character in the ASCII codes = “u” CAN ALSO BE INTERPRETED AS MACHINE INSTRUCTION! 9 Interfaces in Computer Systems Instructions Sequential Circuit!! Software: Produce Bits Instructing Machine to Manipulate State or Produce I/O Computers process information State Applications • Input/Output (I/O) Operating System • State (memory) • Computation (processor) Compiler Firmware Instruction Set Architecture Input Output Instruction Set Processor I/O System Datapath & Control Computation Digital Design Circuit Design • Instructions instruct processor to manipulate state Layout • Instructions instruct processor to produce I/O in the same way Hardware: Read and Obey Instruction Bits 12 State State – Main Memory Typical modern machine has this architectural state: Main Memory (AKA: RAM – Random Access Memory) 1.
    [Show full text]
  • Pdp11-40.Pdf
    processor handbook digital equipment corporation Copyright© 1972, by Digital Equipment Corporation DEC, PDP, UNIBUS are registered trademarks of Digital Equipment Corporation. ii TABLE OF CONTENTS CHAPTER 1 INTRODUCTION 1·1 1.1 GENERAL ............................................. 1·1 1.2 GENERAL CHARACTERISTICS . 1·2 1.2.1 The UNIBUS ..... 1·2 1.2.2 Central Processor 1·3 1.2.3 Memories ........... 1·5 1.2.4 Floating Point ... 1·5 1.2.5 Memory Management .............................. .. 1·5 1.3 PERIPHERALS/OPTIONS ......................................... 1·5 1.3.1 1/0 Devices .......... .................................. 1·6 1.3.2 Storage Devices ...................................... .. 1·6 1.3.3 Bus Options .............................................. 1·6 1.4 SOFTWARE ..... .... ........................................... ............. 1·6 1.4.1 Paper Tape Software .......................................... 1·7 1.4.2 Disk Operating System Software ........................ 1·7 1.4.3 Higher Level Languages ................................... .. 1·7 1.5 NUMBER SYSTEMS ..................................... 1-7 CHAPTER 2 SYSTEM ARCHITECTURE. 2-1 2.1 SYSTEM DEFINITION .............. 2·1 2.2 UNIBUS ......................................... 2-1 2.2.1 Bidirectional Lines ...... 2-1 2.2.2 Master-Slave Relation .. 2-2 2.2.3 Interlocked Communication 2-2 2.3 CENTRAL PROCESSOR .......... 2-2 2.3.1 General Registers ... 2-3 2.3.2 Processor Status Word ....... 2-4 2.3.3 Stack Limit Register 2-5 2.4 EXTENDED INSTRUCTION SET & FLOATING POINT .. 2-5 2.5 CORE MEMORY . .... 2-6 2.6 AUTOMATIC PRIORITY INTERRUPTS .... 2-7 2.6.1 Using the Interrupts . 2-9 2.6.2 Interrupt Procedure 2-9 2.6.3 Interrupt Servicing ............ .. 2-10 2.7 PROCESSOR TRAPS ............ 2-10 2.7.1 Power Failure ..............
    [Show full text]
  • Simple Computer Example Register Structure
    Simple Computer Example Register Structure Read pp. 27-85 Simple Computer • To illustrate how a computer operates, let us look at the design of a very simple computer • Specifications 1. Memory words are 16 bits in length 2. 2 12 = 4 K words of memory 3. Memory can be accessed in one clock cycle 4. Single Accumulator for ALU (AC) 5. Registers are fully connected Simple Computer Continued 4K x 16 Memory MAR 12 MDR 16 X PC 12 ALU IR 16 AC Simple Computer Specifications (continued) 6. Control signals • INCPC – causes PC to increment on clock edge - [PC] +1 PC •ACin - causes output of ALU to be stored in AC • GMDR2X – get memory data register to X - [MDR] X • Read (Write) – Read (Write) contents of memory location whose address is in MAR To implement instructions, control unit must break down the instruction into a series of register transfers (just like a complier must break down C program into a series of machine level instructions) Simple Computer (continued) • Typical microinstruction for reading memory State Register Transfer Control Line(s) Next State 1 [[MAR]] MDR Read 2 • Timing State 1 State 2 During State 1, Read set by control unit CLK - Data is read from memory - MDR changes at the Read beginning of State 2 - Read is completed in one clock cycle MDR Simple Computer (continued) • Study: how to write the microinstructions to implement 3 instructions • ADD address • ADD (address) • JMP address ADD address: add using direct addressing 0000 address [AC] + [address] AC ADD (address): add using indirect addressing 0001 address [AC] + [[address]] AC JMP address 0010 address address PC Instruction Format for Simple Computer IR OP 4 AD 12 AD = address - Two phases to implement instructions: 1.
    [Show full text]
  • Appendix D an Alternative to RISC: the Intel 80X86
    D.1 Introduction D-2 D.2 80x86 Registers and Data Addressing Modes D-3 D.3 80x86 Integer Operations D-6 D.4 80x86 Floating-Point Operations D-10 D.5 80x86 Instruction Encoding D-12 D.6 Putting It All Together: Measurements of Instruction Set Usage D-14 D.7 Concluding Remarks D-20 D.8 Historical Perspective and References D-21 D An Alternative to RISC: The Intel 80x86 The x86 isn’t all that complex—it just doesn’t make a lot of sense. Mike Johnson Leader of 80x86 Design at AMD, Microprocessor Report (1994) © 2003 Elsevier Science (USA). All rights reserved. D-2 I Appendix D An Alternative to RISC: The Intel 80x86 D.1 Introduction MIPS was the vision of a single architect. The pieces of this architecture fit nicely together and the whole architecture can be described succinctly. Such is not the case of the 80x86: It is the product of several independent groups who evolved the architecture over 20 years, adding new features to the original instruction set as you might add clothing to a packed bag. Here are important 80x86 milestones: I 1978—The Intel 8086 architecture was announced as an assembly language– compatible extension of the then-successful Intel 8080, an 8-bit microproces- sor. The 8086 is a 16-bit architecture, with all internal registers 16 bits wide. Whereas the 8080 was a straightforward accumulator machine, the 8086 extended the architecture with additional registers. Because nearly every reg- ister has a dedicated use, the 8086 falls somewhere between an accumulator machine and a general-purpose register machine, and can fairly be called an extended accumulator machine.
    [Show full text]
  • PIC Family Microcontroller Lesson 02
    Chapter 13 PIC Family Microcontroller Lesson 02 Architecture of PIC 16F877 Internal hardware for the operations in a PIC family MCU direct Internal ID, control, sequencing and reset circuits address 7 14-bit Instruction register 8 MUX program File bus Select 8 Register 14 8 8 W Register (Accumulator) ADDR Status Register MUX Flash Z, C and DC 9 Memory Data Internal EEPROM RAM 13 Peripherals 256 Byte Program Registers counter Ports data 368 Byte 13 bus 2011 Microcontrollers-... 2nd Ed. Raj KamalA to E 3 8-level stack (13-bit) Pearson Education 8 ALU Features • Supports 8-bit operations • Internal data bus is of 8-bits 2011 Microcontrollers-... 2nd Ed. Raj Kamal 4 Pearson Education ALU Features • ALU operations between the Working (W) register (accumulator) and register (or internal RAM) from a register-file • ALU operations can also be between the W and 8-bits operand from instruction register (IR) • The operations also use three flags Z, C and DC/borrow. [Zero flag, Carry flag and digit (nibble) carry flag] 2011 Microcontrollers-... 2nd Ed. Raj Kamal 5 Pearson Education ALU features • The destination of result from ALU operations can be either W or register (f) in file • The flags save at status register (STATUS) • PIC CPU is a one-address machine (one operand specified in the instruction for ALU) 2011 Microcontrollers-... 2nd Ed. Raj Kamal 6 Pearson Education ALU features • Two operands are used in an arithmetic or logic operations • One is source operand from one a register file/RAM (or operand from instruction) and another is W-register • Advantage—ALU directly operates on a register or memory similar to 8086 CPU 2011 Microcontrollers-..
    [Show full text]
  • A Simple Processor
    CS 240251 SpringFall 2019 2020 FoundationsPrinciples of Programming of Computer Languages Systems λ Ben Wood A Simple Processor 1. A simple Instruction Set Architecture 2. A simple microarchitecture (implementation): Data Path and Control Logic https://cs.wellesley.edu/~cs240/s20/ A Simple Processor 1 Program, Application Programming Language Compiler/Interpreter Software Operating System Instruction Set Architecture Microarchitecture Digital Logic Devices (transistors, etc.) Hardware Solid-State Physics A Simple Processor 2 Instruction Set Architecture (HW/SW Interface) processor memory Instructions • Names, Encodings Instruction Encoded • Effects Logic Instructions • Arguments, Results Registers Data Local storage • Names, Size • How many Large storage • Addresses, Locations Computer A Simple Processor 3 Computer Microarchitecture (Implementation of ISA) Instruction Fetch and Registers ALU Memory Decode A Simple Processor 4 (HW = Hardware or Hogwarts?) HW ISA An example made-up instruction set architecture Word size = 16 bits • Register size = 16 bits. • ALU computes on 16-bit values. Memory is byte-addressable, accesses full words (byte pairs). 16 registers: R0 - R15 • R0 always holds hardcoded 0 Address Contents • R1 always holds hardcoded 1 0 First instruction, low-order byte • R2 – R15: general purpose 1 First instruction, Instructions are 1 word in size. high-order byte 2 Second instruction, Separate instruction memory. low-order byte Program Counter (PC) register ... ... • holds address of next instruction to execute. A Simple Processor 5 R: Register File M: Data Memory Reg Contents Reg Contents Address Contents R0 0x0000 R8 0x0 – 0x1 R1 0x0001 R9 0x2 – 0x3 R2 R10 0x4 – 0x5 R3 R11 0x6 – 0x7 R4 R12 0x8 – 0x9 R5 R13 0xA – 0xB R6 R14 0xC – 0xD R7 R15 … Program Counter IM: Instruction Memory PC Address Contents 0x0 – 0x1 ß Processor 1.
    [Show full text]
  • Computer Organization & Architecture Eie
    COMPUTER ORGANIZATION & ARCHITECTURE EIE 411 Course Lecturer: Engr Banji Adedayo. Reg COREN. The characteristics of different computers vary considerably from category to category. Computers for data processing activities have different features than those with scientific features. Even computers configured within the same application area have variations in design. Computer architecture is the science of integrating those components to achieve a level of functionality and performance. It is logical organization or designs of the hardware that make up the computer system. The internal organization of a digital system is defined by the sequence of micro operations it performs on the data stored in its registers. The internal structure of a MICRO-PROCESSOR is called its architecture and includes the number lay out and functionality of registers, memory cell, decoders, controllers and clocks. HISTORY OF COMPUTER HARDWARE The first use of the word ‘Computer’ was recorded in 1613, referring to a person who carried out calculation or computation. A brief History: Computer as we all know 2day had its beginning with 19th century English Mathematics Professor named Chales Babage. He designed the analytical engine and it was this design that the basic frame work of the computer of today are based on. 1st Generation 1937-1946 The first electronic digital computer was built by Dr John V. Atanasoff & Berry Cliford (ABC). In 1943 an electronic computer named colossus was built for military. 1946 – The first general purpose digital computer- the Electronic Numerical Integrator and computer (ENIAC) was built. This computer weighed 30 tons and had 18,000 vacuum tubes which were used for processing.
    [Show full text]
  • MIPS: Design and Implementation
    FACULTEIT INGENIEURSWETENSCHAPPEN MIPS: Design and Implementation Computerarchitectuur 1MA Industriele¨ Wetenschappen Elektronica-ICT 2014-10-20 Laurent Segers Contents Introduction......................................3 1 From design to VHDL4 1.1 The factorial algorithm.............................4 1.2 Building modules................................5 1.2.1 A closer look..............................6 1.2.2 VHDL..................................7 1.3 Design in VHDL................................8 1.3.1 Program Counter............................8 1.3.2 Instruction Memory........................... 14 1.3.3 Program Counter Adder........................ 15 1.4 Bringing it all together - towards the MIPS processor............ 15 2 Design validation 19 2.1 Instruction Memory............................... 19 2.2 Program Counter................................ 22 2.3 Program Counter Adder............................ 23 2.4 The MIPS processor.............................. 23 3 Porting to FPGA 25 3.1 User Constraints File.............................. 25 4 Additional features 27 4.1 UART module.................................. 27 4.1.1 Connecting the UART-module to the MIPS processor........ 28 4.2 Reprogramming the MIPS processor..................... 29 A Xilinx ISE software 30 A.1 Creating a new project............................. 30 A.2 Adding a new VHDL-module......................... 30 A.3 Creating an User Constraints File....................... 30 A.4 Testbenches................................... 31 A.4.1 Creating testbenches.......................... 31 A.4.2 Running testbenches.......................... 31 2 Introduction Nowadays, most programmers write their applications in what we call \the Higher Level Programming languages", such as Java, C#, Delphi, etc. These applications are then compiled into machine code. In order to run this machine code the underlying hardware needs be able to \understand" the proposed code. The aim of this practical course is to give an inside on the principles of a working system.
    [Show full text]
  • Overview of the MIPS Architecture: Part I
    Overview of the MIPS Architecture: Part I CS 161: Lecture 0 1/24/17 Looking Behind the Curtain of Software • The OS sits between hardware and user-level software, providing: • Isolation (e.g., to give each process a separate memory region) • Fairness (e.g., via CPU scheduling) • Higher-level abstractions for low-level resources like IO devices • To really understand how software works, you have to understand how the hardware works! • Despite OS abstractions, low-level hardware behavior is often still visible to user-level applications • Ex: Disk thrashing Processors: From the View of a Terrible Programmer Letter “m” Drawing of bird ANSWERS Source code Compilation add t0, t1, t2 lw t3, 16(t0) slt t0, t1, 0x6eb21 Machine instructions A HARDWARE MAGIC OCCURS Processors: From the View of a Mediocre Programmer • Program instructions live Registers in RAM • PC register points to the memory address of the instruction to fetch and execute next • Arithmetic logic unit (ALU) performs operations on PC registers, writes new RAM values to registers or Instruction memory, generates ALU to execute outputs which determine whether to branches should be taken • Some instructions cause Devices devices to perform actions Processors: From the View of a Mediocre Programmer • Registers versus RAM Registers • Registers are orders of magnitude faster for ALU to access (0.3ns versus 120ns) • RAM is orders of magnitude larger (a PC few dozen 32-bit or RAM 64-bit registers versus Instruction GBs of RAM) ALU to execute Devices Instruction Set Architectures (ISAs)
    [Show full text]
  • Reverse Engineering X86 Processor Microcode
    Reverse Engineering x86 Processor Microcode Philipp Koppe, Benjamin Kollenda, Marc Fyrbiak, Christian Kison, Robert Gawlik, Christof Paar, and Thorsten Holz, Ruhr-University Bochum https://www.usenix.org/conference/usenixsecurity17/technical-sessions/presentation/koppe This paper is included in the Proceedings of the 26th USENIX Security Symposium August 16–18, 2017 • Vancouver, BC, Canada ISBN 978-1-931971-40-9 Open access to the Proceedings of the 26th USENIX Security Symposium is sponsored by USENIX Reverse Engineering x86 Processor Microcode Philipp Koppe, Benjamin Kollenda, Marc Fyrbiak, Christian Kison, Robert Gawlik, Christof Paar, and Thorsten Holz Ruhr-Universitat¨ Bochum Abstract hardware modifications [48]. Dedicated hardware units to counter bugs are imperfect [36, 49] and involve non- Microcode is an abstraction layer on top of the phys- negligible hardware costs [8]. The infamous Pentium fdiv ical components of a CPU and present in most general- bug [62] illustrated a clear economic need for field up- purpose CPUs today. In addition to facilitate complex and dates after deployment in order to turn off defective parts vast instruction sets, it also provides an update mechanism and patch erroneous behavior. Note that the implementa- that allows CPUs to be patched in-place without requiring tion of a modern processor involves millions of lines of any special hardware. While it is well-known that CPUs HDL code [55] and verification of functional correctness are regularly updated with this mechanism, very little is for such processors is still an unsolved problem [4, 29]. known about its inner workings given that microcode and the update mechanism are proprietary and have not been Since the 1970s, x86 processor manufacturers have throughly analyzed yet.
    [Show full text]
  • Introduction to Cpu
    microprocessors and microcontrollers - sadri 1 INTRODUCTION TO CPU Mohammad Sadegh Sadri Session 2 Microprocessor Course Isfahan University of Technology Sep., Oct., 2010 microprocessors and microcontrollers - sadri 2 Agenda • Review of the first session • A tour of silicon world! • Basic definition of CPU • Von Neumann Architecture • Example: Basic ARM7 Architecture • A brief detailed explanation of ARM7 Architecture • Hardvard Architecture • Example: TMS320C25 DSP microprocessors and microcontrollers - sadri 3 Agenda (2) • History of CPUs • 4004 • TMS1000 • 8080 • Z80 • Am2901 • 8051 • PIC16 microprocessors and microcontrollers - sadri 4 Von Neumann Architecture • Same Memory • Program • Data • Single Bus microprocessors and microcontrollers - sadri 5 Sample : ARM7T CPU microprocessors and microcontrollers - sadri 6 Harvard Architecture • Separate memories for program and data microprocessors and microcontrollers - sadri 7 TMS320C25 DSP microprocessors and microcontrollers - sadri 8 Silicon Market Revenue Rank Rank Country of 2009/2008 Company (million Market share 2009 2008 origin changes $ USD) Intel 11 USA 32 410 -4.0% 14.1% Corporation Samsung 22 South Korea 17 496 +3.5% 7.6% Electronics Toshiba 33Semiconduc Japan 10 319 -6.9% 4.5% tors Texas 44 USA 9 617 -12.6% 4.2% Instruments STMicroelec 55 FranceItaly 8 510 -17.6% 3.7% tronics 68Qualcomm USA 6 409 -1.1% 2.8% 79Hynix South Korea 6 246 +3.7% 2.7% 812AMD USA 5 207 -4.6% 2.3% Renesas 96 Japan 5 153 -26.6% 2.2% Technology 10 7 Sony Japan 4 468 -35.7% 1.9% microprocessors and microcontrollers
    [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]