Microprocessor Theory and Applications with 68000/68020 and

M. RAFIQUZZAMAN, Ph.. Professor California State Polytechnic University Pomona, California and President Rafi Systems, Inc.

WILEY A JOHNWILEY & SONS, INC., PUBLICATION This Page Intentionally Left Blank Theory and Applications with 68000/68020 and Pentium This Page Intentionally Left Blank Microprocessor Theory and Applications with 68000/68020 and Pentium

M. RAFIQUZZAMAN, Ph.D. Professor California State Polytechnic University Pomona, California and President Rafi Systems, Inc.

WILEY A JOHNWILEY & SONS, INC., PUBLICATION Copyright 0 2008 by John Wiley & Sons, Inc. All rights reserved.

Published by John Wiley & Sons, Inc., Hoboken, New Jersey. Published simultaneously in Canada.

No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning, or otherwise, except as permitted under Section 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, Inc., 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 750-4470, or on the web at www.copyright.com. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 11 1 River Street, Hoboken, NJ 07030, (201) 748-601 1, fax (201) 748- 6008, or online at http://www.wiley.comlgo/permission.

Limit of Liability/Disclaimer of Warranty: While the publisher and author have used their best efforts in preparing this book, they make no representations or warranties with respect to the accuracy or completeness of the contents of this book and specifically disclaim any implied warranties of merchantability or fitness for a particular purpose. No warranty may be created or extended by sales representatives or written sales materials. The advice and strategies contained herein may not be suitable for your situation. You should consult with a professional where appropriate. Neither the publisher nor author shall be liable for any loss of profit or any other commercial damages, including but not limited to special, incidental, consequential, or other damages.

For general information on our other products and services or for technical support, please contact our Customer Care Department within the United States at (800) 762-2974, outside the United States at (317) 572- 3993 or fax (317) 572-4002.

Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic format. For information about Wiley products, visit our web site at www.wiley.com.

Library of Congress Cataloging-in-Publication Data:

Rafiquzzaman, Mohamed. Microprocessor theory and applications with 68000/68020 and Pentium / M. Rafiquzzaman. p. cm. Includes bibliographical references and index. ISBN 978-0-470-3803 1-4 (cloth) 1. 68000 series . 2. Pentium (Microprocessor) I. Title. QA76XM6895R34 2008 004.1654~22 2008011009

Printed in the United States of America.

10 9 8 7 6 5 4 3 2 1 To my wge, Kusum; my son, Tito; and my brothel; Elan This Page Intentionally Left Blank CONTENTS

PREFACE XI11 CREDITS XV 1. INTRODUCTION TO MICROPROCESSORS 1 1.1 Explanation of Terms 2 1.2 Microprocessor Data Types 4 1.2.1 Unsigned and Signed Binary Numbers 5 1.2.2 ASCII and EBCDIC Codes 7 1.2.3 Unpacked and Packed Binary-Coded-Decimal Numbers 7 1.2.4 Floating-point Numbers 8 1.3 Evolution of the Microprocessor 9 1.4 Typical Features of 32-bit and 64-bit Microprocessors 15 1.5 Microprocessor-based System Design Concepts 16 1.6 Typical Microprocessor Applications 19 1.6.1 A Simple Microprocessor Application 20 1.6.2 Examples of Typical Microprocessor Applications 21 2. MICROCOMPUTER ARCHITECTURE 23 2.1 Basic Blocks of a Microcomputer 23 2.2 Typical Microcomputer Architecture 24 2.2.1 System Bus 24 2.2.2 Clock Signals 25 2.3 Single-Chip Microprocessor 26 2.3.1 Register Section 26 2.3.2 30 2.3.3 Arithmetic-Logic Unit 32 2.3.4 Functional Representations of Simple and Typical Microprocessors 32 2.3.5 Simplified Explanation of Control Unit design 34 2.4 Program Execution by Conventional Microprocessors 38 2.5 Program Execution by typical 32-bit Microprocessors 38 2.5.1 Pipelining 39 2.5.2 Branch Prediction Feature 44 2.6 Scalar and Superscalar Microprocessors 45 2.7 RISC vs. CISC 45 Questions and Problems 47 vii ... Vlll Contents

3. MICROPROCESSOR MEMORY ORGANIZATION 49 3.1 Introduction 49 3.2 Main memory 50 3.2.1 Read-only Memory 51 3.2.2 Random-Access Memory 52 3.2.3 READ and WRITE Timing Diagrams 52 3.2.4 Main Memory Organization 54 3.2.5 Main Memory Array Design 55 3.3 Microprocessor on-chip and cache 58 3.3.1 Memory Management Concepts 58 3.3.2 Cache Memory Organization 63 Questions and Problems 68 4. MICROPROCESSOR INPUT/OUTPUT 71 4.1 Introduction 71 4.2 Simple I/O Devices 72 4.3 Programmed I/O 74 4.4 Unconditional and Conditional Programmed I/O 76 4.5 I/O 78 4.5.1 Interrupt Types 80 4.5.2 Interrupt Address Vector 80 4.5.3 Saving the Microprocessor Registers 81 4.5.4 Interrupt Priorities 81 4.6 Direct Memory Access (DMA) 84 4.7 Summary of I/O 86 Questions and Problems 87 5. MICROPROCESSOR PROGRAMMING CONCEPTS 89 5.1 Microcomputer Programming Languages 89 5.2 Machine Language 90 5.3 Assembly Language 90 5.3.1 Types of Assemblers 91 5.3.2 Assembler Delimiters 92 5.3.3 Specifying Numbers by Typical Assemblers 93 5.3.4 Assembler Directives or Pseudoinstructions 93 5.3.5 Assembly Language Instruction Formats 95 5.3.6 Instruction Set Architecture (ISA) 97 5.3.7 Typical Instruction Set 98 5.3.8 Typical Addressing Modes 102 5.3.9 Calls in Assembly Language 104 5.4 High-Level Language 104 5.5 Choosing a programming language 105 5.6 Flowcharts 106 Questions and Problems 107 6. ASSEMBLY LANGUAGE PROGRAMMING WITH THE 68000 109 6.1 Introduction 109 6.2 68000 Registers 111 6.3 68000 Memory Addressing 112 6.4 Assembly Language Programming with the 68000 113 Contents ix

6.5 68000 Addressing Modes 117 6.5.1 Register Direct Addressing 117 6.5.2 Address Register Indirect Addressing 118 6.5.3 Absolute Addressing 122 6.5.4 Relative Addressing 123 6.5.5 Immediate Data Addressing 124 6.5.6 Implied Addressing 125 6.6 68000 Instruction Set 125 6.6.1 Data Movement Instructions 128 6.6.2 Arithmetic Instructions 134 6.6.3 Logic Instructions 150 6.6.4 Shift and Rotate Instructions 152 6.6.5 Bit Manipulation Instructions 156 6.6.6 Binary-Coded-Decimal Instructions 157 6.6.7 Program Control Instructions 160 6.6.8 System Control Instructions 163 6.6.9 68000 Stack 166 6.7 68000 Delay Routine 168 Questions and Problems 170 7. 68000 HARDWARE AND INTERFACING 175 7.1 68000 Pins And Signals 175 7.1.1 Synchronous and Asynchronous Control Lines 177 7.1.2 System Control Lines 179 7.1.3 Interrupt Control Lines 181 7.1.4 DMA Control Lines 181 7.1.5 Status Lines 181 7.2 68000 Clock and Reset Signals 181 7.2.1 68000 Clock Signals 181 7.2.2 68000 Reset Circuit 182 7.3 68000 Read and Write Cycle Timing Diagrams 185 7.4 68000 Memory Interface 188 7.5 68000 I10 192 7.5.1 68000 Programmed I10 192 7.5.2 68000 Interrupt System 201 7.5.3 68000 DMA 206 7.6 68000 207 7.7 68000/2732/6116/682 1-Based Microcomputer 208 7.8 with the 68000 Using the TAS Instruction and the AS Signal 212 Questions and Problems 217 8. ASSEMBLY LANGUAGE PROGRAMMING WITH THE 68020 221 8.1 Introduction 22 1 8.2 68020 Functional Characteristics 222 8.3 68020 Registers 225 8.4 68020 Data Types, Organization, and CPU Space Cycle 227 8.5 68020 Addressing Modes 22 8 8.5.1 Address Register Indirect (AM) with Index and 8-Bit Displacement 23 1 8.5.2 ARI with Index (Base Displacement, bd: Value 0 or 16 Bits or 32 Bits) 232 X Contents

8.5.3 Memory Indirect 232 8.5.4 Memory Indirect with PC 233 8.6 68020 Instructions 237 8.6.1 68020 New Privileged Move Instructions 238 8.6.2 Return and Delocate Instruction 238 8.6.3 CHK/CHK2 and CMP/CMP2 Instructions 239 8.6.4 Trap-on-Condition Instructions 243 8.6.5 Bit Field Instructions 245 8.6.6 PACK and UNPK Instructions 247 8.6.7 Multiplication and Division Instructions 250 8.6.8 68000 Enhanced Instructions 254 8.6.9 68020 254 Questions and Problems 256 9. 68020 HARDWARE AND INTERFACING 261 9.1 Introduction 26 1 9.1.1 68020 Pins and Signals 26 1 9.1.2 68020 Dynamic Bus Sizing 265 9.1.3 68020 Timing Diagrams 27 1 9.2 68020 System Design 274 9.2.1 Memory Decode Logic for Memory and VO 275 9.2.2 68020-27C256 Interface 276 9.2.3 68020- 2256C/CH (SRAM) Interface 277 9.2.4 68020 Programmed I/O 279 9.3 68020 Exception processing 282 9.4 68020-based Voltmeter 283 9.4.1 Voltmeter Design Using Programmed I/O 285 9.4.2 Voltmeter Design Using Interrupt I/O 289 9.5 Interfacing a 68020-Based Microcomputer to a Keyboard and a Seven-Segment Display 293 9.5.1 Basics of Keyboard and Display Interface to a Microcomputer 294 9.5.2 68020 Interface to a Hexadecimal Keyboard and a Seven- Segment Display 296 Questions and Problems 302 10. ASSEMBLY LANGUAGE PROGRAMMING WITH THE PENTIUM: PART 1 305 10.1 Introduction 306 10.2 Pentium Registers 308 10.2.1 General-Purpose Registers 308 10.2.2 Stack Pointers and Index Registers 308 10.2.3 Extended Instruction Pointer and Flag Register 310 10.2.4 Segment Registers 311 10.3 Modes of Operation 311 10.3.1 Real Mode 3 12 10.3.2 Protected Mode 315 10.4 Pentium data Organization 316 10.5 Assembly Language Programming with the Pentium 316 10.6 Pentium Addressing Modes 32 1 10.6.1 Pentium’s 32-Bit Addressing in Real Mode 32 1 Contents xi

10.6.2 Register and Immediate Modes 323 10.6.3 Memory 324 10.6.4 Port Addressing Mode 330 10.6.5 Relative Addressing Mode 330 10.6.6 Implied Addressing Mode 330 10.7 Pentium Instructions 33 1 10.7.1 Data Transfer Instructions 33 1 10.7.2 Arithmetic Instructions 340 Questions and Problems 3 62 11. ASSEMBLY LANGUAGE PROGRAMMING WITH THE PENTIUM: PART 2 367 11.1 Logic, Bit Manipulation, Set on condition, Shift, and Rotate Instructions 367 11.2 String Instructions 377 11.3 Unconditional Transfer Instructions 3 82 11.4 Conditional Branch Instructions 389 11.5 Iteration Control Instructions 392 11.6 Interrupt Instructions 393 1 1.7 Control Instructions 394 1 1.8 Pentium Delay routine 395 Questions and Problems 397 12. PENTIUM HARDWARE AND INTERFACING 401 12.1 Pentium Pins and Signals 40 1 12.2 Pentium READ and WRITE Timing Diagrams 403 12.3 Pentium’s interface to memory and I/O 405 12.3.1 Memory Interface 405 12.3.2 Pentium-EPROM Interface 41 1 12.3.3 Pentium-SRAM interface 413 12.3.4 Pentium Programmed I/O 415 12.3.5 Pentium and Exceptions in Real Mode 420 12.4 Pentium-based voltmeter 423 12.4.1 Pentium-based voltmeter using programmed I/O 424 12.4.2 Pentium-based voltmeter using NMI 426 12.4.3 Pentium-based voltmeter using INTR 427 12.5 Interfacing a Pentium-based Microcomputer to a Hexadecimal Keyboard and a Seven Segment Display 430 12.5.1 Basics of Keyboard and Display Interface to a Microcomputer 430 12.5.2 Hexadecimal Keyboard and Seven-Segment Display Interface to a Pentium-Based Microcomputer 43 1 Questions and Problems 437 APPENDIX A: ANSWERS TO SELECTED PROBLEMS 443 APPENDIX B: GLOSSARY 45 1 APPENDIX C: AND SUPPORT CHIPS 467 APPENDIX D: 68000 EXECUTION TIMES 479 APPENDIX E: 68000 / SELECTED 68020 INSTRUCTION SET 487 APPENDIX F: PENTIUM INSTRUCTION FORMAT AND TIMING 497 F. 1. INTEGER INSTRUCTION FORMAT AND TIMING 497 xi i Contents

APPENDIX G: PENTIUM INSTRUCTION SET IN REAL MODE (SELECTED) 525 APPENDIX H: PENTIUM PINOUT AND PIN DESCRIPTIONS 547 H. 1. PentiumTMProcessor Pinout 547 H.2. Design Notes 55 1 H.3. Quick Pin Reference 55 1 H.4. PIN REFERENCE TABLES 558 H.5. Pin Grouping According To Function 560 H.6. Output Pin Grouping According To When Driven 561 BIBLIOGRAPHY 563 INDEX 565 PREFACE

Microprocessors play an important role in the design of digital systems. They are found in a wide range of applications, such as process control and communication systems. This book is written to present the fundamental concepts of assembly language programming and system design concepts associated with typical microprocessors, such as the Motorola 68000/68020 and Pentium. The 68000 is a 16-bit microprocessor that continues to be popular. Since the 68000 uses linear memory and contains 32-bit general- purpose registers, it is an excellent educational tool for acquiring an understanding of both hardware and software aspects of typical microprocessors. Conventional microprocessors such as the 68000 complete fetch, decode and execute cycles of an instruction in sequence. Typical 32-bit microprocessors such as the 68020 and Pentium use pipelining, in which instruction fetch and execute cycles are overlapped. This speeds up the instruction execution time of 32-bit microprocessors. Pipelining was used for many years in mainframe and minicomputer CPUs. In , other mainframe features, such as memory management and floating-point and cache memory, are implemented in 32-bit microprocessors. Hence, brief coverage of these topics is provided in the first part of the book. The book is self-contained and includes a number of basic topics. A basic digital logic background is assumed. Characteristics and principles common to typical microprocessors are emphasized and basic microcomputer interfacing techniques are demonstrated via examples using the simplest possible devices, such as switches, LEDs, A/D converters, the hexadecimal keyboard, and seven-segment displays. The book has evolved from classroom notes developed for three microprocessor courses taught at the Electrical and Computer Engineering Department, California State Poly University, Pomona for the last several years: ECE 343 (Microprocessor I), ECE 432 (Microprocessor 11), and ECE 56 1 (Advanced Microprocessors). The text is divided into 12 chapters. In Chapter 1, we provide a review of terminology, number systems, evolution of microprocessors, system design concepts and typical microprocessor applications. Chapters 2 through 12 form the nucleus of the book. Chapter 2 covers typical microcomputer architectures for both 16-bit (conventional) and 32-bit microprocessors. The concepts of pipelining, superscalar processors and RISC vs. CISC are included.

... XI11