The following document contains information on Cypress products. FUJITSU MICROELECTRONICS CONTROLLER MANUAL CM44-00203-3E F2MC-16FX 16-BIT MICROCONTROLLER PROGRAMMING MANUAL F2MC-16FX 16-BIT MICROCONTROLLER PROGRAMMING MANUAL FUJITSU MICROELECTRONICS LIMITED CONTENTS ■ Objectives and Intended Readership The F2MC-16FX series products are original 16-bit one-chip microcontrollers that support application specific ICs (ASICs). They are suitable for use in various types of industrial equipment, office-automation equipment, on-vehicle equipment, and other equipment that is required to operate at high speed in real-time mode. ■ Trademark Note: F2MC is the abbreviation of FUJITSU Flexible Microcontroller. The company names and brand names herein are the trademarks or registered trademarks of their respective owners. ■ Intended Readership This manual is written for engineers involved in the development of products using the F2MC16FX series microcontrollers. It is designed specially for programmers working in assembly language for use with F2MC-16FX series assemblers, and describes the various instructions used with the F2MC-16FX series products. Be sure to read the entire manual carefully. ■ Configuration of this Manual This manual contains the following 8 chapters and appendix. CHAPTER 1 CPU This chapter describes an overview of the F2MC-16FX CPU core and its sample configuration. CHAPTER 2 MEMORY SPACE This chapter describes memory spaces in the F2MC-16FX CPU. CHAPTER 3 DEDICATED REGISTER This chapter describes the dedicated registers of the F2MC-16FX CPU. CHAPTER 4 GENERAL-PURPOSE REGISTERS This chapter describes the general-purpose registers of the F2MC-16FX CPU. CHAPTER 5 PREFIX CODES This chapter describes the prefix codes. CHAPTER 6 INTERRUPTS This chapter describes the interrupt functions and operations of the F2MC-16FX. CHAPTER 7 ADDRESSING This chapter describes the addressing mode for each instruction of the F2MC-16FX. CHAPTER 8 DETAILED INSTRUCTIONS This chapter describes each execution instruction used in the assembler in a reference format. The execution instructions are presented in alphabetical order. i APPENDIX The appendix section includes lists and maps of instructions for the F2MC-16FX. ■ References The following manuals should be referred along with this manual: • F2MC-16FX/16L/16/16H/16F Assembler Manual • F2MC-16FX Model-Specific Hardware Manual ii • • • • • • • The contents of this document are subject to change without notice. Customers are advised to consult with sales representatives before ordering. The information, such as descriptions of function and application circuit examples, in this document are presented solely for the purpose of reference to show examples of operations and uses of FUJITSU MICROELECTRONICS device; FUJITSU MICROELECTRONICS does not warrant proper operation of the device with respect to use based on such information. When you develop equipment incorporating the device based on such information, you must assume any responsibility arising out of such use of the information. FUJITSU MICROELECTRONICS assumes no liability for any damages whatsoever arising out of the use of the information. Any information in this document, including descriptions of function and schematic diagrams, shall not be construed as license of the use or exercise of any intellectual property right, such as patent right or copyright, or any other right of FUJITSU MICROELECTRONICS or any third party or does FUJITSU MICROELECTRONICS warrant non-infringement of any third-party's intellectual property right or other right by using such information. FUJITSU MICROELECTRONICS assumes no liability for any infringement of the intellectual property rights or other rights of third parties which would result from the use of information contained herein. The products described in this document are designed, developed and manufactured as contemplated for general use, including without limitation, ordinary industrial use, general office use, personal use, and household use, but are not designed, developed and manufactured as contemplated (1) for use accompanying fatal risks or dangers that, unless extremely high safety is secured, could have a serious effect to the public, and could lead directly to death, personal injury, severe physical damage or other loss (i.e., nuclear reaction control in nuclear facility, aircraft flight control, air traffic control, mass transport control, medical life support system, missile launch control in weapon system), or (2) for use requiring extremely high reliability (i.e., submersible repeater and artificial satellite). Please note that FUJITSU MICROELECTRONICS will not be liable against you and/or any third party for any claims or damages arising in connection with above-mentioned uses of the products. Any semiconductor devices have an inherent chance of failure. You must protect against injury, damage or loss from such failures by incorporating safety design measures into your facility and equipment such as redundancy, fire protection, and prevention of over-current levels and other abnormal operating conditions. Exportation/release of any products described in this document may require necessary procedures in accordance with the regulations of the Foreign Exchange and Foreign Trade Control Law of Japan and/or US export control laws. The company names and brand names herein are the trademarks or registered trademarks of their respective owners. Copyright ©2008-2010 FUJITSU MICROELECTRONICS LIMITED All rights reserved. iii iv CONTENTS CHAPTER 1 1.1 1.2 CHAPTER 2 2.1 2.2 2.3 2.4 2.5 PREFIX CODES ............................................................................. 37 38 40 41 42 INTERRUPTS ................................................................................. 45 Overview of Interrupts ....................................................................................................... Interrupt Vector .................................................................................................................. Interrupt Control Registers (ICR) ....................................................................................... Non Maskable Interrupt (NMI) ........................................................................................... Interrupt Flow ..................................................................................................................... Hardware Interrupts ........................................................................................................... Software Interrupts ............................................................................................................ Multiple interrupts .............................................................................................................. Exceptions ......................................................................................................................... CHAPTER 7 7.1 7.2 GENERAL-PURPOSE REGISTERS .............................................. 33 Bank Select Prefix ............................................................................................................. Common Register Bank Prefix (CMR) ............................................................................... Flag Change Inhibit Prefix Code (NCC) ............................................................................ Constraints Related to the Prefix Codes ........................................................................... CHAPTER 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 18 20 22 24 29 30 31 Register Banks in RAM ..................................................................................................... 34 Calling General-purpose Registers in RAM ....................................................................... 36 CHAPTER 5 5.1 5.2 5.3 5.4 10 11 12 14 15 DEDICATED REGISTER ............................................................... 17 Structure of the Dedicated Registers ................................................................................. Accumulator (A) ................................................................................................................. User Stack Pointer (USP) and System Stack Pointer (SSP) ............................................. Processor Status (PS) ....................................................................................................... Program Counter (PC) ....................................................................................................... Direct Page Register (DPR) .............................................................................................. Bank register (PCB, DTB, ADB, USB, SSB) ..................................................................... CHAPTER 4 4.1 4.2 MEMORY SPACE ............................................................................ 9 CPU Memory Space .......................................................................................................... Linear Addressing Mode .................................................................................................... Bank Addressing Mode ..................................................................................................... Memory Space Divided into Banks and Value in Each Bank Register .............................. Data Configuration of and Access to Multi-byte Data in Memory ...................................... CHAPTER 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 CPU .................................................................................................. 1 Overview of CPU ................................................................................................................. 2 Sample Configuration .......................................................................................................... 4 46 48 51 53 55 57 61 63 66 ADDRESSING ................................................................................ 71 Effective Address Field ...................................................................................................... 72 Direct Addressing .............................................................................................................. 73 v 7.3 Indirect Addressing ............................................................................................................ 75 CHAPTER 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 8.11 8.12 8.13 8.14 8.15 8.16 8.17 8.18 8.19 8.20 8.21 8.22 8.23 8.24 8.25 8.26 8.27 8.28 8.29 8.30 8.31 8.32 8.33 8.34 8.35 8.36 8.37 8.38 8.39 8.40 8.41 8.42 8.43 8.44 8.45 DETAILED INSTRUCTIONS .......................................................... 79 Instruction Overview .......................................................................................................... 80 ADD (Add Byte Data of Destination and Source to Destination) ....................................... 83 ADDC (Add Byte Data of AL and AH with Carry to AL) ..................................................... 85 ADDC (Add Byte Data of Accumulator and Effective Address with Carry to Accumulator) 86 ADDCW (Add Word Data of Accumulator and Effective Address with Carry to Accumulator) ........................................................................................................................................... 88 ADDDC (Add Decimal Data of AL and AH with Carry to AL) ............................................ 90 ADDL (Add Long Word Data of Destination and Source to Destination) ........................... 91 ADDSP (Add Word Data of Stack Pointer and Immediate Data to Stack Pointer) ............ 93 ADDW (Add Word Data of AL and AH to AL) .................................................................... 94 ADDW (Add Word Data of Destination and Source to Destination) .................................. 95 AND (And Byte Data of Destination and Source to Destination) ....................................... 97 AND (And Byte Data of Immediate Data and Condition Code Register) ........................... 99 ANDL (And Long Word Data of Destination and Source to Destination) ......................... 101 ANDW (And Word Data of AH and AL to AL) .................................................................. 103 ANDW (And Word Data of Destination and Source to Destination) ................................ 104 ASR (Arithmetic Shift Byte Data of Accumulator to Right) .............................................. 106 ASRL (Arithmetic Shift Long Word Data of Accumulator to Right) .................................. 108 ASRW (Arithmetic Shift Word Data of Accumulator to Right) .......................................... 110 ASRW (Arithmetic Shift Word Data of Accumulator to Right) .......................................... 112 BBcc (Branch if Bit Condition satisfied) ........................................................................... 114 Bcc (Branch relative if Condition satisfied) ...................................................................... 116 CALL (Call Subroutine) .................................................................................................... 118 CALLP (Call Physical Address) ....................................................................................... 120 CALLV (Call Vectored Subroutine) .................................................................................. 122 CBNE (Compare Byte Data and Branch if not Equal) ..................................................... 124 CLRB (Clear Bit) .............................................................................................................. 126 CMP (Compare Byte Data of Destination and Source) ................................................... 127 CMPL (Compare Long Word Data of Destination and Source) ....................................... 129 CMPW (Compare Word Data of Destination and Source) .............................................. 131 CWBNE (Compare Word Data and Branch if not Equal) ................................................ 133 DBNZ (Decrement Byte Data and Branch if not Zero) .................................................... 135 DEC (Decrement Byte Data) ........................................................................................... 137 DECL (Decrement Long Word Data) ............................................................................... 138 DECW (Decrement Word Data) ...................................................................................... 139 DIV (Divide Word Data by Byte Data) ............................................................................. 141 DIVW (Divide Long Word Data by Word Data) ................................................................ 143 DIVU (Divide unsigned Word Data by unsigned Byte Data) ............................................ 145 DIVUW (Divide unsigned Long Word Data by unsigned Word Data) .............................. 147 DWBNZ (Decrement Word Data and Branch if not Zero) ................................................ 149 EXT (Sign Extend from Byte Data to Word Data) ............................................................ 151 EXTW (Sign Extend from Word Data to Long Word Data) .............................................. 152 FILS, FILSI (Fill String Byte) ............................................................................................ 153 FILSW, FILSWI (Fill String Word) .................................................................................... 155 INC (Increment Byte Data (Address Specification)) ........................................................ 157 INCL (Increment Long Word Data) .................................................................................. 158 vi 8.46 8.47 8.48 8.49 8.50 8.51 8.52 8.53 8.54 8.55 8.56 8.57 8.58 8.59 8.60 8.61 8.62 8.63 8.64 8.65 8.66 8.67 8.68 8.69 8.70 8.71 8.72 8.73 8.74 8.75 8.76 8.77 8.78 8.79 8.80 8.81 8.82 8.83 8.84 8.85 8.86 8.87 8.88 8.89 8.90 8.91 8.92 8.93 8.94 INCW (Increment Word Data) ......................................................................................... INT (Software Interrupt) ................................................................................................... INT (Software Interrupt (Vector Specification)) ................................................................ INT9 (Software Interrupt) ................................................................................................. INTP (Software Interrupt) ................................................................................................ JCTX (Jump Context) ...................................................................................................... JMP (Jump Destination Address) .................................................................................... JMPP (Jump Destination Physical Address) ................................................................... LINK (Link and Create New Stack Frame) ...................................................................... LSL (Logical Shift Byte Data of Accumulator to Left) ...................................................... LSLL (Logical Shift Long Word Data of Accumulator to Left) .......................................... LSLW (Logical Shift Word Data of Accumulator to Left) .................................................. LSLW (Logical Shift Word Data of Accumulator to Left) .................................................. LSR (Logical Shift Byte Data of Accumulator to Right) ................................................... LSRL (Logical Shift Long Word Data of Accumulator to Right) ....................................... LSRW (Logical Shift Word Data of Accumulator to Right) ............................................... LSRW (Logical Shift Word Data of Accumulator to Right) ............................................... MOV (Move Byte Data from Source to Accumulator) ...................................................... MOV (Move Byte Data from Accumulator to Destination) ............................................... MOV (Move Byte Immediate Data to Destination) ........................................................... MOV (Move Byte Data from Source to Destination) ........................................................ MOV (Move Byte Data from AH to Memory) ................................................................... MOVB (Move Bit Data from Bit Address to Accumulator) ............................................... MOVB (Move Bit Data from Accumulator to Bit Address) ............................................... MOVEA (Move Effective Address to Destination) ........................................................... MOVL (Move Long Word Data from Source to Accumulator) ......................................... MOVL (Move Long Word Data from Accumulator to Destination) ................................... MOVN (Move Immediate Nibble Data to Accumulator) ................................................... MOVS, MOVSI (Move String Byte with Increment) ......................................................... MOVSD (Move String Byte with Decrement) ................................................................... MOVSW, MOVSWI (Move String Word with Increment) ................................................. MOVSWD (Move String Word with Decrement) .............................................................. MOVW (Move Word Data from Source to Accumulator) ................................................. MOVW (Move Word Data from Accumulator to Destination) ........................................... MOVW (Move Immediate Word Data to Destination) ...................................................... MOVW (Move Word Data from Source to Destination) ................................................... MOVW (Move Immediate Word Data to io) ..................................................................... MOVW (Move Word Data from AH to Memory) .............................................................. MOVX (Move Byte Data with Sign Extension from Source to Accumulator) ................... MUL (Multiply Byte Data of Accumulator) ........................................................................ MUL (Multiply Byte Data of Accumulator and Effective Address) .................................... MULW (Multiply Word Data of Accumulator) ................................................................... MULW (Multiply Word Data of Accumulator and Effective Address) ............................... MULU (Multiply Unsigned Byte Data of Accumulator) ..................................................... MULU (Multiply Unsigned Byte Data of Accumulator and Effective Address) ................. MULUW (Multiply Unsigned Word Data of Accumulator) ................................................ MULUW (Multiply Unsigned Word Data of Accumulator and Effective Address) ............ NEG (Negate Byte Data of Destination) .......................................................................... NEGW (Negate Word Data of Destination) ..................................................................... vii 159 161 163 165 167 169 171 172 173 174 176 178 179 181 183 185 187 189 191 193 195 197 198 200 202 204 206 208 209 211 212 214 215 217 219 221 223 224 225 227 228 229 230 231 232 233 234 235 236 8.95 8.96 8.97 8.98 8.99 8.100 8.101 8.102 8.103 8.104 8.105 8.106 8.107 8.108 8.109 8.110 8.111 8.112 8.113 8.114 8.115 8.116 8.117 8.118 8.119 8.120 8.121 8.122 8.123 8.124 8.125 8.126 8.127 8.128 8.129 8.130 8.131 8.132 8.133 8.134 8.135 8.136 8.137 8.138 8.139 8.140 NOP (No Operation) ........................................................................................................ 237 NOT (Not Byte Data of Destination) ................................................................................ 238 NOTW (Not Word Data of Destination) ........................................................................... 240 NRML (NORMALIZE Long Word) ................................................................................... 241 OR (Or Byte Data of Destination and Source to Destination) .......................................... 242 OR (Or Byte Data of Immediate Data and Condition Code Register to Condition Code Register) ................................................................................................ 244 ORL (Or Long Word Data of Destination and Source to Destination) ............................. 246 ORW (Or Word Data of AH and AL to AL) ...................................................................... 248 ORW (Or Word Data of Destination and Source to Destination) ..................................... 249 POPW (Pop Word Data of Accumulator from Stack Memory) ......................................... 251 POPW (Pop Word Data of AH from Stack Memory) ....................................................... 253 POPW (Pop Word Data of Program Status from Stack Memory) .................................... 254 POPW (Pop Registers from Stack Memory) ................................................................... 256 PUSHW (Push Word Data of Inherent Register to Stack Memory) ................................. 258 PUSHW (Push Registers to Stack Memory) ................................................................... 260 RET (Return from Subroutine) ......................................................................................... 262 RETI (Return from Interrupt) ............................................................................................ 263 RETP (Return from Physical Address) ............................................................................ 265 ROLC (Rotate Byte Data of Accumulator with Carry to Left) ........................................... 267 RORC (Rotate Byte Data of Accumulator with Carry to Right) ........................................ 269 SBBS (Set Bit and Branch if Bit Set) ............................................................................... 271 SCEQ, SCEQI (Scan String Byte until equal with Increment) ......................................... 272 SCEQD (Scan String Byte until equal with Decrement) .................................................. 274 SCWEQ, SCWEQI (Scan String Word until equal with Increment) ................................. 276 SCWEQD (Scan String Word until Equal with Decrement) ............................................. 278 SETB (Set Bit) ................................................................................................................. 280 SUB (Subtract Byte Data of Source from Destination to Destination) ............................. 281 SUBC (Subtract Byte Data of AL from AH with Carry to AL) ........................................... 283 SUBC (Subtract Byte Data of Effective Address from Accumulator with Carry to Accumulator) ......................................................................................................................................... 284 SUBCW (Subtract Word Data of Effective Address from Accumulator with Carry to Accumulator) ................................................................................................................... 286 SUBDC (Subtract Decimal Data of AL from AH with Carry to AL) ................................... 288 SUBL (Subtract Long Word Data of Source from Destination to Destination) ................. 289 SUBW (Subtract Word Data of Source from Destination to Destination) ........................ 291 SUBW (Subtract Word Data of AL from AH to AL) .......................................................... 293 SWAP (Swap Byte Data of Accumulator) ........................................................................ 294 SWAPW (Swap Word Data of Accumulator) ................................................................... 295 UNLINK (Unlink and Create New Stack Frame) .............................................................. 296 WBTc (Wait until Bit Condition Satisfied) ........................................................................ 297 XCH (Exchange Byte Data of Source to Destination) ..................................................... 299 XCHW (Exchange Word Data of Source to Destination) ................................................. 301 XOR (Exclusive Or Byte Data of Destination and Source to Destination) ....................... 303 XORL (Exclusive Or Long Word Data of Destination and Source to Destination) ........... 305 XORW (Exclusive Or Word Data of AH and AL to AL) .................................................... 307 XORW (Exclusive Or Word Data of Destination and Source to Destination) .................. 308 ZEXT (Zero Extend from Byte Data to Word Data) ......................................................... 310 ZEXTW (Zero Extend from Word Data to Long Word Data) ........................................... 311 viii APPENDIX ............................................................................................................. 313 APPENDIX A Explanation of Instruction Lists ............................................................................. A.1 Items Used in Instruction Lists ........................................................................................ A.2 Symbols Used in Instruction Lists ................................................................................... A.3 Effective Address Field ................................................................................................... APPENDIX B Instruction Lists (351 Instructions) ........................................................................ APPENDIX C Instruction Maps .................................................................................................... C.1 Structure of the Instruction Map ...................................................................................... C.2 Basic Page Map .............................................................................................................. C.3 Bit Operation Instruction Map .......................................................................................... C.4 Character String Operation Instruction Map .................................................................... C.5 2-byte Instruction Map ..................................................................................................... C.6 ea-type Instruction Map ................................................................................................... C.7 MOVEA RWi, ea Instruction Map .................................................................................... C.8 MOV Ri, ea Instruction Map ............................................................................................ C.9 MOVW RWi, ea Instruction Map ..................................................................................... C.10 MOV ea, Ri Instruction Map ............................................................................................ C.11 MOVW ea, RWi Instruction Map ..................................................................................... C.12 XCH Ri, ea Instruction Map ............................................................................................. C.13 XCHW RWi, ea Instruction Map ...................................................................................... 314 315 317 319 320 336 337 339 341 343 345 347 357 359 361 363 365 367 369 INDEX ......................................................................................................................371 ix x Main changes in this edition Page Changes (For details, refer to main body.) 20 CHAPTER 3 DEDICATED REGISTER 3.2 Accumulator (A) ■ Accumulator (A) Changed the register name. A register →Accumulator (A) 39 CHAPTER 5 PREFIX CODES 5.1 Bank Select Prefix ■ Bank Select Prefix Added LINK, UNLINK instructions to Other types of control instructions (stack manipulation). 41 5.3 Flag Change Inhibit Prefix Code (NCC) ■ Flag Change Inhibit Prefix Code (NCC) Corrected the instruction. FISW →FILSW Deleted the MOVE and MOVSW instructions. Corrected an explanation. 49 CHAPTER 6 INTERRUPTS 6.2 Interrupt Vector ■ Interrupt Vector ● Interrupt Vector Table Corrected the instructions. CALLV 14 →CALLV 14/15 51 6.3 Interrupt Control Registers (ICR) ■ Interrupt Control Register (ICR) Corrected the initial value of IX. "0" →0CH 69 6.9 Exceptions ■ Hardware Exceptions (Non Maskable Interrupts) ● Instruction break (VEIB, system reserved, only available with DSU) Corrected an explanation. before execution →after instruction execution 73 CHAPTER 7 ADDRESSING 7.2 Direct Addressing ■ Direct Addressing ● Direct branch address (addr16) Corrected the register name. program bank register (PCB) → program counter bank register (PCB) 76 7.3 Indirect Addressing ■ Indirect Addressing ● Program counter indirect with displacement (@PC+disp16) Corrected the register name. program bank register (PCB) → program counter bank register (PCB) ● Program counter relative branch address (rel) - 81 CHAPTER 8 DETAILED INSTRUCTIONS Changed the flag name in "CHAPTER 8 DETAILED INSTRUCTIONS". Carry bit (C) →Carry flag (C) 8.1 Instruction Overview ■ Symbols (Abbreviations) Used in Detailed Instructions Table 8.1-1 Added brg3. xi Page Changes (For details, refer to main body.) 83 8.2 ADD (Add Byte Data of Destination and Source to Destination) Corrected the explanation. bit 8 to 15 of A →upper byte of AL 86 8.4 ADDC (Add Byte Data of Accumulator and Effective Address with Carry to Accumulator) Corrected an explanation. bit 8 to 15 of A →upper byte of AL ● Operation: Corrected an explanation. (ea) →(second operand) 88 8.5 ADDCW (Add Word Data of Accumulator and Effective Address with Carry to Accumulator) ● Operation: Corrected an explanation. (ea) →(second operand) 114 8.20 BBcc (Branch if Bit Condition satisfied) ● Assembler format: Corrected explanations. <First operand> →addr16:bp <First operand> →dir:bp <First operand> →io:bp 119 8.22 CALL (Call Subroutine) ● Example: Changed an instruction. CALL @RW0 →CALL @@RW0 141 8.35 DIV (Divide Word Data by Byte Data) Corrected the explanation when the overflow is occur. AL are destroyed →AL are undefined 142 ● Example: Changed Figure of Example. EC D8 →00 C7 143 8.36 DIV (Divide Long Word Data by Word Data) Corrected the explanation when the overflow is occur. AL are destroyed →AL are undefined 152 8.41 EXTW (Sign Extend from Word Data to Long Word Data) ● Operation: Corrected an explanation. bits 16 to 31 of A →AH 178 8.57 LSLW (Logical Shift Word Data of Accumulator to Left) Added the following explanations. The least significant bit of the accumulator (A) is set to "0". 198 8.68 MOVB (Move Bit Data from Bit Address to Accumulator) Added the following descriptions summary sentence. The value in AL is transferred to AH. 202 8.70 MOVEA (Move Effective Address to Destination) ● Assembler format: Corrected operands. <destination> →A <destination> →RWi 214 8.77 MOVSWD (Move String Word with Decrement) Corrected the instructions name. MOVSWI →MOVSWD ● Assembler format: 225 8.84 MOVX (Move Byte Data with Sign Extension from Source to Accumulator) ● Byte count and cycle count: Corrected the byte count of "MOVX A,Ri" instruction. 2 →1 xii Page Changes (For details, refer to main body.) 235 8.93 NEG (Negate Byte Data of Destination) Corrected a summary sentence. bits 8 to 15 of A →upper byte of AL 252 8.104 POPW (Pop Word Data of Accumulator from Stack Memory) Corrected summary sentences. bits 16 to 31 for the accumulator (A) →AH bits 0 to 15 for the accumulator (A) →AL 273 8.116 SCEQ, SCEQI (Scan String Byte until equal with Increment) ● Assembler format: Deleted the following explanation. (When the address is incremented) 275 8.117 SCEQD (Scan String Byte until equal with Decrement) Deleted the following explanation. (When the address is decremented) 282 8.121 SUB (Subtract Byte Data of Source from Destination to Destination) Corrected a summary sentence. bits 8 to 15 of A →upper byte of AL 284 8.122 SUBC (Subtract Byte Data of AL from AH with Carry to AL) Corrected a summary sentence. bits 8 to 15 of the accumulator (A). →upper byte of AL 285 8.123 SUBC (Subtract Byte Data of Effective Address from Accumulator with Carry to Accumulator) Corrected a summary sentence. bits 8 to 15 of A →upper byte of AL 289 8.125 SUBDC (Subtract Decimal Data of AL from AH with Carry to AL) Corrected a summary sentence. bits 8 to 15 of A →upper byte of AL 295 8.129 SWAP (Swap Byte Data of Accumulator) ● Operation: Changed an explanation. 296 8.130 SWAPW (Swap Word Data of Accumulator) ● Operation: Changed an explanation. 300 8.133 XCH (Exchange Byte Data of Source to Destination) ● Operation: Changed an explanation. 302 8.134 XCHW (Exchange Word Data of Source to Destination) Changed an explanation. 311 8.139 ZEXT (Zero Extend from Byte Data to Word Data) Corrected a summary sentence. bits 8 to 15 of the accumulator (A) →upper byte of AL ● Operation: Corrected an explanation. Bits 8 to 15 of A →AL[15:8] 8.140 ZEXTW (Zero Extend from Word Data to Long Word Data) Corrected a summary sentence. bits 16 to 31 of the accumulator (A) →AH ● Operation: Corrected an explanation. Bits 16 to 31 of A →AH 312 xiii Page Changes (For details, refer to main body.) 320 APPENDIX APPENDIX B Instruction Lists (351 Instructions) Table B-1 Corrected the byte count (#) of "MOVX A,Ri" instruction. 2 →1 333 Table B-14 Corrected the operand of MOVB instruction. MOVB addr16:bp →MOVB addr16:bp, A The vertical lines marked in the left side of the page show the changes. xiv CHAPTER 1 CPU This chapter describes an overview of the F2MC-16FX CPU core and its sample configuration. 1.1 Overview of CPU 1.2 Sample Configuration CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 1 CHAPTER 1 CPU 1.1 Overview of CPU 1.1 F2MC-16FX Family Overview of CPU The F2MC-16FX CPU core is a 16-bit CPU designed for applications that require high-speed real-time processing, such as home-use or vehicle-mounted electronic appliances. The F2MC-16FX instruction set is designed for controller applications, and is capable of high-speed, highly efficient control processing. ■ Overview of CPU In addition to 16-bit data, the F2MC-16FX CPU core can process 32-bit data by using an internal 32-bit accumulator. 32-bit data can be processed with some instructions. Up to 16 MBytes of memory space can be used, which can be accessed by either the linear pointer or bank method. The instruction set is compatible to F2MC-16LX. The instruction set is compatible with high-level languages, has a rich set of addressing modes, multiplication and division instructions, and bit processing. The features of the F2MC-16FX CPU are explained below. ● Fast execution speed • Minimum instruction execution time: 16 ns (when operating at an internal frequency of 64 MHz) • Basic instructions are executed in one cycle • High speed processing using a 5 stage pipeline • 8 byte instruction queue ● General purpose registers: 32 banks x 8 words x 16 bits ● Memory space: 16 MBytes, accessed in linear or bank method ● Instruction set optimized for controller applications • High code efficiency • Rich data types: Bit, byte, word, long word • Extended addressing modes: 23 types • High-precision operation (32-bit length) based on 32-bit accumulator • Signed and unsigned multiplication and division instructions ● Powerful interrupt functions • Fast response speed (about 10 clock cycles CLKB) • Eight priority levels (programmable) • Non maskable interrupt (NMI) • DMA transfer can serve interrupt requests (16 channels max.) without involving CPU 2 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family CHAPTER 1 CPU 1.1 Overview of CPU ● Instruction set compatible with high-level language (C)/multitasking • System stack pointer • Instruction set symmetry • Barrel shift instructions CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 3 CHAPTER 1 CPU 1.2 Sample Configuration 1.2 F2MC-16FX Family Sample Configuration A sample configuration of the F2MC-16FX CPU and that of the MCU device are shown. ■ Hardware Configuration of the F2MC-16FX CPU ● Figure 1.2-1 shows the block diagram of the F2MC-16FX CPU. Figure 1.2-1 Block diagram of F2MC-16FX CPU Instruction Fetch stage Queue F2MC-16FX CPU Decode Address Decode stage 1 Operation Decode Stage 2 Decode Data Program Counter Operation PCB, PC Execution stage ALU Write Back stage Processor Status Accumulator PS AH, AL Stack Pointer USP, SSP GeneralPurpose Register Ri, RWi, RLi Bank Register Direct Page Register USB, SSB, DTB, ADB DPR ● CPU Pipeline Operation To execute most instructions in one clock cycle, the CPU uses a five-stage instruction pipeline. The pipeline consists of the following stages: • Instruction fetch (IF): Fetches the instruction from instruction queue. • Instruction decode 1 (D1): Decodes the instruction and controls address operation. • Instruction decode 2 (D2): Decodes the instruction and selects operands and data operation. • Execution (EX): Executes the operation. • Write back (WB): Writes the operation result to a register or memory location. 4 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 1 CPU 1.2 Sample Configuration 2 F MC-16FX Family Figure 1.2-2 Instruction Pipeline CLK Instruction 1 WB Instruction 2 EX WB Instruction 3 D2 EX WB Instruction 4 D1 D2 EX WB Instruction 5 IF D1 D2 EX WB IF D1 D2 EX Instruction 6 WB Instructions are not executed out of order. Therefore, if instruction A enters the pipeline ahead of instruction B, instruction A always reaches write back stage before instruction B. The standard instruction execution speed is one instruction per cycle. However, transfer instructions that involve memory wait, branch instructions and multi-cycle instructions require more than one cycle to execute. The instruction execution speed also drops if the delivery of instructions during code fetch is slow. ● Instruction Queue The CPU has an instruction queue of 8 byte. The instruction queue is filled by the fetch unit. Prefetch is used on consecutive addresses for code fetch. The prefetch mechanism removes drawbacks due to the latency of the pipelined implementation of the CPU and the system bus of the 16FX core. ● Program counter The program counter bank (PCB, upper 8 bits of the program address) and the program counter (PC, lower 16 bits of the program address) are controlled by the decode stage 1. The instruction that is executed next is specified by a 24-bit address {PCB, PC} where the program counter bank (PCB) and the program counter (PC) are concatenated. ● ALU The ALU is controlled by decode stage 2. The operation mode of the ALU is selected and the operands are loaded. The execution of the operation is performed in the next cycle. The ALU is used for logical and arithmetical operations. Multiplication and division are included. ● CPU registers and memory access In the write back stage, the result of the operation is written to CPU registers and/or to a memory location. All CPU registers except the program counter are assigned to the last pipeline stage. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 5 CHAPTER 1 CPU 1.2 Sample Configuration F2MC-16FX Family ■ Sample Hardware configuration of F2MC-16FX Family MCU Figure 1.2-3 shows a sample hardware configuration of the MCU device based on the F2MC16FX CPU. Figure 1.2-3 MCU Device based on the F2MC-16FX Core User Ports F2MC-16FX Boot ROM CPU Interrupt ROM Controller (program area) RAM (data area) 16FX Core Bus DMA Controller Clock and Timer Serial ADC Peripheral Mode Control Bus Bridge Peripheral Bus 1 CAN External Bus Peripheral Interface Bus Bridge Peripheral Bus 2 F2MC-16FX Core MCU Device ● Interrupt Controller The interrupt controller evaluates the priority of incoming interrupt requests (IRQ) and selects the interrupt number with the highest priority. If accepted, the selected interrupt service is processed by the CPU. Each hardware IRQ has its own interrupt level register to control its priority. ● DMA Controller The DMA controller can also serve IRQs, but without interrupting the actual program execution of the CPU. This can be used to automate data transfer between peripherals and memory. Depending on the device, up to 16 DMA channels are usable. Each DMA channel can select an IRQ number to be served. 6 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family CHAPTER 1 CPU 1.2 Sample Configuration ● Clock and Mode Control This unit has control over the operation mode and monitors correct operation of the device. It supplies all units with their appropriate clock, depending on the operation mode. ● External Bus Interface The external bus interface is an optional component. Its availability depends on the configuration of the specific device. ● Boot ROM After device initialization by reset, the program counter points to the boot ROM. Then, the CPU starts the execution of the boot ROM program. After further device initialization the reset vector is fetched and the boot ROM code branches to user program execution starting at the reset vector. ● Peripheral Bus Bridge The peripheral bus bridge acts as an interface between the system bus of the F2MC-16FX core and the peripheral bus connecting to all other MCU internal peripheral resources. The peripheral bus bridge synchronizes between core clock and peripheral clock domains. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 7 CHAPTER 1 CPU 1.2 Sample Configuration 8 F2MC-16FX Family FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 2 MEMORY SPACE This chapter describes memory spaces in the F2MC-16FX CPU. 2.1 CPU Memory Space 2.2 Linear Addressing Mode 2.3 Bank Addressing Mode 2.4 Memory Space Divided into Banks and Value in Each Bank Register 2.5 Data Configuration of and Access to Multi-byte Data in Memory CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 9 CHAPTER 2 MEMORY SPACE 2.1 CPU Memory Space 2.1 F2MC-16FX Family CPU Memory Space All data, programs, and I/O areas managed in the CPU are allocated in its 16Mbyte memory space. The CPU can access these resources using an address on the 24-bit address bus (see Figure 2.1-1 ). The F2MC-16FX addressing mode can be classified either as a linear or bank mode. The linear mode specifies an entire 24-bit address using a instruction. The bank mode specifies the upper 8 bits of each address using a bank register, and the remaining 16-bit address using an instruction. ■ CPU Memory Space Figure 2.1-1 Example of Relationship between the F2MC-16FX System and Memory Map Program ⎧ FFFFFFH ⎨ ⎩ Program area ⎧ 810000H ⎪ ⎪ ⎨ ⎪ ⎪ ⎩ 800000 Data area FF8000H F2MC-16FX CPU Data Interrupt H Peripheral circuit General-purpose port [Device] 10 ⎧ 0000C0H ⎨ ⎩ ⎧ 0000B0H ⎨ ⎩ 000020H ⎧ ⎨ ⎩ 000000 Interrupt controller Peripheral circuit General-purpose port H FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 2 MEMORY SPACE 2.2 Linear Addressing Mode 2 F MC-16FX Family 2.2 Linear Addressing Mode The linear addressing mode of the F2MC-16FX specifies an entire 24-bit address using an instruction. ■ Linear Addressing Mode The linear addressing mode of the F2MC-16FX specifies an entire 24-bit address using an instruction. The address mode of the F2MC-16FX is determined according to the specification of the effective address or instruction code (implied) of an instruction. The linear addressing mode can operate in two different ways. In the first way, an operand of an instruction directly specifies an entire 24-bit address. In the second way, the lower 24-bit of a 32-bit general-purpose register is referred as an address (see Figure 2.2-1 ). Figure 2.2-1 Examples of Generating an Address in the Linear Addressing Mode Example 1: 24-bit Operand Specification in the Linear Addressing Mode JMPP 123456H 17452DH Previous content of program counter plus program bank 17 452D Latest content of program counter plus 12 program bank 3456 JMPP 123456H 123456H Next instruction Example 2: Indirect Addressing Based on 32-bit Register in the Linear Addressing Mode MOV A @RL1+7 Previous content of the AL XXXX 090700H 3A +7 240906F9 RL1 (Upper 8 bits are ignored.) Latest content of the AL CM44-00203-3E 003A FUJITSU MICROELECTRONICS LIMITED 11 CHAPTER 2 MEMORY SPACE 2.3 Bank Addressing Mode 2.3 F2MC-16FX Family Bank Addressing Mode The bank addressing mode of the F2MC-16FX specifies the upper 8 bits of an address using a bank register for use, and the remaining 16 bits using an instruction. ■ Bank Addressing Mode In the bank addressing mode, the 16-Mbyte memory space is divided into 256 banks of 64Kbyte, and the corresponding bank to each space is specified by the following 4 bank registers. ● Program counter bank register (PCB) A 64-Kbyte bank specified using the PCB register is called a program (PC) space. It is used to hold mainly instruction codes, vector tables, and immediate data. ● Data bank register (DTB) A 64-Kbyte bank specified using the DTB register is called a data (DT) space. It is used to hold mainly readable/writable data and control/data registers for internal and external resources. ● User stack bank register (USB) and system stack bank register (SSB) A 64-Kbyte bank specified using the USB or SSB register is called a stack (SP) space. It is accessed when the execution of a push or pop instruction or interrupt handling is performed to save register contents and a stack access occurs. And which to be used, the USB or SSB register, is determined according to the stack flag (S) in the condition code register (CCR). ● Additional data bank register (ADB) A 64-Kbyte bank specified using the ADB register is called an additional (AD) space. It is used to hold mainly data overflowing from the DT space. Each instruction is assigned with one of the default spaces by each addressing listed in Table 2.3-1 to improve instruction code efficiency. Table 2.3-1 Default Spaces Default space 12 Addressing Program space PC-indirect, program access, branch type Data space @A, addr16, dir, or addressing using @RW0, @RW1, @RW4, or @RW5 Stack space Addressing using PUSHW, POPW, @RW3, @RW7, or @SP Additional space Addressing using @RW2 or @RW6 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 2 MEMORY SPACE 2.3 Bank Addressing Mode 2 F MC-16FX Family If a space other than a default space is used, an arbitrary bank space corresponding to a prefix code can be accessed by specifying the prefix code before the instruction. Table 2.3-2 lists bank select prefixes and the memory space selected using each prefix. Table 2.3-2 Bank Selection Prefix Bank select prefix Selected space PCB Program space DTB Data space ADB Additional space SPB System or user stack space depending on the contents of the selected stack flag (S) The DTB, USB, SSB, and ADB registers are initialized to 00H at a reset. The PCB register is initialized to FFH at a reset. After a reset, the data, stack, and additional spaces are allocated in bank 00H (000000H to 00FFFFH), and the program space is allocated in bank FFH (FF0000H to FFFFFFH). CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 13 CHAPTER 2 MEMORY SPACE 2.4 Memory Space Divided into Banks and Value in Each Bank Register F2MC-16FX Family Memory Space Divided into Banks and Value in Each Bank Register 2.4 Figure 2.4-1 shows an example of a memory space divided into banks and a value in each register bank. ■ Memory Space Divided into Banks and Values in Each Register Bank Figure 2.4-1 Example of the Physical Addresses of Each Space FFFFFFH Program space FF0000H FFH : PCB (program counter bank register) B3H : ADB (additional data bank register) B3FFFFH Additional space Physical Address B30000H 92FFFFH User stack space 920000H 92H : USB (user stack bank register) 68H : DTB (data bank register) 4BH : SSB (system stack bank register) 68FFFFH Data space 680000H 4BFFFFH System stack space 4B0000H 000000H 14 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 2 MEMORY SPACE 2.5 Data Configuration of and Access to Multi-byte Data in Memory 2 F MC-16FX Family 2.5 Data Configuration of and Access to Multi-byte Data in Memory Multi-byte data is written to memory starting at the lowest address. If the multibyte data is 32-bit long, the lower 16 bits are written to memory first and then upper 16 bits. ■ Multi-byte Data Layout in a Memory Space Multi-byte data is written to memory starting at the lowest address. If the multi-byte data is 32-bit length, the lower 16 bits are written to memory first and then upper 16 bits. If a reset signal is input immediately after the low-order data is written to memory, the highorder data may not be written. To keep the data in integrity, it is necessary to input a reset signal after the high-order data is written. Figure 2.5-1 shows the layout of multi-byte data in memory. The lower 8 bits are placed at address n, the next lower 8 bits are placed at address n + 1, and the next lower 8 bits are placed at address n + 2, and so on. Figure 2.5-1 Multi-byte Data Layout in Memory MSB 01010101 H LSB 11001100 11111111 00010100 01010101 11001100 11111111 Address n 00010100 L CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 15 CHAPTER 2 MEMORY SPACE 2.5 Data Configuration of and Access to Multi-byte Data in Memory F2MC-16FX Family ■ Access to Multi-byte Data When multi-byte data is accessed, it is assumed that all parts of the multi-byte data are within a single bank. To put it another way, an instruction accessing multi-byte data assumes that an address that follows address FFFFH is 0000H in the same bank as for FFFFH. Figure 2.5-2 shows an execution example of an instruction accessing multi-byte data. Figure 2.5-2 Execution Example of an Instruction (MOVW A, 080FFFFH) Accessing Multi-byte Data Higher address 80FFFFH AL before execution ?? ?? AL after execution 23H 01H 01H · · · 800000H 23H Lower address 16 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 3 DEDICATED REGISTER The F2MC-16FX CPU registers are classified into two types: dedicated registers and generalpurpose registers. This chapter describes the dedicated registers of the F2MC-16FX CPU. The dedicated registers are dedicated internal hardware of the CPU, and they have specific use defined by the CPU architecture. These registers can be accessed without using an address. The register operations are defined by specific instructions. 3.1 Structure of the Dedicated Registers 3.2 Accumulator (A) 3.3 User Stack Pointer (USP) and System Stack Pointer (SSP) 3.4 Processor Status (PS) 3.5 Program Counter (PC) 3.6 Direct Page Register (DPR) 3.7 Bank register (PCB, DTB, ADB, USB, SSB) CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 17 CHAPTER 3 DEDICATED REGISTER 3.1 Structure of the Dedicated Registers 3.1 F2MC-16FX Family Structure of the Dedicated Registers The F2MC-16FX CPU has the following dedicated registers: • Accumulator (A=AH:AL): Two 16-bit accumulators (can be used as a single 32-bit accumulator) • User stack pointer (USP): 16-bit user stack pointer • System stack pointer (SSP): 16-bit system stack pointer • Processor status (PS): 16-bit register indicating the system status • Program counter (PC): 16-bit register holding the address of the next instruction to be executed • Program counter bank register (PCB): 8-bit register indicating the program counter bank • Data bank register (DTB): 8-bit register indicating the data bank • User stack bank register (USB): 8-bit register indicating the user stack bank • System stack bank register (SSB): 8-bit register indicating the system stack bank • Additional data bank register (ADB): 8-bit register indicating the additional data bank • Direct page register (DPR): 8-bit register indicating the page for direct access 18 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 3 DEDICATED REGISTER 3.1 Structure of the Dedicated Registers 2 F MC-16FX Family Figure 3.1-1 shows a diagram of the dedicated registers. Figure 3.1-1 Dedicated registers AL AH Accumulator USP User stack pointer SSP System stack pointer PS Processor status PC Program counter DPR Direct page register PCB Program counter bank register DTB Data bank register USB User stack bank register SSB System stack bank register ADB Additional data bank register 8 bit 16 bit 32 bit CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 19 CHAPTER 3 DEDICATED REGISTER 3.2 Accumulator (A) 3.2 F2MC-16FX Family Accumulator (A) The accumulator (A) consists of two 16-bit arithmetic operation registers (AH and AL), and is used as a temporary storage for operation results and transfer data. ■ Accumulator (A) The Accumulator (A) consists of two 16-bit arithmetic operation registers (AH and AL). The Accumulator (A) is used as a temporary storage for operation results and transfer data. During 32-bit data processing, AH and AL are used together. Only AL is used for word processing in 16-bit data processing mode or for byte processing in 8-bit data processing mode (see Figure 3.2-1 and Figure 3.2-2). The data stored in the Accumulator (A) can be operated upon with the data in memory or registers (Ri, Rwi, or RLi). In the same manner as with the F2MC-16LX, when a word or shorter data item is transferred to AL, the previous data item in AL is automatically sent to AH (data preservation function). The data preservation function and operation between AL and AH help to improve processing efficiency. When a byte or shorter data item is transferred to AL, the data is sign-extended or zeroextended and stored as a 16-bit data item in AL. The data in AL can be handled either as word or byte. When a byte-processing arithmetic operation instruction is executed on AL, the high-order eight bits of AL before the operation are ignored. After the operation the high-order eight bits become zero. The Accumulator (A) is not initialized by a reset. The Accumulator (A) holds an undefined value immediately after a reset. 20 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 3 DEDICATED REGISTER 3.2 Accumulator (A) 2 F MC-16FX Family Figure 3.2-1 Example of a 32-bit data transfer MSB MOVL A, @RW1+6 Previous content of the A register XXXXH XXXXH DTB A6H LSB A61540H 8FH 74H A6153EH 2BH 52H RW1 15H 38H +6 Latest content of the A register 8F74H 2B52H AH AL Figure 3.2-2 Example of AL-AH transfer by means of data preservation MSB MOVW A, @RW1+6 Previous content of the A register XXXXH 1234H DTB LSB A61540H 8FH 74H A6153EH 2BH 52H RW1 15H 38H A6H +6 Latest content of the A register CM44-00203-3E 1234H 2B52H AH AL FUJITSU MICROELECTRONICS LIMITED 21 CHAPTER 3 DEDICATED REGISTER 3.3 User Stack Pointer (USP) and System Stack Pointer (SSP) 3.3 F2MC-16FX Family User Stack Pointer (USP) and System Stack Pointer (SSP) USP and SSP are 16-bit registers that indicate the memory addresses for saving and restoring data when a push/pop instruction or subroutine is executed. ■ User Stack Pointer (USP) and System Stack Pointer (SSP) USP and SSP are 16-bit registers that indicate the memory addresses for saving and restoring data in the event of a push/pop instruction or subroutine execution. The USP and SSP registers are used by stack instructions. The USP register is enabled when the stack flag (S) in the processor status (PS) is “0”, and the SSP register is enabled when the S flag is “1” (see Figure 3.3-1). Since the S flag is set when an interrupt is accepted, register values are always saved in the memory area indicated by the SSP register during interrupt processing. The SSP register is used for stack processing in an interrupt routine, while the USP register is used for stack processing outside an interrupt routine. If the stack space is not divided, use only the SSP register. During stack processing, the high-order eight bits of an address are indicated by system stack bank register (SSB) for the SSP register or user stack bank register (USB) for the USP register. The USP and SSP registers are not initialized by a reset. Instead, the values of these registers are undefined. 22 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family CHAPTER 3 DEDICATED REGISTER 3.3 User Stack Pointer (USP) and System Stack Pointer (SSP) Figure 3.3-1 Stack manipulation instruction and stack pointer MSB Example 1 PUSHW A when the S flag is "0" Before execution AL S flag After execution AL C6F326 H LSB A624 H USB C6 H USP F328 H 0 SSB 56 H SSP 1234 H A624 H USB C6 H USP F326 H 0 SSB 56 H SSP 1234 H C6F326 H A6 H 24 H A624 H USB C6 H USP F328 H 561232 H XX XX 1 SSB 56 H SSP 1234 H A624 H USB C6 H USP F328 H 561232 H A6 H 24 H 1 SSB 56 H SSP 1232 H XX XX User stack is used because the S flag is "0". Example 2 PUSHW A when the S flag is "1" AL AL System stack is used because the S flag is "1". Note: Specify an even-numbered address in the stack pointer whenever possible. An oddnumbered address will be cause of drawback in stack performance. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 23 CHAPTER 3 DEDICATED REGISTER 3.4 Processor Status (PS) 3.4 F2MC-16FX Family Processor Status (PS) The PS register consists of the bits controlling the CPU Operation and indicating the CPU status. ■ Processor Status (PS) As shown in Figure 3.4-1, the high-order byte of the PS register consists of a register bank pointer (RP) and an interrupt level mask (ILM). The RP indicates the start address of a register bank. The low-order byte of the PS register is a condition code register (CCR), containing the flags to be set or reset depending on the results of instruction execution or interrupt occurrences. Figure 3.4-1 Processor status (PS) structure bit 15 PS 24 13 12 ILM 8 7 RP 0 CCR FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 3 DEDICATED REGISTER 3.4 Processor Status (PS) 2 F MC-16FX Family ■ Condition Code Register (CCR) Figure 3.4-2 shows the diagram of the condition code register (CCR) configuration. Figure 3.4-2 Condition code register (CCR) configuration bit 7 6 5 4 3 2 1 0 P I S T N Z V C PS: CCR 0 0 1 0 0 0 0 0 initial value after reset 1 0 1 X X X X X value after Boot ROM execution ● P: Privileged mode flag The privileged mode flag (P) indicates user or system mode of CPU status. When the P flag is "1", CPU is in the user mode. When the P flag is "0", CPU is in the privileged mode. The P flag is cleared by a reset. However, the P flag will be set during execution of the Boot ROM code. Only NMI, HW-INT9 (EDSU) and DSU interrupts will clear the P flag and disable all other hardware interrupts. If the P flag is cleared, the interrupt level mask (ILM) defines system interrupt levels of the privileged mode (P0 to P7). These interrupt levels have higher priority than any ILM register setting in user mode (U0 to U7). The P flag can be set by dedicated instructions (OR CCR, #imm8 / POPW PS) or by restoring the processor status (RETI / JCTX @A). Restoring in the privileged mode (P=0) is not accepted, if the P flag has been "1" before. ● I: Interrupt enable flag Interrupts other than software interrupts are enabled when the I flag is "1" and are disabled when the I flag is "0". The I flag is cleared by a reset. ● S: Stack flag When the S flag is "0", USP is enabled as the stack pointer. When the S flag is "1", SSP is enabled as the stack pointer. The S flag is set by an interrupt reception or a reset. ● T: Sticky bit flag A value of "1" is set in the T flag when there is at least one "1" in the data shifted out from the carry after execution of a logical right/arithmetic right shift instruction, otherwise, "0" is set in the T flag. In addition, "0" is set in the T flag when the shift amount is zero. ● N: Negative flag The N flag is set when the MSB of the operation result is "1", and is otherwise cleared. ● Z: Zero flag The Z flag is set when the operation result is all zeroes, and is otherwise cleared. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 25 CHAPTER 3 DEDICATED REGISTER 3.4 Processor Status (PS) F2MC-16FX Family ● V: Overflow flag The V flag is set when an overflow of a signed value occurs as a result of operation execution and is otherwise cleared. ● C: Carry flag The C flag is set when a carry-up or carry-down from the MSB or LSB occurs as a result of operation execution, and is otherwise cleared. ■ Register Bank Pointer (RP) The RP register indicates the relationship between the general-purpose registers and the internal RAM addresses. Specifically, the RP register indicates the first memory address of the currently used register bank in the following conversion expression: [00180H + (RP) × 10H]. The RP register consists of five bits, and can take a value between 00H and 1FH. Register banks can be allocated at addresses from 000180H to 00037FH in memory. Figure 3.4-3 Register bank pointer (RP) bit 15 14 13 12 11 10 9 8 B4 B3 B2 B1 B0 0 0 0 0 0 RP initial value The RP register is initialized to all zeroes by a reset. An instruction may transfer an eight-bit immediate value to the RP register; however, only the low-order five bits of that data are used. 26 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 3 DEDICATED REGISTER 3.4 Processor Status (PS) 2 F MC-16FX Family ■ Interrupt Level Mask (ILM) The Interrupt Level Mask (ILM) consists of three bits, indicating the CPU interrupt masking level. An interrupt request is accepted only when the priority of the interrupt is higher than that indicated by the ILM register and the privileged mode flag (P). Highest priority interrupt is level P0 and lowest priority is level U7. Therefore, for an interrupt to be accepted, its level value must be smaller than the current ILM register value (see Figure 3.4-4 ). In addition, the P flag has to be considered. When an interrupt is accepted, the level value of that interrupt is set in the P flag and ILM register. Thus, an interrupt of the same or lower priority cannot be accepted subsequently. Figure 3.4-4 Interrupt level (ILM) bit 15 14 13 12 11 10 9 8 ILM2 ILM1 ILM0 1 0 0 initial value after reset 0 0 0 value after Boot ROM execution PS: ILM ILM is initialized to 100B by a reset. However, during execution of the Boot ROM program ILM is set to 000B. An instruction may transfer an eight-bit immediate value to the ILM register, but only the loworder three bits of that data are used (MOV ILM, #imm8 / POPW PS / RETI / JCTX @A). If CPU is in user mode (P=1), any ILM register change is possible. If CPU is privileged mode (P=0), an ILM register change is only accepted, if the new value defines a user level U0 to U7 (with P=1) or if the privileged level (P0 to P7) is increased. The lower levels of the privileged mode P0 to P7 can not be reached by execution of an instruction from a higher level. Writing "0" to the P flag and reducing the level with P=0 is only possible by NMI, HW-INT9 or a DSU interrupt. Note: The P flag can be understood as bit extension of the ILM register. Then it defines the most significant bit of the interrupt level mask {P, ILM}. After initialization with reset the CPU is in level P4. This disables all interrupts, including NMI, except for the DSU. After execution of the Boot ROM program the CPU is in level U0. Peripheral interrupts are disabled. All privileged mode levels P0 to P7 are locked against entering or decreasing the level by an instruction. The levels P0 to P7 can only be increased. This protects the operation of HWINT9, NMI and DSU operation. Only DSU can interrupt the NMI or mask its acceptance during a debug session. The user levels U0 to U7 are backward compatible to F2MC-16LX interrupt levels 0 to 7. The P flag is not writable in a user level. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 27 CHAPTER 3 DEDICATED REGISTER 3.4 Processor Status (PS) F2MC-16FX Family Table 3.4-1 Levels indicated by the privileged mode flag (P) and interrupt level mask (ILM) Level P flag ILM value Acceptable interrupt level P0 0 0 none Interrupts disabled P1 0 1 Level < P1 Interrupts disabled P2 0 2 Level < P2 Interrupts disabled P3 0 3 Level < P3 DSU P4 0 4 Level < P4 DSU P5 0 5 Level < P5 NMI, DSU P6 0 6 Level < P6 NMI, DSU P7 0 7 Level < P7 HW-INT9, NMI, DSU U0 1 0 Level < U0 User Interrupts disabled U1 1 1 Level < U1 User level 0 U2 1 2 Level < U2 User level 0, 1 U3 1 3 Level < U3 User level 0 to 2 U4 1 4 Level < U4 User level 0 to 3 U5 1 5 Level < U5 User level 0 to 4 U6 1 6 Level < U6 User level 0 to 5 U7 1 7 Level < U7 User level 0 to 6 28 FUJITSU MICROELECTRONICS LIMITED HW-INT9, NMI, DSU CM44-00203-3E CHAPTER 3 DEDICATED REGISTER 3.5 Program Counter (PC) 2 F MC-16FX Family 3.5 Program Counter (PC) The PC register is a 16-bit counter that indicates the low-order 16 bits of the memory address of an instruction code to be executed by the CPU. ■ Program Counter (PC) The PC register is a 16-bit counter that indicates the low-order 16 bits of the memory address of an instruction code to be executed by the CPU. The high-order eight bits of the address are indicated by the program counter bank register (PCB). The PC register is updated by a branch instruction, subroutine call instruction, interrupt or reset. Within a linear program segment, the PC is incremented by the number of bytes of the last instruction. The PC register can also be used as a base pointer for operand access. Figure 3.5-1"Program counter" shows the program counter. Figure 3.5-1 Program counter PCB FE H PC ABCD H Next instruction to be executed FEABCD H The reset address is fixed to the Boot ROM program start address of 0F:FC00H. At reset, the PC register is initialized to FC00H and the PCB register is initialized to 0FH. In external vector mode a value specified by the reset vector on address FF:FFDCH is loaded when leaving the Boot ROM code execution. In internal vector mode the PCB and PC registers are loaded with fixed values defined by the product. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 29 CHAPTER 3 DEDICATED REGISTER 3.6 Direct Page Register (DPR) 3.6 F2MC-16FX Family Direct Page Register (DPR) The direct page register (DPR) specifies bits 8 to 15 of the operand address for direct addressing instructions. ■ Direct Page Register (DPR) The DPR register specifies bits 8 to 15 of the instruction operands in direct addressing mode as shown in Figure 3.6-1. Figure 3.6-1 Generating a physical address in direct addressing mode DTB register DPR register Direct address during instruction αααααααα ββββββββ γγγγγγγγ LSB MSB 24-bit physical address ααααααααββββββββγγγγγγγγ The DPR register is eight bits long, and is initialized to 01H by a reset. The DPR register can be read or written to by an instruction. 30 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 3 DEDICATED REGISTER 3.7 Bank register (PCB, DTB, ADB, USB, SSB) 2 F MC-16FX Family 3.7 Bank register (PCB, DTB, ADB, USB, SSB) Each bank register indicates a memory bank where a program space, data space, user stack space or additional data space is allocated. ■ Bank Register All bank registers are one byte long. Each bank register (PCB, DTB, USP, SSP, ADB) indicates the memory bank where the PC, DT, SP (user), SP (system), or AD space is allocated. Bank registers other than PCB can be read and written to. PCB can be read but cannot be written to. The PCB register is updated upon the JMPP or CALLP instruction, branching to the entire 16 MByte space, upon the RETP or RETI instruction or upon an interrupt. For details of the operation of bank registers, see section "2.3 Bank Addressing Mode". ● Program counter bank register (PCB) Initial value: 0FH after reset, and later a value from reset vector at user program start. ● Data bank register (DTB) Initial value: 00H. ● User stack bank register (USB) Initial value: 00H. ● System stack bank register (SSB) Initial value: 00H. ● Additional data bank register (ADB) Initial value: 00H. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 31 CHAPTER 3 DEDICATED REGISTER 3.7 Bank register (PCB, DTB, ADB, USB, SSB) 32 F2MC-16FX Family FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 4 GENERAL-PURPOSE REGISTERS The registers of the F2MC-16FX can be grouped into two major categories: dedicated registers in the CPU and general-purpose registers allocated in memory. This chapter describes the F2MC-16FX generalpurpose registers. These registers are allocated in a RAM in address space of the CPU. Similarly to the dedicated registers, the general-purpose registers can be accessed without specifying their address. However, the user can specify the purpose for which they are used in the same manner as for ordinary memory. 4.1 Register Banks in RAM 4.2 Calling General-purpose Registers in RAM CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 33 CHAPTER 4 GENERAL-PURPOSE REGISTERS 4.1 Register Banks in RAM 4.1 F2MC-16FX Family Register Banks in RAM Each register bank consists of 8 words (16 bytes). They can be used as general-purpose registers (byte registers R0 to R7, word registers RW0 to RW7, and long word registers RL0 to RL3) for performing various types of operations and specifying pointers. RL0 to RL3 can be used also as a linear pointer to gain direct access to all spaces in memory. ■ Register Banks in RAM Table 4.1-1 lists the function of each register, and Table 4.1-2 shows relationships between the registers. Table 4.1-1 Functions of Each Register 34 Register name Function R0 to R7 Used to hold an operand in various types of instructions. Note: R0 is also used as a barrel shift counter and a counter of normalize instruction. RW0 to RW7 Used to hold a pointer. Used to hold an operand in various types of instructions. Note: RW0 is used also as a string instruction counter. RL0 to RL3 Used to hold a long pointer. Used to hold an operand in various types of instructions. FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 4 GENERAL-PURPOSE REGISTERS 4.1 Register Banks in RAM 2 F MC-16FX Family Table 4.1-2 Relationship between Registers Address Byte register Word register Long word register 000180H + RP × 10H + 0 RW0 000180H + RP × 10H + 1 RL0 000180H + RP × 10H + 2 RW1 000180H + RP × 10H + 3 000180H + RP × 10H + 4 RW2 000180H + RP × 10H + 5 RL1 000180H + RP × 10H + 6 RW3 000180H + RP × 10H + 7 000180H + RP × 10H + 8 R0 000180H + RP × 10H + 9 R1 000180H + RP × 10H + 10 R2 000180H + RP × 10H + 11 R3 000180H + RP × 10H + 12 R4 000180H + RP × 10H + 13 R5 000180H + RP × 10H + 14 R6 000180H + RP × 10H + 15 R7 CM44-00203-3E RW4 RL2 RW5 RW6 RL3 RW7 FUJITSU MICROELECTRONICS LIMITED 35 CHAPTER 4 GENERAL-PURPOSE REGISTERS 4.2 Calling General-purpose Registers in RAM 4.2 F2MC-16FX Family Calling General-purpose Registers in RAM For general-purpose registers, the register bank pointer (RP) is used to specify where in internal RAM between 000180H and 00037FH the register bank currently in use is allocated. ■ Calling General-purpose Registers in RAM The general-purpose registers are allocated in internal RAM between 000180H and 00037FH (in maximum configuration). The register bank pointer (RP) is used to indicate where in internal RAM between 000180H and 00037FH the register bank currently in use is allocated. Each bank contains the following 3 different registers. These registers are not independent of one another. Instead, they have the relationships shown in Figure 4.2-1 . • R0 to R7: 8-bit general-purpose registers • RW0 to RW7:16-bit general-purpose registers • RL0 to RL3: 32-bit general-purpose registers Figure 4.2-1 General-purpose Registers 000180H + RP × 10H Start address of a general-purpose register 16 bits RW0 RW1 RW2 RW3 Lower order Higher order LSB R1 R3 R5 R7 R0 R2 R4 R6 RW4 RW5 RW6 RW7 ⎧ ⎨ ⎩ ⎧ ⎨ ⎩ ⎧ ⎨ ⎩ ⎧ ⎨ ⎩ MSB RL0 RL1 RL2 RL3 The relationships among the high- and low-order bytes in word registers (RW4 to RW7) and byte registers (R0 to R7) are represented using the following expression: RW (i + 4) = R (i × 2 + 1) × 256 + R (i × 2) [where i = 0 to 3] The relationships among the high- and low-order bytes in long registers (RL0 to RL3) and word registers (RW0 to RW7) are represented using the following expression: RL (i) = RW (i × 2 + 1) × 65536 + RW (i × 2) [where i = 0 to 3] For example, if the data in R1 and the data in R0 are arranged as high- and low-order bytes, respectively, the resulting data equals the data (2 bytes) in RW4. 36 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 5 PREFIX CODES The operation of an instruction can be modified by prefixing it with prefix code. The following 3 types of prefix codes are available. • Bank select prefix • Common register bank prefix • Flag change inhibit prefix code This chapter describes these prefixes. 5.1 Bank Select Prefix 5.2 Common Register Bank Prefix (CMR) 5.3 Flag Change Inhibit Prefix Code (NCC) 5.4 Constraints Related to the Prefix Codes CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 37 CHAPTER 5 PREFIX CODES 5.1 Bank Select Prefix 5.1 F2MC-16FX Family Bank Select Prefix Placing a bank select prefix before an instruction enables selecting the memory space accessed by the instruction regardless of what the current addressing mode is. ■ Bank Select Prefix The memory space of data to be accessed is determined according to the addressing mode. Placing a bank select prefix before an instruction enables to select the memory space accessed by the instruction regardless of what the current addressing mode is. Table 5.1-1 lists the bank select prefixes and the memory space selected according to each bank select prefix. Table 5.1-1 Bank Select Prefixes Bank select prefix Memory space to be selected PCB Program counter space DTB Data space ADB Additional space SPB System or user stack space depending on the state of the stack flag The effect of the prefix codes is different for the following instructions. • Transfer instructions (I/O access) MOV A,io MOVW io,A MOV io, A MOV io,#imm8 MOVX A,io MOVW A,io MOVW io,#imm16 These instructions access the I/O space regardless of whether there is a prefix before them. • Branch instruction RETI The system stack bank register (SSB) is used regardless of whether there is a prefix before the branch instruction. • Bit manipulation instructions (I/O access) MOVB A,io:bp MOVB io:bp,A SETB io:bp CLRB io:bp BBC io:bp,rel BBS io:bp,rel WBTC WBTS The I/O space is accessed regardless of whether there is a prefix before those instructions. • String manipulation instructions MOVS FILS MOVSW FILSW SCEQ SCWEQ A bank register specified in the operand is used regardless of whether there is a prefix before these instructions. 38 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 5 PREFIX CODES 5.1 Bank Select Prefix 2 F MC-16FX Family • Other types of control instructions (stack manipulation) PUSHW POPW POPW PS LINK UNLINK The system stack bank register (SSB) or user stack bank register (USB) is used depending on the state of the stack flag (S), regardless of whether there is a prefix before these instructions. In the following cases, the prefix of an instruction affects not only that instruction but also an instruction that follows it. • Other types of control instructions (flag change) AND CCR,#imm8 OR CCR,#imm8 The operations of these instructions are performed normally. The prefix of each of these instructions affects not only the instructions but also an instruction that follows them. • Another type of control instruction (interrupt control) MOV ILM,#imm8 The operation of the instruction is performed normally. The prefix of the instruction affects not only that instruction but also an instruction that follows it. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 39 CHAPTER 5 PREFIX CODES 5.2 Common Register Bank Prefix (CMR) 5.2 F2MC-16FX Family Common Register Bank Prefix (CMR) Placing a common register bank prefix (CMR) before an instruction accessing a register bank enables to change that the instruction is to access only the registers in a common bank (register bank selected when RP = 0) allocated between 000180H and 00018FH, regardless of what the current value of the register bank pointer (RP) is. ■ Common Register Bank Prefix (CMR) To make data exchange among tasks easier, it is necessary to use a method that can access a certain specified register bank relatively easily no matter what value the register bank pointer (RP) holds. To meet this requirement, the F2MC-16FX has a register bank that can be used by all tasks in common. It is called a common bank. The common bank is allocated in memory between address 000180H and 00018FH. It is selected when the RP register contains a value of "0". Placing the common register bank prefix (CMR) before an instruction accessing a register bank enables to change that the instruction is to access only the registers in a common bank regardless of what the current value of the RP register is. The effect of the prefix codes is different for the following instructions. • String instructions MOVS FILSW NOVSW SCEQ FILS If an interrupt is requested during execution of a string manipulation instruction attached with a prefix code, the prefix becomes ineffective for the string manipulation instruction after a return is made from the interrupt handling routine, possibly resulting in a malfunction. Do not place the CMR prefix before these string manipulation instructions. • Other types of control instructions (flag change) AND CCR,#imm8 OR CCR,#imm8 POPW PS The operations of these instructions are performed normally. The prefix of each of these instructions affects not only the instructions but also an instruction that follows them. • Another type of control instruction (interrupt control) MOV ILM, #imm8 The operation of the instruction is performed normally. The prefix of the instruction affects not only that instruction but also an instruction that follows it. 40 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 5 PREFIX CODES 5.3 Flag Change Inhibit Prefix Code (NCC) 2 F MC-16FX Family 5.3 Flag Change Inhibit Prefix Code (NCC) Placing the flag change inhibit prefix code (NCC) before an instruction inhibits flags from changing during execution of the instruction. ■ Flag Change Inhibit Prefix Code (NCC) The flag change inhibit prefix code (NCC) is used to suppress undesired changes to flags. Placing the NCC prefix before an instruction inhibits flags from changing during execution of the instruction. The effect of the prefix codes is different for the following instructions. • Branch instructions INT #vct8 INT9 INTP addr24 RETI INT addr16 These instructions change the flags in the condition code register (CCR) regardless of whether there is a prefix before them. • String instructions SCEQ SCWEQ FILS FILSW Placing a NCC prefix before the string instructions listed above is ignored. Flags in the condition code register (CCR) are changing according to the instruction specifications, regardless of a NCC prefix is specified or not. • Another type of control instruction (task switching) JCTX @A This instruction changes the flags in the condition code register (CCR) regardless of whether there is a prefix before it. • Other types of control instructions (flag change) AND CCR,#imm8 OR CCR,#imm8 POPW PS These instructions change the flags in the CCR register regardless of whether there is a prefix before them. The prefix of each of these instructions affects not only the instructions but also an instruction that follows them. • Another type of control instruction (interrupt control) MOV ILM,#imm8 The operation of the instruction is performed normally. The prefix of the instruction affects not only that instruction but also an instruction that follows it. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 41 CHAPTER 5 PREFIX CODES 5.4 Constraints Related to the Prefix Codes 5.4 F2MC-16FX Family Constraints Related to the Prefix Codes If a prefix code is placed before an instruction where interrupt and hold requests are inhibited, the effect of the prefix code lasts until an instruction where neither an interrupt nor hold request is inhibited appears for the first time. If a prefix is followed by conflicting prefix codes, the last one is valid. ■ Relationships between Instructions Rejecting Interrupt Requests and Prefix Codes The following 10 instructions/prefix codes reject interrupt and hold requests. • MOV ILM,#imm8 • AND CCR,#imm8 • OR CCR,#imm8 • POPW PS • PCB • ADB • NCC • DTB • SPB • CMR If an interrupt or hold request is issued during execution of any of the above instructions, the request is accepted only after any instruction not listed above appears for the first time after that instruction and is executed, as shown in Figure 5.4-1 . Figure 5.4-1 Instructions Rejecting Interrupt and Hold Requests Instructions rejecting interrupt and hold requests •••••••• Interrupt request issued (a) ••• (a): Ordinary instruction Interrupt accepted If a prefix code is placed before an instruction rejecting interrupt and hold requests, its effect lasts until an instruction other than instructions rejecting interrupt and hold requests appears for the first time after the prefix code and is executed, as shown in Figure 5.4-2 . Figure 5.4-2 Instructions Rejecting Interrupt and Hold Requests and Prefix Code Instructions rejecting interrupt and hold requests MOV A,FFH NCC CCR: XXX10XX MOV ILM,#imm8 •••• ADD A,01H CCR: XXX10XX The NCC protects the CCR from changing. 42 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 5 PREFIX CODES 5.4 Constraints Related to the Prefix Codes 2 F MC-16FX Family ■ If Two or More Prefix Codes Appear in Succession If a prefix is followed by conflicting prefix codes, the last one is valid (see Figure 5.4-3 ). Figure 5.4-3 Consecutive Prefix Codes Prefix codes ••••• ADB DTB PCB ADD A,01H •••• The PCB prefix code is valid for this instruction. The term "conflicting prefix codes" indicates PCB, ADB, DTB, and SPB in the above figure. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 43 CHAPTER 5 PREFIX CODES 5.4 Constraints Related to the Prefix Codes 44 F2MC-16FX Family FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 6 INTERRUPTS This chapter describes the interrupt functions and operations. 6.1 Overview of Interrupts 6.2 Interrupt Vector 6.3 Interrupt Control Registers (ICR) 6.4 Non Maskable Interrupt (NMI) 6.5 Interrupt Flow 6.6 Hardware Interrupts 6.7 Software Interrupts 6.8 Multiple interrupts 6.9 Exceptions CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 45 CHAPTER 6 INTERRUPTS 6.1 Overview of Interrupts 6.1 F2MC-16FX Family Overview of Interrupts The F2MC-16FX has interrupt functions that terminate the currently executed program and transfer control to another specified program when a specific event occurs. There are four types of interrupt functions: • Hardware interrupt: Interrupt processing due to an internal resource event • Software interrupt: Interrupt processing due to a software event (instruction) • Exception: Handling of an operation exception • DMA: Data transfer without CPU interaction due to an internal resource event. ■ Hardware Interrupts A hardware interrupt is activated by an interrupt request from an internal resource. A hardware interrupt request occurs when both the interrupt request flag and the interrupt enable flag in an internal resource are set. ● Specifying an interrupt level An interrupt level can be specified for the hardware interrupt. To specify an interrupt level, use the level setting bits (IL0, IL1, and IL2) in the interrupt control register (ICR). For each hardware interrupt its own interrupt level (IL) can be specified. Access to a dedicated IL can be done by setting the index IX. Both IX and IL are accessible through the interrupt control register (ICR). ● Masking a hardware interrupt request A hardware interrupt request can be masked by using the interrupt enable flag (I) and the interrupt level mask (ILM). The interrupt is executed only, when the I flag is set and the value of the interrupt level (IL) is smaller than the interrupt level mask (ILM). In addition the privileged mode flag (P) has to be set for hardware interrupt acceptance. The P flag, I flag and ILM register are parts of the processor status (PS) of the CPU. When an unmasked interrupt request occurs, the CPU saves 12 bytes of data that consists of registers PS, PC, PCB, DTB, ADB, DPR, and A in the memory area indicated by the system stack bank register (SSB) and system stack pointer (SSP). 46 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family CHAPTER 6 INTERRUPTS 6.1 Overview of Interrupts ■ Software Interrupts Interrupts requested by executing the INT instruction are software interrupts. An interrupt request by the INT instruction does not have an interrupt request or enable flag. An interrupt request is issued always by executing the INT instruction. No interrupt level is assigned to the INT instruction. Therefore, the ILM register is not updated when the INT instruction is used. Instead, the interrupt enable flag (I) is cleared and the continuing interrupt requests are suspended. ■ Exceptions Following software exceptions can be processed: • Undefined instruction • INT9 • INTE (only available on the EVA device) Following hardware exceptions can be processed: • NMI • HW-INT9 (embedded debug support) • DSU break factors (only available on the EVA device) Exception processing is basically the same as interrupt processing. When an exception is detected during instruction execution, exception processing is performed. In general, exception processing occurs as a result of an unexpected operation. Therefore, use exception processing only for debugging programs or for activating recovery software in an emergency case. ■ Direct Memory Access (DMA) ● DMA Function F2MC-16FX offers a DMA function to automatically transfer data between peripheral resources and memory upon an interrupt. The number of DMA channels is device dependent. When a DMA data transfer of a specified count is completed, an interrupt processing program is automatically executed on the original IRQ channel. The handling of such an interrupt by DMA completion is same as for standard type of hardware interrupts. For a detailed description of DMA, refer to the hardware manual for each device. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 47 CHAPTER 6 INTERRUPTS 6.2 Interrupt Vector 6.2 F2MC-16FX Family Interrupt Vector Hardware and software interrupts use the same vector table. The execution of interrupt service routines can be triggered by asserting the specific IRQ line or by executing the INT instruction and specifying the number of the interrupt vector. Interrupt vectors are allocated between addresses as shown in Table 6.2-2 . The location of the Interrupt vector table can be selected by the Table base register. ■ Interrupt Vector ● Interrupt Vector Table Base Register (TBR) Figure 6.2-1 Interrupt vector Table base register (TBR) 15 bit Address: 3A3H, 3A2H 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 TB23 TB22 TB21 TB20 TB19 TB18 TB17 TB16 TB15 TB14 TB13 TB12 TB11 TB10 Read/Write: R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R R Initial Value: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 R: R/W: TBRH, TBRL readable readable and writable The Table Base Register (TBR) allows to relocate the interrupt vector table to any memory location in steps of 1 kbytes. The value of the TBR register defines the high-order 14 bits TB[23:10] of the 24 bit start address of the interrupt vector table. The low-order bits of TB[9:0] are fixed to "0". The table base register (TBR) is initialized with FFFCH at reset, which results in an initial table base TB[23:0] = FFFC00H. The interrupt vector table has a size of 1 Kbyte (256 vector entries). Table 6.2-1 Examples for TBR TBR value start address of Interrupt vector table (table base) end of Interrupt vector table Comment FFFCH FF:FC00H FF:FFFFH as F2MC-16FX (default) FB00H FB:0000H FB:03FFH start of ROM bank FB 00FCH 00:FC00H 00:FFFFH end of bank 00 (can be external memory) 0010H 00:1000H 00:13FFH inside of RAM-area 0000H 00:0000H 00:03FFH do not use, because of IO-area 48 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 6 INTERRUPTS 6.2 Interrupt Vector 2 F MC-16FX Family ● Interrupt Vector Table The interrupt vector table referenced during interrupt processing is assigned to addresses "256 × TBR to 256 × TBR + 3FFH" in memory. The reset defaults are from FFFC00H to FFFFFFH for the location of the vector table. If the vector table should not be located at top of ROM memory, another TBR value has to be configured. Hardware interrupts, exceptions and software interrupts share the same vector table. Hence the interrupt service routine can either be called by a hardware interrupt or by the corresponding software interrupt. The three bytes of each start address of the interrupt service routines have to be written to the appropriate interrupt vectors (VecAddr = 4 × (255-INT#) + 256 × TBR). Table 6.2-2 Interrupt vector table (1 / 2) Interrupt / Vector number Vector address Index of level register in ICR Hardware IRQ / Interrupt cause INT 0 CALLV 0/1 * (TBR × 256)+3FCH -- -- INT 1 CALLV 2/3 * (TBR × 256)+3F8H -- -- INT 2 CALLV 4/5 * (TBR × 256)+3F4H -- -- INT 3 CALLV 6/7 * (TBR × 256)+3F0H -- -- INT 4 CALLV 8/9 * (TBR × 256)+3ECH -- -- INT 5 CALLV 10/11 * (TBR × 256)+3E8H -- -- INT 6 CALLV 12/13 * (TBR × 256)+3E4H -- -- INT 7 CALLV 14/15 * (TBR × 256)+3E0H -- -- INT 8 MODE Byte (TBR × 256)+3DCH -- Reset INT 9 (TBR × 256)+3D8H -- INT9 instruction INT 10 (TBR × 256)+3D4H -- Undefined Instruction Exception INT 11 (TBR × 256)+3D0H -- NMI INT 12 (TBR × 256)+3CCH IL12 Delayed Interrupt INT 13 (TBR × 256)+3C8H IL13 RC clock Timer INT 14 (TBR × 256)+3C4H IL14 Main Clock Timer INT 15 (TBR × 256)+3C0H IL15 Sub Clock Timer CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 49 CHAPTER 6 INTERRUPTS 6.2 Interrupt Vector F2MC-16FX Family Table 6.2-2 Interrupt vector table (2 / 2) Interrupt / Vector number Vector address Index of level register in ICR Hardware IRQ / Interrupt cause INT 16 (TBR × 256)+3BCH IL16 INT 17 (TBR × 256)+3B8H IL17 INT 18 (TBR × 256)+3B4H IL18 INT 19 (TBR × 256)+3B0H IL19 ... ... ... INT 254 (TBR × 256)+004H -- -- INT 255 (TBR × 256)+000H -- -- <reserved for PLL Unlock> Device specific peripheral. *: When the program counter bank register (PCB) is same as TBR:TB[23:16] and TBR:TB[15:10] is equal to 111111B, the CALLV instruction vector area overlaps the vector table of the "INT #0" to "INT #7" instruction. Ensure that the CALLV instruction does not use the same address as that of the "INT #0" to "INT #7" instruction, or do not use "INT #0" to "INT #7" instruction. 50 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 6 INTERRUPTS 6.3 Interrupt Control Registers (ICR) 2 F MC-16FX Family 6.3 Interrupt Control Registers (ICR) For each peripheral resource that has an interrupt function, there is an interrupt control register (ICR). The interrupt control register (ICR) sets the interrupt level (IL) for the peripheral resource it is assigned to. ■ Interrupt Control Register (ICR) Figure 6.3-1 shows a diagram of the bit configuration of the interrupt control register (ICR). Figure 6.3-1 Interrupt control register (ICR) 15 14 13 12 11 10 9 8 Address: 3A1H IX7 IX6 IX5 IX4 IX3 IX2 IX1 IX0 Read/Write: R/W R/W R/W R/W R/W R/W R/W R/W Initial Value: 0 0 0 0 1 1 0 0 7 6 5 4 3 2 1 0 IL2 IL1 IL0 R/W R/W R/W bit bit Address: 3A0H Read/Write: Initial Value: : R/W: X X X X X 1 1 ICR: IX ICR: IL 1 no access readable and writable [bit15 to bit8] IX[7:0] : Index of the interrupt level (IL) to be accessed These bits are readable and writable, and specify the index of the interrupt level of the corresponding internal resource. It selects the number of the interrupt level to be accessed. IL[n] belongs to the peripheral interrupt request number IRQ[n], which both are related to the interrupt INT[n]. The system interrupts INT0 to INT11 have a fixed priority and thus have no interrupt levels. Writing to interrupt levels below the index of 12 has no effect, reading returns an undefined value. The same restriction applies for not available hardware interrupts above a device dependent maximum interrupt number. The IX[7:0] bits is initialized to 0CH at reset. Figure 6.3-2 illustrates the access to level registers by the IX pointer. The dashed line around IX and the selected IL shows the actual contents of the ICR. Level configuration is written to or read from IL, where IX points to. To write the level configuration to a dedicated IL, specify the according index by writing IX before or simultaneously by word access. To read from a dedicated IL, IX must be written before reading IL. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 51 CHAPTER 6 INTERRUPTS 6.3 Interrupt Control Registers (ICR) F2MC-16FX Family Caution for the use of concurrent tasks: In the case of concurrent tasks accessing the interrupt level information, be careful at the handling of the indexed access: - Use word access to write information to ICR:IX and ICR:IL simultaneously. - At read access, set the index ICR:IX and read the whole ICR register using word access. Check the ICR:IX value to match the intended index to be read for validation of the correct ICR:IL entry. [bit7 to bit3]: Unused bits Read access returns an undefined value. Write always 0 to these bits. [bit2 to bit0] IL[2:0] : Interrupt level setting bits These bits are readable and writable, and specify the interrupt level of the corresponding internal resources. Upon a reset, these bits are initialized to level 7 (no interrupt). Table 6.3-1 describes the relationship between the interrupt level setting bits and interrupt levels. Table 6.3-1 Interrupt level setting bits and interrupt levels IL2 IL1 IL0 Level 0 0 0 0 (Strongest) 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0 4 1 0 1 5 1 1 0 6 (Weakest) 1 1 1 7 (No interrupt) Figure 6.3-2 Relationship between index (IX), level (IL) and IRQ number, example for IX = 20 ICR 52 IX=20 IL16 IRQ16 IL17 IRQ17 IL18 IRQ18 IL19 IRQ19 IL20 IRQ20 IL21 IRQ21 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 6 INTERRUPTS 6.4 Non Maskable Interrupt (NMI) 2 F MC-16FX Family 6.4 Non Maskable Interrupt (NMI) The F2MC-16FX CPU has a non maskable interrupt. The feature of the external NMI pin can be enabled, it’s level can be defined and a register to quit the NMI request is provided. ■ NMI Control Status Register (NMI) Figure 6.4-1 is a diagram of the bit configuration of the NMI control status register. Figure 6.4-1 NMI control status register (NMI) bit 3 2 1 0 Address: 3A5H FIX9 LEV EN FLAG Read/Write: R/W R/W Initial Value: 0 1 : R/W: R/W1: R/W0: 7 6 5 4 NMI R/W1 R/W0 0 X no access readable and writable readable, bit can be set only readable, bit can be cleared only [bit7 to bit4]: Unused bits Read access returns an undefined value. Write always 0 to these bits. [bit3] FIX9 : Fix the location of the INT9 vector The FIX9 bit changes to an alternative location of the interrupt vector of INT9. If it is set to "1", the interrupt vector is obtained from address 0F:FFD8H. If it is set to "0" the INT9 vector location is defined by the TBR+3D8H. At reset the FIX9 bit is initialized to "0". The function is used by the firmware executed at device startup. Making the interrupt vector of INT9 independent from the table base register (TBR) improves the reliability of the embedded debug support unit (EDSU). [bit2] LEV : Signal activity level of the NMI pin The LEV bit defines the signal activity level of the NMI pin. A value of "1" defines logic high active input, a value of "0" define logic low active input of the NMI pin. If the EN bit is not set, the LEV bit is readable and writable. If the EN bit is set, the state of LEV is locked. In that case LEV can only be read, writing to LEV with EN=1 has no effect. At reset the LEV bit is initialized to "1", thus the NMI pin is active high by default. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 53 CHAPTER 6 INTERRUPTS 6.4 Non Maskable Interrupt (NMI) F2MC-16FX Family [bit1] EN : Non Maskable Interrupt feature enable bit The EN bit enables the feature to have a dedicated NMI pin. If the EN bit is set to "0" the device has no NMI. The CPU will not react on signal level change at the NMI input. The pin can be used for an other function or general purpose. If the EN bit is set to "1", the NMI pin is enabled. The CPU branches to the NMI exception processing, if an active signal level is detected at the NMI pin (defined by the LEV bit). If the EN bit is set to "1", both the LEV and EN bits are locked for writing. Neither the signal level can be changed nor the NMI can be disabled after the NMI feature was enabled once. Only a device reset can change the EN bit back to "0". At reset the EN bit is initialized to "0", thus the NMI feature is not enabled by default. The LEV and EN bits must not be activated at same time (changed using the same access). The EN bit must be enabled individually at last. Otherwise, an NMI can be caused due to relaxation time of the spike filter. [bit0] FLAG : Non Maskable Interrupt Flag The FLAG bit stores an asynchronous event of the NMI occurrence at the NMI pin. A spike filter is used to filter out short pulses for spike suppression. The polarity of the pulses depends on the definition in the LEV bit. The FLAG bit is set by the hardware event (NMI occurrence) and can be cleared by software to quit the interrupt. An interrupt is only caused, if both the EN and FLAG bits are set. The FLAG bit can be read and cleared. Writing "1" to the FLAG bit is ignored. Read operation of read modify write (RMW) instructions returns always "1" for the FLAG bit. The FLAG bit is undefined after reset. Before enabling the NMI, the FLAG bit should be cleared. Figure 6.4-2 Operation of the NMI control/status register EN NMI:LEV lock function [10] 16FX Bus EN [8] [9] NMI:EN NMI to CPU CLKB Synchronization NMI pin level selection and spike filter ASET SCLR NMI:FLAG 0 Wakeup 1 ASET: asynchronous set SCLR: synchronous clear 54 SLEEP || STOP || TIMER FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 6 INTERRUPTS 6.5 Interrupt Flow 2 F MC-16FX Family 6.5 Interrupt Flow Figure 6.5-2 shows the interrupt flow. ■ Interrupt Flow The interrupt processing flow is entered at occurrence of hardware interrupts, software interrupts or exceptions. For a detailed interrupt flow chart see Figure 6.5-2 . The CPU special registers are saved on the stack before the interrupt is processed (see Figure 6.5-1 ). Figure 6.5-1 Register saving during interrupt processing MSB LSB Word (16 bits) H SSP (value before interrupt) AH AL DPR ADB DTB PCB SSP PC PS SSP (value after interrupt) L At the end of the interrupt processing, the context of the CPU registers is restored while executing the RETI instruction. The CPU returns to normal program execution. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 55 CHAPTER 6 INTERRUPTS 6.5 Interrupt Flow F2MC-16FX Family Figure 6.5-2 Interrupt flow I, ILM: Interrupt flag and interrupt level mask in the program status (PS) IF, IE: Internal resource interrupt request flag and enable DER: DMA enable register of the related DMA channel IL: Level configuration of the IRQ channel by ICR/ILR S: System stack flag in the CCR/PS DISEL: DMA intserrupt select register START IF & IE = 1 and DER = 1 and DISEL = IRQ# YES NO IF & IE = 1 and I=1 & IL<ILM YES NO Fetching and decoding the next instruction INT instruction YES NO Executing an ordinary instruction NO Saving PS, PC, PCB, DTB, ADB, DPR and A into the system stack (SSP) and setting I = 0 Saving PS, PC, PCB, DTB, ADB, DPR and A into the system stack (SSP) and setting ILM = IL I/O service by DMA processing Completion of string instruction repetition YES Updating PC 56 S=1 Fetching the interrupt vector FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family 6.6 Hardware Interrupts CHAPTER 6 INTERRUPTS 6.6 Hardware Interrupts In response to an interrupt request signal from an internal resource, the CPU pauses current program execution and transfers control to the interrupt processing program defined by the user. ■ Hardware Interrupts A hardware interrupt occurs when the relevant conditions are satisfied as a result of two operations: • Comparison between the interrupt request level (IL) and the value in the interrupt level mask (ILM) of program status (PS), and • Hardware reference to the I flag value of PS. The CPU performs the following processing when a hardware interrupt occurs: • Saves the values in the PC, PS, AH, AL, PCB, DTB, ADB, and DPR registers of the CPU to the system stack. • The stack flag (S) is set. • Sets ILM in the PS register. The currently requested interrupt level (IL) is automatically set. • Fetches the corresponding interrupt vector and branches to the processing indicated by that value. If the device is in standby mode, a hardware interrupt with IL<7 generates a wake-up event to the clock and mode control unit. ■ Structure of the Hardware Interrupt System The interrupt status is indicated by internal resources, the ICR for the interrupt controller, and the PS value of the CPU. To use a hardware interrupt, make the following set-up: • Interrupt vector (in memory) - Consider the TBR value for a non-default location of the vector table. - The start address of the interrupt service routine has to be written to the appropriate interrupt vector (VecAddr = 4 × (255-INT#) + 256 × TBR). • Peripheral resource - Use the Interrupt enable and request bits to control interrupt requests from peripheral resources. • Interrupt controller - Assign interrupt levels (ICR:IL) for each interrupt, which can occur. - If interrupts occur simultaneously, a higher priority is defined by lower interrupt levels. IL=7 disables the interrupt. - If multiple requests are at the same level, the interrupt controller selects the request with the lowest interrupt number. In the case of same levels configured, the delayed interrupt has the lowest priority, independent from its interrupt number. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 57 CHAPTER 6 INTERRUPTS 6.6 Hardware Interrupts F2MC-16FX Family - There is a fixed relationship between the interrupt requests and the ILs. A level can be defined by IL[n] for each hardware interrupt request IRQ[n] (for n >= 12). • CPU - ILM and I in the PS register are used to compare the requested interrupt level (IL) with the current interrupt level mask (ILM) and to identify the interrupt enable status (I). For acceptance of hardware interrupts, the I flag has to be set and ILM has to be larger than IL. - During interrupt processing, the CPU saves 12 bytes to the memory area indicated by SSB and SSP. Thus the system stack pointer has to be initialized before using interrupts. - The CPU fetches three bytes of the interrupt vector and loads them onto PC and PCB. The interrupt handler routine has to start at this location. As a result, the interrupt processing program defined by the user is executed next. Normal operation is resumed at execution of the RETI instruction. 58 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 6 INTERRUPTS 6.6 Hardware Interrupts 2 F MC-16FX Family ■ Hardware Interrupt Operation Interrupt requests (IRQs) from peripheral resources are fed through the DMA controller before connecting to the interrupt controller. The DMA controller decides depending on it’s channel configuration (DMA interrupt request select register DISEL and DMA enable DER:ENx bit), if the IRQ is handled by DMA transfer or passed to the interrupt controller. DMA transfers are accepted regardless of the status of the I flag and the interrupt level. The DMA controller has a fixed priority scheme, channel 0 has highest priority and channel 15 has lowest priority. Figure 6.6-1 shows the processing flow from the occurrence of a hardware interrupt to the release of the interrupt request in an interrupt processing program. Figure 6.6-1 Occurrence and release of hardware interrupt F2MC-16FX CPU (9c) (9b) Stack Op. F2MC-16FX Bus (9a) (12) PS Register File I S (8) Check Int (9) Execution Pipeline ILM (7) Comparator INT Number (6) INT Level Peripherals with IRQ Interrupt Controller Peripheral (10) Enable FF (IE) IRQ Source FF (I) (2) (3) DMA Controller (4) (5) Level Compa? rator Interrupt Levels IL (1) control of data transfer (3a) and IRQ clear (3b) (1) An interrupt cause occurs in a peripheral. (2) The interrupt enable bit in the peripheral is referenced. If interrupts are enabled, the peripheral issues an interrupt request (IRQ). (3) The DMA controller checks, if the IRQ should be handled by DMA. It evaluates for each channel, if the interrupt number of the asserted IRQ is selected and if DMA is enabled. - If the evaluation is true, the transfer is handled by DMA (3a). If the evaluation is false, interrupt processing is done by the interrupt controller, proceeding with step (4). - At the end of the DMA transfer, the interrupt bit is cleared in the peripheral (3b). - If the final transfer count is reached, the DMA completion interrupt is processed by the interrupt controller. (4) The interrupt controller receives the interrupt request. (5) The interrupt controller determines the priority levels of simultaneously requested interrupts. (6) The interrupt controller transfers the highest priority interrupt level and the corresponding interrupt number to the CPU. (7) The interrupt level requested by the interrupt controller is compared with the ILM value of the processor status register. (8) If the comparison shows that the requested level is higher than the current interrupt processing level (IL<ILM), the I flag value of the same processor status register is checked. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 59 CHAPTER 6 INTERRUPTS 6.6 Hardware Interrupts F2MC-16FX Family (9) If the check in step 5 shows, that the I flag indicates interrupt enable status, interrupt processing is performed as soon as the currently executing instruction is completed. - To save the CPU status, special CPU registers are transferred to the system stack (9a). - The S bit is set to "1" (9b). - The requested level is written to the ILM bits (9c). - The interrupt vector is fetched. - Then control is transferred to the interrupt processing routine (branch to the address read as interrupt vector). (10) When the interrupt cause of step (1) is cleared by software in the user interrupt processing routine, the interrupt request is completed. (11) The RETI instruction is used to return from the interrupt processing routine as its last instruction. (12) The CPU status is restored from system stack and normal program execution is resumed. ■ Hardware Interrupt Processing Time The time required for the CPU to execute the interrupt processing (stack operation, interrupt vector fetch, branch to the interrupt vector) is shown below. The value is valid if stack operation and interrupt vector fetch are executed without any wait cycles. • Interrupt start: 10 cycles + c • Interrupt return: 9 cycles + c (RETI instruction) Table 6.6-1 Compensation values (c) for interrupt processing cycle count Address indicated by the stack pointer Compensation value Internal area, even-numbered address 0 Internal area, odd-numbered address +2 In addition wait cycles for bus transfers have to be added, if any (e.g. access to vector table in slower ROM memory or external area). 60 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family 6.7 Software Interrupts CHAPTER 6 INTERRUPTS 6.7 Software Interrupts In response to execution of a special instruction, control is transferred from the program currently executed by the CPU to the interrupt processing program defined by the user. This is called the software interrupt function. A software interrupt occurs always when the software interrupt instruction is executed. ■ Software Interrupts A software interrupt request issued by the INT instruction has no interrupt request or enable flag. A software interrupt request is always issued and accepted by executing the INT instruction. The INT instruction does not have an interrupt level. Therefore, the INT instruction does not update the interrupt level mask (ILM). The INT instruction clears the interrupt enable flag (I) to suspend subsequent hardware interrupt requests. The CPU performs the following processing when a software interrupt occurs: • Saves the values in the PC, PS, AH, AL, PCB, DTB, ADB, and DPR registers of the CPU to the system stack. • The S flag is set. • Clears I flag in the PS register. Hardware interrupts are automatically disabled. • Fetches the corresponding interrupt vector and branches to the processing indicated by that value. ■ Structure of the Software Interrupt System Software interrupts are fully handled within the CPU. To use a software interrupt, make the following set-up: • Interrupt vector (in memory) - Consider the TBR value for a non-default location of the vector table. - The start address of the interrupt service routine has to be written to the appropriate interrupt vector (VecAddr = 4 × (255-INT#) + 256 × TBR). • CPU - During interrupt processing, the CPU saves 12 bytes to the memory area indicated by SSB and SSP. Thus the system stack pointer has to be initialized before using interrupts. - The CPU fetches three bytes of the interrupt vector and loads them onto PC and PCB. The interrupt handler routine has to start at this location. As a result, the interrupt processing program defined by the user is executed next. Normal operation is resumed at execution of the RETI instruction. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 61 CHAPTER 6 INTERRUPTS 6.7 Software Interrupts F2MC-16FX Family ■ Software Interrupt Operation When the CPU fetches and executes the software interrupt instruction, the software interrupt processing sequence is activated. The software interrupt processing sequence saves 12 bytes (PS, PC, PCB, DTB, ADB, DPR, and A) to the memory area indicated by SSB and SSP. The sequence then fetches three bytes of interrupt vector and loads them into the program counter (PC) and program counter bank register (PCB), clears the interrupt enable flag (I), and sets the stack flag (S) flag. Then, the sequence performs branch processing. As a result, the interrupt processing program defined by the user application program is executed next. Figure 6.7-1 illustrates the flow from the occurrence of a software interrupt until the return from the interrupt processing program. Figure 6.7-1 Occurrence and release of software interrupt F2MC-16FX Bus (2b) Stack Op. (2a) PS Register File I S ILM clear (2c) Execution Pipeline INT (1) (5) Instruction Queue F2MC-16FX CPU RETI Instruction (4) Processing of the Interrupt Service Routine (3) INT Instruction (1) (1) The software interrupt instruction is executed. (2) Interrupt processing is performed by the CPU according to the software interrupt instruction. - To save the CPU status, special CPU registers are transferred to the system stack (2a). - The S flag is set to "1" (2b). - The I flag is cleared to disable hardware interrupts (2c). - The interrupt vector is fetched. - Then control is transferred to the interrupt processing routine (branch to the address read as interrupt vector). (3) The Interrupt service routine is processed by the CPU. (4) The interrupt processing is completed with the RETI instruction in the user interrupt processing routine. (5) The CPU restores its context of special registers from system stack. (6) The CPU proceeds program execution with the next instruction after the INT instruction. 62 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family 6.8 Multiple interrupts CHAPTER 6 INTERRUPTS 6.8 Multiple interrupts The F2MC-16FX CPU supports multiple interrupts (simultaneous occurring interrupts and nested interrupt processing). ■ Multiple Hardware Interrupts If an hardware interrupt of a higher priority (lower level value) occurs while another interrupt is being processed, control is transferred to the higher priority interrupt after the currently executing instruction is completed. After processing of the higher priority interrupt is completed, the original interrupt processing is resumed. An interrupt of the same or lower priority may be generated while another interrupt is being processed. If this happens, the new interrupt request is suspended until the current interrupt processing is completed, unless the interrupt level mask (ILM) value or interrupt enable flag (I) is changed by an instruction. A DMA transfer cannot be interrupted and activated from multiple sources. While a DMA transfer is being processed, all other DMA requests are suspended. At simultaneous occurrence of requests for the DMA controller, the lowest channel number is processed first. For a detailed description of DMA, refer to the hardware manual for each device. ■ Multiple Software Interrupts Software interrupts can not occur simultaneously. They are entered by executing the INT instruction and are always accepted. However, if an INT instruction is placed within an interrupt service routine, nested execution of software interrupts is possible. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 63 CHAPTER 6 INTERRUPTS 6.8 Multiple interrupts F2MC-16FX Family ■ Interrupt Acceptance Priority Following table lists all interrupts with conditions for their acceptance. Table 6.8-1 Control of interrupt acceptance priority Hardware event Event INT# Instruction Break (VEIB) system reserved - Tool Break (VENMI) system reserved 11 NMI 9 Address match detection (HW-INT9) from Peripheral IRQ 13 on Acceptance condition Action, if accepted P2 Current instruction execution is finished, ILM>2 || P == 1 P=0 ILM = 2 P2 Current instruction execution is finished, string instruction is interrupted, ILM>2 || P == 1 P=0 ILM = 2 P4 Current instruction execution is finished, string instruction is interrupted, ILM>4 || P == 1 P=0 ILM = 4 P6 Current instruction execution is finished, string instruction is interrupted, ILM>6 || P == 1 P=0 ILM = 6 Current instruction execution is finished, string instruction is interrupted, ILM > IL IL P == 1 U0...U7 I == 1 For multiple requests with same IL, smallest IRQ number is accepted. Current instruction execution is finished, string instruction is interrupted, IL ILM > IL U0...U7 P == 1 I == 1 No peripheral IRQs pending with same IL. Delayed INT - Software Instruction Break (INTE) system reserved 9 INT9 - 10 Undefined instruction exception - all INT instruction - - RETI instruction - IL and ILM: I: S: P: 64 Level - 12 Software event (Instruction) Type Save CPU status to system stack ILM = IL S=1 Branch to interrupt vector ILM = IL P=0 ILM = 2 I=0 P2 I=0 always accepted I=0 I=0 restore CPU status (including P, I, S, ILM) Interrupt level and Interrupt level mask Interrupt enable flag (in CCR of PS) Stack flag (in CCR of PS) Privileged mode flag (in CCR of PS) FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 6 INTERRUPTS 6.8 Multiple interrupts 2 F MC-16FX Family Following table defines the naming of the interrupt levels, its corresponding P flag and ILM values. It also lists the interrupt cause, which can request the interrupt level. Table 6.8-2 Interrupt levels Name Category P flag ILM value Priority Remarks P0 Privileged mode 0 0 Highest - P1 0 1 - P2 0 2 DSU P3 0 3 - P4 0 4 NMI P5 0 5 - P6 0 6 HW-INT9 P7 0 7 - 1 0 Peripherals U1 1 1 U2 1 2 U3 1 3 U4 1 4 U5 1 5 U6 1 6 U7 1 7 U0 CM44-00203-3E User mode Lowest FUJITSU MICROELECTRONICS LIMITED no request 65 CHAPTER 6 INTERRUPTS 6.9 Exceptions 6.9 F2MC-16FX Family Exceptions The F2MC-16FX performs exception processing at occurrence of various software and hardware events. ■ Software Exceptions (Op-Code) Software exceptions are always accepted. Same as software interrupts, software exceptions disable any hardware interrupt acceptance. The software exceptions occur at code execution of following specific op-codes: ● Execution of an undefined instruction All codes that are not defined in the instruction map are handled as undefined instructions. When an undefined instruction is executed, processing similar to the INT #10 software interrupt instruction is performed. Specifically, the program counter (PC) value saved in the stack is the address at which the undefined instruction is stored. Processing can be restored by the RETI instruction, however it is of no use, because the same exception occurs again. Operation: SSP ←SSP-2, (SSP) ←AH SSP ←SSP-2, (SSP) ←AL SSP ←SSP-2, (SSP) ←DPR:ADB SSP ←SSP-2, (SSP) ←DTB:PCB SSP ←SSP-2, (SSP) ←PC SSP ←SSP-2, (SSP) ←PS S ←1, I ←0 PCB ←Vector #10 address (upper byte) PC ←Vector #10 address (lower word) ● INT9 This instruction branches to the interrupt processing routine indicated by vector #9. Executing the RETI instruction in the interrupt routine restores the processing subsequent to the INT9 instruction. Operation: SSP ←SSP-2, (SSP) ←AH SSP ←SSP-2, (SSP) ←AL SSP ←SSP-2, (SSP) ←DPR:ADB SSP ←SSP-2, (SSP) ←DTB:PCB SSP ←SSP-2, (SSP) ←PC+1 SSP ←SSP-2, (SSP) ←PS S ←1, I ←0 PCB ←Vector #9 address (upper byte) PC ←Vector #9 address (lower word) 66 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family CHAPTER 6 INTERRUPTS 6.9 Exceptions ● INTE (System reserved, only available with DSU) INTE is used to insert a software break point for the debug system, using the in circuit emulator (ICE). At insertion of a software instruction break, the first byte of the original instruction is replaced by INTE. This instruction branches to the interrupt processing routine indicated by a fixed vector defined by the DSU. The PC value saved in the stack is the address at which INTE is stored. Executing the RETI instruction in the interrupt routine restores the processing at this location (INTE can be replaced by the original instruction at removal of the software break point). The privileged mode flag (P) is cleared and the ILM register is set to 2 (enters level P2). This disables all hardware interrupts and exceptions. The P flag and ILM are restored at execution of the RETI instruction. Operation: SSP ←SSP-2, (SSP) ←AH SSP ←SSP-2, (SSP) ←AL SSP ←SSP-2, (SSP) ←DPR:ADB SSP ←SSP-2, (SSP) ←DTB:PCB SSP ←SSP-2, (SSP) ←PC SSP ←SSP-2, (SSP) ←PS S ←1, I ←0, P ←0, ILM ←2 PCB ←Fixed vector from DSU (upper byte, 00H, address is ignored by DSU) PC ←Fixed vector from DSU (lower word, 0400H, address is ignored by DSU) Without the DSU, INTE is handled same as the undefined instruction exception. Interrupt vector #10 is referenced. The P flag is not cleared and ILM is not updated. ■ Hardware Exceptions (Non Maskable Interrupts) Hardware exceptions are external events, which are not maskable by any software instruction. Hardware exceptions with a higher level number, than the actual processed one, are suspended until execution of the RETI instruction restores the previous level. In addition, hardware exceptions disable any hardware interrupt acceptance. At occurrence of multiple hardware exceptions at the same time, they will be accepted with following priority: VEIB > VENMI > NMI > HW-INT9. If the current interrupt level mask and P flag setting allows it, hardware exceptions are accepted at the end of each instruction execution and during execution of string instructions. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 67 CHAPTER 6 INTERRUPTS 6.9 Exceptions F2MC-16FX Family ● HW-INT9 HW-INT9 is used by the address match detection function. With that function embedded debug support (operand address break or data value break) or a simple memory protection can be provided. The privileged mode flag (P) is cleared and interrupt level mask (ILM) is set to 6 (enters level P6). This disables all hardware interrupts from peripherals. The P flag and ILM are restored at the execution of the RETI instruction. Operation: SSP ←SSP-2, (SSP) ←AH SSP ←SSP-2, (SSP) ←AL SSP ←SSP-2, (SSP) ←DPR:ADB SSP ←SSP-2, (SSP) ←DTB:PCB SSP ←SSP-2, (SSP) ←PC SSP ←SSP-2, (SSP) ←PS S ←1, P ←0, ILM ←6 PCB ←Vector #9 address (upper byte) PC ←Vector #9 address (lower word) ● NMI The non maskable interrupt (NMI) provides external hardware exception handling. The privileged mode flag (P) is cleared and interrupt level mask (ILM) is set to 4 (enters level P4). This disables all hardware interrupts from peripherals and the HW-INT9. The P flag and ILM are restored at execution of the RETI instruction. Operation: SSP ←SSP-2, (SSP) ←AH SSP ←SSP-2, (SSP) ←AL SSP ←SSP-2, (SSP) ←DPR:ADB SSP ←SSP-2, (SSP) ←DTB:PCB SSP ←SSP-2, (SSP) ←PC SSP ←SSP-2, (SSP) ←PS S ←1, P ←0, ILM ←4 PCB ←Vector #11 address (upper byte) PC ←Vector #11 address (lower word) 68 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family CHAPTER 6 INTERRUPTS 6.9 Exceptions ● Tool break (VENMI, system reserved, only available with DSU) VENMI is provided for debugging with DSU. It implements various break factors. The privileged mode flag (P) is cleared and interrupt level mask (ILM) is set to 2 (enters level P2). This disables all hardware interrupts and exceptions. The P flag and ILM are restored at execution of the RETI instruction. Operation: SSP ←SSP-2, (SSP) ←AH SSP ←SSP-2, (SSP) ←AL SSP ←SSP-2, (SSP) ←DPR:ADB SSP ←SSP-2, (SSP) ←DTB:PCB SSP ←SSP-2, (SSP) ←PC SSP ←SSP-2, (SSP) ←PS S ←1, P ←0, ILM ←2 PCB ←Fixed vector from DSU (upper byte, 00H, address is ignored by DSU) PC ←Fixed vector from DSU (lower word, 0400H, address is ignored by DSU) ● Instruction break (VEIB, system reserved, only available with DSU) VEIB is provided for debugging with DSU. It implements the instruction break after instruction execution. Opposed to other hardware exceptions, VEIB is not accepted during execution of a string instruction. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 69 CHAPTER 6 INTERRUPTS 6.9 Exceptions 70 F2MC-16FX Family FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 7 ADDRESSING This chapter describes addressing for the F2MC-16FX instructions. Addressing specifies the data to be used and an address. In F2MC-16FX, effective addressing or an used instruction code determines the address format (absolute address or relative address). When the address format is determined by the instruction code itself, an address must be specified in compliance with the used instruction code. Some instructions enable several types of addressing to be specified. 7.1 Effective Address Field 7.2 Direct Addressing 7.3 Indirect Addressing CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 71 CHAPTER 7 ADDRESSING 7.1 Effective Address Field 7.1 F2MC-16FX Family Effective Address Field Table 7.1-1 lists the address formats that may be specified in the effective address field. ■ Effective Address Field Table 7.1-1 Effective Address Field Code 00H 01H 02H 03H 04H 05H 06H 07H 72 Coding R0 R1 R2 R3 R4 R5 R6 R7 RW0 RW1 RW2 RW3 RW4 RW5 RW6 RW7 Address format RL0 (RL0) RL1 (RL1) RL2 (RL2) RL3 (RL3) Default bank Register direct Note: The general purpose register name on the left notation corresponds to the byte, word and long-word types. None 08H 09H 0AH 0BH @RW0 @RW1 @RW2 @RW3 0CH 0DH 0EH 0FH @RW0 + @RW1 + @RW2 + @RW3 + 10H 11H 12H 13H @RW0 + disp8 @RW1 + disp8 @RW2 + disp8 @RW3 + disp8 14H 15H 16H 17H @RW4 + disp8 @RW5 + disp8 @RW6 + disp8 @RW7 + disp8 DTB DTB ADB SPB 18H 19H 1AH 1BH @RW0 + disp16 @RW1 + disp16 @RW2 + disp16 @RW3 + disp16 Register indirect with 16-bit displacement DTB DTB ADB SPB 1CH 1DH 1EH 1FH @RW0 + RW7 @RW1 + RW7 @PC + disp16 addr16 Register indirect with index Register indirect with index PC indirect with 16-bit displacement Direct address DTB DTB PCB DTB Register indirect DTB DTB ADB SPB Register indirect with post-increment DTB DTB ADB SPB DTB DTB ADB SPB Register indirect with 8-bit displacement FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 7 ADDRESSING 7.2 Direct Addressing 2 F MC-16FX Family 7.2 Direct Addressing In direct addressing, a value, register, and address must be directly specified for the operands. ■ Direct Addressing ● Immediate data (#imm) Directly specify an operand value. There are four types of immediate data according to data length as below: • #imm4 • #imm8 • #imm16 • #imm32 ● Register direct Directly specify a register for the operand. Registers that can be specified are as below: • General-purpose registers (Byte): (Word): R0, R1, R2, R3, R4, R5, R6, R7 RW0, RW1, RW2, RW3, RW4, RW5, RW6, RW7 (Long word):RL0, RL1, RL2, RL3 • Dedicated registers (Accumulator): A, AL (Pointer): SP * (Bank): PCB, DTB, USB, SSB, ADB (Page): DPR (Control): PS, CCR, RP, ILM *: For SP, either user stack pointer (USP) or system stack pointer (SSP) is selected for use, according to the value of the S flag in the condition code register (CCR). For branch instructions, program counter (PC) is not described in the operand of the instruction, but it is automatically specified. ● Direct branch address (addr16) Directly specify an address to which the execution will branch by means of displacement. The address length with displacement is 16 bits and the address indicates the destination of the branch in the logical space. This addressing is applied to an unconditional branch instruction and a subroutine call instruction. Bits 16 to 23 of the address are given by the program counter bank register (PCB). CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 73 CHAPTER 7 ADDRESSING 7.2 Direct Addressing F2MC-16FX Family ● Physical direct branch address (addr24) Directly specify a physical address to which the execution will branch by means of displacement. The data length with displacement is 24 bits. This addressing is applied to an unconditional branch instruction, a subroutine call instruction, and a software interrupt instruction. ● I/O direct (io) Directly specify a memory address in the operand by means of 8-bit displacement. Independently of the respective values for data bank register (DTB) and direct page register (DPR), the I/O space with physical addresses 000000H to 0000FFH is accessible. It is invalid to describe the bank select prefix to specify a bank before an instruction using this addressing. ● Abbreviated direct address (dir) Specify lower eight bits of a memory address in the operand. Bits 8 to 15 of the address are given by the direct page register (DPR). Bits 16 to 23 of the address are given by the data bank register (DTB). ● Direct address (addr16) Specify lower 16 bits of a memory address in the operand. Bits 16 to 23 of the address are given by the data bank register (DTB). ● I/O direct bit address (io:bp) Directly specify a bit within the range of physical addresses 000000H to 0000FFH. Bit position is represented by :bp. The higher number is the most significant bit and the lower number is the least significant bit. ● Abbreviated direct bit address (dir:bp) Directly specify lower eight bits of a memory address in the operand. Bits 8 to 15 of the address are given by the direct page register (DPR). Bits 16 to 23 of the address are given by the data bank register (DTB). Bit position is represented by :bp. The higher number is the most significant bit and the lower number is the least significant bit. ● Direct bit address (addr16:bp) Directly specify an arbitrary bit within 64 Kbytes. Bits 16 to 23 of the address are given by the data bank register (DTB). Bit position is represented by :bp. The higher number is the most significant bit and the lower number is the least significant bit. ● Vector address (#vct) The address to which the execution will branch is determined by the content of the vector that is specified herein. The vector number data length may be either four bits or eight bits. This addressing is applied to a subroutine call instruction and a software interrupt instruction. 74 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family 7.3 Indirect Addressing CHAPTER 7 ADDRESSING 7.3 Indirect Addressing In indirect addressing, the data indicated by the operand you coded indirectly gives an address. ■ Indirect Addressing ● Register indirect (@RWj j = 0 to 3) The register indirect addressing is used to access a memory location whose address is specified by the content of general-purpose register RWj. Bits 16 to 23 of the address are given by the data bank register (DTB) if RW0 and RW1 are used, by the SPB if RW3 is used, and by the additional data bank register (ADB) if RW2 is used. ● Register indirect with post-increment (@RWj+ j = 0 to 3) This addressing is also used to access a memory location whose address is specified by the content of general-purpose register RWj. After the execution of the operand operation, RWj is incremented by the operand data length (1 for byte, 2 for word, and 4 for long word). Bits 16 to 23 of the address are given by the data bank register (DTB) if RW0 and RW1 are used, by the SPB if RW3 is used, and by the additional data bank register (ADB) if RW2 is used. If the value resulting from post-increment indicates the address of the increment-specified register itself, the value of this register is incremented when referred subsequently. Then, if a data write instruction is issued to the register, the priority is given to the data write instruction, so that the register value, which would otherwise be incremented, becomes the written data. ● Register indirect with displacement (@RWi+disp8 i = 0 to 7, @RWj+disp16 j = 0 to 3) This addressing is used to access a memory location whose address is specified by the displacement added to the content of general-purpose register RWj. Displacement may be either byte or word and is added as a signed value. Bits 16 to 23 of the address are given by the data bank register (DTB) if RW0, RW1, RW4, and RW5 are used. Bits 16 to 23 are given by the SPB if RW3 and RW7 and by the additional data bank register (ADB) if RW2 and RW6 are used. ● Long register indirect with displacement (@RLi+disp8 i = 0 to 3) This addressing is used to access a memory location whose address is specified by the lower 24 bits that result from the displacement added to the content of general-purpose register RLi. Displacement is eight bits and added as a signed value. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 75 CHAPTER 7 ADDRESSING 7.3 Indirect Addressing F2MC-16FX Family ● Program counter indirect with displacement (@PC+disp16) This addressing is used to access a memory location whose address is specified by (address of instruction + 4 + disp16). Displacement is a word length. Bits 16 to 23 of the address are given by the program counter bank register (PCB). Note that respective operand addresses of the instructions listed next are not regarded as being (next instruction address + disp16): • DBNZ eam, rel • DWBNQ eam, rel • CBNE eam, #imm8, rel • CWBNE eam, #imml16, rel • MOV eam, #imm8 • MOVM eam, #imm16 ● Register indirect with base index (@RW0+RW7, @RW1+RW7) This addressing is used to access a memory location whose address is specified by a value obtained by adding the content of RW0 or RW1 to the content of general-purpose register RW7. Bits 16 to 23 of the address are given by the data bank register (DTB). ● Program counter relative branch address (rel) The address to which the execution will branch is determined by a value obtained by adding the 8-bit displacement to the value of the program counter (PC). If the result of the addition exceeds 16 bits, the bank register is not incremented or decremented and the part of excess is ignored. Consequently, the address falls within the closed bank of 64 Kbytes. This addressing is applied to an unconditional or conditional branch instruction. Bits 16 to 23 of the address are given by the program counter bank register (PCB). ● Register List (rlst) This addressing specifies a register subjected to push/pop for the stack (see Figure 7.3-1 ). Figure 7.3-1 Configuration of Register List MSB LSB RW7 RW6 RW5 RW4 RW3 RW2 RW1 RW0 When the bit is "1", the associated register is selected. When the bit is "0", the associated register is not selected. ● Accumulator indirect (@A) This addressing is used to access a memory location whose address is specified by the content of the lower words of the accumulator (AL). Bits 16 to 23 of the address are given by the data bank register (DTB). 76 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family CHAPTER 7 ADDRESSING 7.3 Indirect Addressing ● Accumulator indirect branch address (@A) The address to which the execution will branch is determined by the content for the lower words of the accumulator (AL). This address indicates the destination of the branch within the bank space. Bits 16 to 23 of the address are given by the program bank register (PCB). In the case of the jump context (JCTX) instruction, however, bits 16 to 23 of the address are given by the data bank register (DTB). This addressing is applied to an unconditional branch instruction. ● Indirectly specified branch address (@ear) The word data with the address specified by ear corresponds to the address to which the execution will branch. ● Indirectly specified branch address (@eam) The word data with the address specified by eam corresponds to the address to which the execution will branch. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 77 CHAPTER 7 ADDRESSING 7.3 Indirect Addressing 78 F2MC-16FX Family FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS This chapter describes each execution instruction used in the assembler in a reference format. The execution instructions are presented in alphabetical order. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 79 CHAPTER 8 DETAILED INSTRUCTIONS 8.1 Instruction Overview 8.1 F2MC-16FX Family Instruction Overview In "CHAPTER 8 DETAILED INSTRUCTIONS", the following items are described for each instruction. ■ Instruction Overview ● Assembler format The format for coding each instruction into an assembler source program is presented. • Upper case letters and symbols: Write them as they are into a source program. • Lower case letters: Rewrite them into a source program. • Number after a lower case letter: Indicates a bit width in the instruction. ● Operation The operation for registers and data by instruction execution is presented. ● CCR The status of each flag (I, S, T, N, Z, V and C) of the condition code register (CCR) is presented. • *: Denotes that the flag changes with the instruction execution. • –: Denotes that the flag does not change. • S: Denotes that the flag is set with the instruction execution. • R: Denotes that the flag is clear with the instruction execution. ● Byte count, cycle count The byte count of an instruction, the cycle count at instruction execution time, and the cycle count for correcting odd addresses are shown. ● Example An example of each instruction is presented. All numeric values of the data given in any example are hexadecimal numbers. Any numeric value of the data given in the operand represents a hexadecimal number with suffix (H). 80 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.1 Instruction Overview 2 F MC-16FX Family ■ Symbols (Abbreviations) Used in Detailed Instructions Table 8.1-1 lists the symbols used in the detailed instructions. Table 8.1-1 Symbols (abbreviations) Used in Detailed Instructions (1 / 2) Coding A 32-bit accumulator The length of used bits varies depending on the instruction. Byte: Lower 8 bits of AL Word: 16 bits of AL Long word: 32 bits of AL and AH AH AL Upper 16 bits of A Lower 16 bits of A SP Stack pointer (USP or SSP) PC Program counter PCB Program bank register DTB Data bank register ADB Additional data bank register SSB System stack bank register USB User stack bank register DPR Direct page register brg1 DTB, ADB, SSB, USB, DPR, PCB brg2 DTB, ADB, SSB, USB, DPR brg3 DTB, ADB, PCB, SPB Ri R0, R1, R2, R3, R4, R5, R6, R7 Rj R0, R1, R2, R3 RWi RW0, RW1, RW2, RW3, RW4, RW5, RW6, RW7 RWj RW0, RW1, RW2, RW3 RLi RL0, RL1, RL2, RL3 dir Abbreviated direct addressing addr16 addr24 ad24 0-15 ad24 16-23 io imm4 imm8 imm16 imm32 ext (imm8) disp8 disp16 bp CM44-00203-3E Meaning Direct addressing Physical direct addressing Bits 0 to 15 of addr24 Bits 16 to 23 of addr24 I/O area (000000H to 0000FFH) 4-bit immediate data 8-bit immediate data 16-bit immediate data 32-bit immediate data 16-bit data resulting from the signed extension of 8-bit immediate data 8-bit displacement 16-bit displacement Bit offset value FUJITSU MICROELECTRONICS LIMITED 81 CHAPTER 8 DETAILED INSTRUCTIONS 8.1 Instruction Overview F2MC-16FX Family Table 8.1-1 Symbols (abbreviations) Used in Detailed Instructions (2 / 2) Coding vct4 vct8 ( )b Meaning Vector number (0 to 15) Vector number (0 to 255) Bit address re1 Specifies a PC relative branch. ear eam Effective addressing (codes 00H to 07H) Effective addressing (codes 08H to 1FH) r1st Register list ■ Execution Cycles The cycle count required for the execution of an instruction is obtained by adding up the "cycle count" specific to each instruction, a value of "odd addresses correction", which is determined according to the condition. At the actual instruction execution time, the execution cycles may become larger than the calculated value due to the instruction fetch delay, the data access conflict, etc. Especially, when performing instruction fetch and data access from an external bus by using the external bus interface, the execution cycles becomes larger than the calculated value. ■ Odd Address Correction For some instructions, the execution cycles increases when performing data access to odd addresses. The execution cycles that increases at data access time to odd addresses is shown under the title of "odd address correction" in item B in the instruction list. 82 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.2 ADD (Add Byte Data of Destination and Source to Destination) 2 F MC-16FX Family 8.2 ADD (Add Byte Data of Destination and Source to Destination) Add the byte data specified by the second operand to the byte data specified by the first operand and store the result in the first operand. If the first operand is the accumulator (A), 00H are transferred to upper byte of AL. ● Assembler format: ADD A,#imm8 ADD A,dir ADD A,ear ADD A,eam ADD ear,A ADD eam,A ● Operation: (First operand) ← (First operand)+(Second operand) [Byte addition] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a carry has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: CM44-00203-3E First operand A A A A ear eam Second operand #imm8 dir ear eam A A Byte count 2 2 2 2+ 2 2+ Cycle count 1 2 1 2 1 3 FUJITSU MICROELECTRONICS LIMITED 83 CHAPTER 8 DETAILED INSTRUCTIONS 8.2 ADD (Add Byte Data of Destination and Source to Destination) ● Example: F2MC-16FX Family ADD A,0E021H In this example, the byte data (ABH) at address E021H is added to the low-order byte data (46H) of AL. AH A AL ×× ×× CCR A0 46 ××××× A AH AL ×× ×× 00 F1 CCR Memory A B 1 0 0 0 Memory E021 Before execution 84 × T N Z V C T N Z V C A B E021 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.3 ADDC (Add Byte Data of AL and AH with Carry to AL) 2 F MC-16FX Family 8.3 ADDC (Add Byte Data of AL and AH with Carry to AL) Add the low-order byte data of AL, low-order byte data of AH, and carry flag (C) together and restore the result in AL. 00H are transferred to the high-order byte of AL. ● Assembler format: ADDC A ● Operation: (AL) ← (AH)+(AL)+(C) [Byte addition with a carry] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a carry has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: ADDC A In this example, the low-order byte data (D4H) of AL and the C flag ("0") are added to the loworder byte data (05H) of AH. A AH AL 05 05 00 D4 CCR ×××× A 0 AH AL 05 05 00 D9 CCR T N Z V C Before execution CM44-00203-3E × 1 0 0 0 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 85 CHAPTER 8 DETAILED INSTRUCTIONS 8.4 ADDC (Add Byte Data of Accumulator and Effective Address with Carry to Accumulator) 8.4 F2MC-16FX Family ADDC (Add Byte Data of Accumulator and Effective Address with Carry to Accumulator) Add the byte data and the carry flag (C) to the lowest-order byte data, and store the result to the lowest-order byte of the accumulator (A). 00H are transferred to upper byte of AL. ● Assembler format: ADDC A, ear ADDC A, eam ● Operation: (A) ← (A)+(second operand)+(C) [Byte addition with a carry] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a carry has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: 86 First operand A A Second operand ear eam Byte count 2 2+ Cycle count 1 2 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.4 ADDC (Add Byte Data of Accumulator and Effective Address with Carry to Accumulator) 2 F MC-16FX Family ● Example: ADDC A, 0E035H In this example, the word data (8952H) and C flag ("1") at the address (E024H) specified by the second operand (@RW0+) are added to the word data (2068H) of AL. A AH AL ×× ×× A0 46 CCR ×××× A 1 AH AL ×× ×× 00 2C CCR T N Z V C Memory D 5 0 0 0 1 T N Z V C Memory E035 Before execution CM44-00203-3E × D 5 E035 After execution FUJITSU MICROELECTRONICS LIMITED 87 CHAPTER 8 DETAILED INSTRUCTIONS 8.5 ADDCW (Add Word Data of Accumulator and Effective Address with Carry to Accumulator) 8.5 F2MC-16FX Family ADDCW (Add Word Data of Accumulator and Effective Address with Carry to Accumulator) Add the low-order word data (AL) of the accumulator (A), word data specified by the second operand, and carry flag (C) together and restore the result in the low-order word of A. ● Assembler format: ADDCW A, ear ADDCW A, eam ● Operation: (A) ← (A)+(second operand)+(C) [Word addition with a carry] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a carry has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: 88 First operand A A Second operand ear eam Byte count 2 2+ Cycle count 1 2 Odd address correction 0 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.5 ADDCW (Add Word Data of Accumulator and Effective Address with Carry to Accumulator) 2 F MC-16FX Family ● Example: ADDCW A,@RW0+ In this example, the word data (8952H) at the address (E024H) specified by the second operand (@RW0+) and the C flag ("1") are added to the word data (2068H) of AL. A RW0 AH AL ×× ×× 20 68 CCR E0 24 ×××× A 1 RW0 AH AL ×× ×× A9 BB CCR E0 26 T N Z V C Memory 8 5 9 2 1 0 0 0 T N Z V C Memory E025 E024 Before execution CM44-00203-3E × 8 5 9 2 E025 E024 After execution FUJITSU MICROELECTRONICS LIMITED 89 CHAPTER 8 DETAILED INSTRUCTIONS 8.6 ADDDC (Add Decimal Data of AL and AH with Carry to AL) 8.6 F2MC-16FX Family ADDDC (Add Decimal Data of AL and AH with Carry to AL) Add the low-order byte data of AL, low-order byte data of AH, and carry flag (C) together in decimal and restore the result in the low-order byte of AL. 00H are transferred to the high-order byte of AL. ● Assembler format: ADDDC A ● Operation: (AL) ← (AH)+(AL)+(C) [Decimal addition with a carry] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Undefined C: Set when a carry has occurred as a result of the decimal operation, cleared otherwise. ● Byte count and cycle count: Byte count: 1 Cycle count: 2 ● Example: ADDDC A In this example, the low-order byte data (58H) and the flag C ("0") are added to the low-order byte (62H) of AL in decimal operation. AH A ×× AL ×× 62 CCR AH 58 ×××× A 0 ×× AL 62 CCR T N Z V C Before execution 90 00 20 × 0 0 × 1 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.7 ADDL (Add Long Word Data of Destination and Source to Destination) 2 F MC-16FX Family 8.7 ADDL (Add Long Word Data of Destination and Source to Destination) Add the long word data specified by the second operand to the long word data specified by the first operand and restore the result in the first operand. ● Assembler format: ADDL A,#imm32 ADDL A,ear ADDL A,eam ● Operation: (First operand) ← (First operand)+(Second operand) [Long word addition] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a carry has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: CM44-00203-3E First operand A A A Second operand #imm32 ear eam Byte count 5 2 2+ Cycle count 2 2 3 Odd address correction 0 0 1 FUJITSU MICROELECTRONICS LIMITED 91 CHAPTER 8 DETAILED INSTRUCTIONS 8.7 ADDL (Add Long Word Data of Destination and Source to Destination) ● Example: F2MC-16FX Family ADDL A,0E077H In this example, the long word data (357F41ABH) at address E077H is added to the long word data (85B7A073H) of the accumulator (A). A AH AL 85 B7 A0 73 CCR A AH AL BB 36 E2 1E ××××× CCR 5 F 1 B E07A E079 E078 E077 Before execution 92 1 0 0 0 Memory Memory 3 7 4 A × T N Z V C T N Z V C 3 7 4 A 5 F 1 B E07A E079 E078 E077 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.8 ADDSP (Add Word Data of Stack Pointer and Immediate Data to Stack Pointer) 2 F MC-16FX Family 8.8 ADDSP (Add Word Data of Stack Pointer and Immediate Data to Stack Pointer) Add 16-bit immediate data or the value resulting from sign-extending 8-bit immediate data to the word data pointed to by SP (stack pointer) and restore the result in SP. If the addition result exceeds 16 bits, an underflow occurs. CCR does not indicate whether an underflow has occurred. ● Assembler format: (1) ADDSP #imm8 (2) ADDSP #imm16 ● Operation: (1) (SP) ← (SP)+Sign-extended imm8 [Word addition] (2) (SP) ← (SP)+imm16 [Word addition] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Operand #imm8 #imm16 Byte count 2 3 Cycle count 1 1 ● Example: ADDSP #89BAH In this example, the 16-bit immediate data (89BAH) is added with a sign to SP. The addition result exceeds 16 bits, causing an underflow. SP E2 A4 ×0000 TNZVC Before execution CCR CM44-00203-3E SP 6C 5E ×0000 TNZVC After execution CCR FUJITSU MICROELECTRONICS LIMITED 93 CHAPTER 8 DETAILED INSTRUCTIONS 8.9 ADDW (Add Word Data of AL and AH to AL) 8.9 F2MC-16FX Family ADDW (Add Word Data of AL and AH to AL) Add the word data of AH and that of AL together and restore the result to AL. ● Assembler format: ADDW A ● Operation: (AL) ← (AH)+(AL) [Word addition] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a carry has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: ADDW A In this example, the word data (83A2H) of AH is added to the word data (7F23H) of AL. An overflow occurs, causing the C flag to be set. A AH AL 83 A2 7F 23 CCR ××××× A AH AL 83 A2 02 C5 CCR Before execution 94 × 0 0 0 1 T N Z V C T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.10 ADDW (Add Word Data of Destination and Source to Destination) 2 F MC-16FX Family 8.10 ADDW (Add Word Data of Destination and Source to Destination) Add the word data specified by the second operand to the word data specified by the first operand and restore the result in the first operand. ● Assembler format: ADDW A,#imm16 ADDW A,ear ADDW A,eam ADDW ear,A ADDW eam,A ● Operation: (First operand) ← (First operand)+(Second operand) [Word addition] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a carry has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: CM44-00203-3E First operand A A A ear eam Second operand #imm16 ear eam A A Byte count 3 2 2+ 2 2+ Cycle count 1 1 2 1 3 Odd address correction 0 0 1 0 2 FUJITSU MICROELECTRONICS LIMITED 95 CHAPTER 8 DETAILED INSTRUCTIONS 8.10 ADDW (Add Word Data of Destination and Source to Destination) ● Example: F2MC-16FX Family ADDW @RW0+1,A In this example, the word data (CD04H) of AL is added to the word data (315DH) of the address (E2A5H) specified by the first operand (@RW0+1). A RW0 AH AL ×× ×× CD 04 CCR E2 A4 ××××× A RW0 AH AL ×× ×× CD 04 E2 A4 CCR 3 1 5 D X X Memory E2A6 E2A5 E2A4 Before execution 96 1 0 0 0 T N Z V C T N Z V C Memory × F E 6 1 × × E2A6 E2A5 E2A4 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.11 AND (And Byte Data of Destination and Source to Destination) 2 F MC-16FX Family 8.11 AND (And Byte Data of Destination and Source to Destination) Take the logical AND operation of the byte data specified by the first operand and the byte data specified by the second operand and restore the result in the first operand. ● Assembler format: AND A,#imm8 AND A,ear AND A,eam AND ear,A AND eam,A ● Operation: (First operand) ← (First operand) and (Second operand) [Byte logical AND] The logical AND operation of the byte data specified by the first operand and the byte data specified by the second operand is taken on a bit-by-bit basis and the result is restored in the first operand. ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: CM44-00203-3E First operand A A A ear eam Second operand #imm8 ear eam A A Byte count 2 2 2+ 2 2+ Cycle count 1 1 2 1 3 FUJITSU MICROELECTRONICS LIMITED 97 CHAPTER 8 DETAILED INSTRUCTIONS 8.11 AND (And Byte Data of Destination and Source to Destination) ● Example: F2MC-16FX Family AND 0052H,A In this example, the logical AND operation is taken between the byte data (FAH) at address 0052H and the low-order byte data (55H) of AL. AH A AL 00 55 ×× ×× CCR ××××× AH A ×× ×× CCR T N Z V C Memory F A × 0 0 0 × T N Z V C Memory 0052 Before execution 98 AL 00 55 5 0 0052 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.12 AND (And Byte Data of Immediate Data and Condition Code Register) 2 F MC-16FX Family 8.12 AND (And Byte Data of Immediate Data and Condition Code Register) Take the logical AND operation of the byte data of the condition code register (CCR) and 8-bit immediate data and restore the result in CCR. In the logical AND operation, the most significant bit of the byte data is not taken into consideration. ● Assembler format: AND CCR,#imm8 ● Operation: (CCR) ← (CCR) and imm8 [Byte logical AND] ● CCR: I S T N Z V C * * * * * * * I: Stores bit 6 of the operation result. S: Stores bit 5 of the operation result. T: Stores bit 4 of the operation result. N: Stores bit 3 of the operation result. Z: Stores bit 2 of the operation result. V: Stores bit 1 of the operation result. C: Stores bit 0 of the operation result. ●Byte count and cycle count: Byte count: 2 Cycle count: 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 99 CHAPTER 8 DETAILED INSTRUCTIONS 8.12 AND (And Byte Data of Immediate Data and Condition Code Register) ● Example: F2MC-16FX Family AND CCR,#57H In this example, the logical AND operation is taken between the CCR value (0110101B) and the immediate data (57H). AH A CCR AL ×× ×× I 0 S 1 ×× ×× T 1 N 0 Z 1 V 0 C 1 A CCR AH AL ×× ×× ×× ×× I 0 S 0 T 1 ILM2 ILM1 ILM0 × × × ILM MSB RP Before execution 100 Z 1 V 0 C 1 ILM2 ILM1 ILM0 × × × ILM LSB × × × × × N 0 MSB RP LSB × × × × × After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.13 ANDL (And Long Word Data of Destination and Source to Destination) 2 F MC-16FX Family 8.13 ANDL (And Long Word Data of Destination and Source to Destination) Take the logical AND operation for the long word data of the accumulator (A) and that specified by the second operand in a bit-by-bit basis and restore the result in A. ● Assembler format: ANDL A,ear ANDL A,eam ● Operation: (A) ← (A) and (Second operand) [Long word logical AND] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: CM44-00203-3E First operand A A Second operand ear eam Byte count 2 2+ Cycle count 2 3 Odd address correction 0 1 FUJITSU MICROELECTRONICS LIMITED 101 CHAPTER 8 DETAILED INSTRUCTIONS 8.13 ANDL (And Long Word Data of Destination and Source to Destination) ● Example: F2MC-16FX Family ANDL A,0FFF0H In this example, the logical AND operation is taken between the long word data (8252FEACH) of the accumulator (A) and the long word data (FF55AA00H) at address FFF0H. AH A AL 82 52 FE AC CCR AH A AL 82 50 ××××× AA 00 CCR T N Z V C F 5 A 0 FFF3 FFF2 FFF1 FFF0 Before execution 102 1 0 0 × T N Z V C Memory Memory F 5 A 0 × F 5 A 0 F 5 A 0 FFF3 FFF2 FFF1 FFF0 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.14 ANDW (And Word Data of AH and AL to AL) 2 F MC-16FX Family 8.14 ANDW (And Word Data of AH and AL to AL) Take the logical AND operation of the word data of AH and that of AL and restore the result in AL. ● Assembler format: ANDW A ● Operation: (AL) ← (AH) and (AL) [Word logical AND] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: ANDW A In this example, the logical AND operation is taken between the word data (AB98H) of AL and the word data (0426H) of AH. A AH 04 26 AL AB 98 CCR ××××× A AH 04 26 CCR T N Z V C Before execution CM44-00203-3E AL 00 00 × 0 1 0 × T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 103 CHAPTER 8 DETAILED INSTRUCTIONS 8.15 ANDW (And Word Data of Destination and Source to Destination) 8.15 F2MC-16FX Family ANDW (And Word Data of Destination and Source to Destination) Take the logical AND operation of the word data specified by the first operand and the word data specified by the second operand and restore the result in the first operand. ● Assembler format: ANDW A,#imm16 ANDW A,ear ANDW A,eam ANDW ear,A ANDW eam,A ● Operation: (First operand) ← (First operand) and (Second operand) [Word logical AND] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: 104 First operand A A A ear eam Second operand #imm16 ear eam A A Byte count 3 2 2+ 2 2+ Cycle count 1 1 2 1 3 Odd address correction 0 0 1 0 2 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.15 ANDW (And Word Data of Destination and Source to Destination) 2 F MC-16FX Family ● Example: ANDW 0E001H,A In this example, the logical AND operation is taken between the word data (8342H) at address 0E001H and the word data (5963H) of AL. AH A AL 59 63 ×× ×× CCR ××××× AH A ×× ×× CCR T N Z V C E002 E001 Before execution CM44-00203-3E × 0 0 0 × T N Z V C Memory Memory 8 3 4 2 AL 59 63 0 1 4 2 E002 E001 After execution FUJITSU MICROELECTRONICS LIMITED 105 CHAPTER 8 DETAILED INSTRUCTIONS 8.16 ASR (Arithmetic Shift Byte Data of Accumulator to Right) 8.16 F2MC-16FX Family ASR (Arithmetic Shift Byte Data of Accumulator to Right) Shift the least significant byte data of the accumulator (A) arithmetically to the right by the number of bits specified by the second operand. The most significant bit of the least significant byte data for A is not changed. The bit last shifted out from the least significant bit is stored in the carry flag (C) of the condition code register (CCR). ● Assembler format: ASR A,R0 ● Operation: MSB C LSB T 1 AL ● CCR: I S T N Z V C – – * * * – * I and S: Unchanged T: Set when the shifted-out data from the carry contains one or more "1" bits, cleared otherwise. Also cleared when the shift amount is zero. N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit last shifted out from the LSB of A. Cleared when the shift amount is zero. ● Byte count and cycle count: 106 Byte count: 2 Cycle count: 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.16 ASR (Arithmetic Shift Byte Data of Accumulator to Right) 2 F MC-16FX Family ● Example: ASR A,R0 In this example, the low-order byte data (96H) of AL is shifted arithmetically to the right by the number of bits (3 bits) specified by R0. AH A AL ×× ×× R0 ×× 03 CCR AH 96 ××××× T N Z V C Before execution CM44-00203-3E A AL ×× ×× R0 ×× 03 F2 CCR 1 1 0 × 1 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 107 CHAPTER 8 DETAILED INSTRUCTIONS 8.17 ASRL (Arithmetic Shift Long Word Data of Accumulator to Right) 8.17 F2MC-16FX Family ASRL (Arithmetic Shift Long Word Data of Accumulator to Right) Shift the long word data of the accumulator (A) arithmetically to the right by the number of bits specified by the second operand. The most significant bit of A is not changed. The bit last shifted out from the least significant bit is stored in the carry flag (C) of the condition code register (CCR). ● Assembler format: ASRL A,R0 ● Operation: MSB LSB C T 1 A ● CCR: I S T N Z V C – – * * * – * I and S: Unchanged T: Set when the shifted-out data from the carry contains one or more "1" bits, cleared otherwise. Also cleared when the shift amount is zero. N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit last shifted out from the LSB of A. Cleared when the shift amount is zero. ● Byte count and cycle count: 108 Byte count: 2 Cycle count: 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.17 ASRL (Arithmetic Shift Long Word Data of Accumulator to Right) 2 F MC-16FX Family ● Example: ASRL A,R0 In this example, the long word data (12345678H) of the accumulator (A) is shifted arithmetically to the right by the number of bits (2 bits) specified by R0. AH A AL 12 34 AH 56 78 R0 CCR 0 2 × ×××0 T N Z V C Before execution CM44-00203-3E A AL 04 8D 15 9E R0 0 2 CCR 1 0 0 × 0 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 109 CHAPTER 8 DETAILED INSTRUCTIONS 8.18 ASRW (Arithmetic Shift Word Data of Accumulator to Right) 8.18 F2MC-16FX Family ASRW (Arithmetic Shift Word Data of Accumulator to Right) Shift the low-order word data of the accumulator (A) arithmetically to the right by one bit. The most significant bit of the low-order word data for A is not changed. The bit shifted out from the least significant bit is stored in the carry flag (C). ● Assembler format: ASRW A ● Operation: MSB LSB C T 1 AL ● CCR: I S T N Z V C – – * * * – * I and S: Unchanged T: Set when the old carry value is equal to "1" or the old T value is equal to "1", cleared otherwise. N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit shifted out from the LSB of A. ● Byte count and cycle count: 110 Byte count: 1 Cycle count: 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.18 ASRW (Arithmetic Shift Word Data of Accumulator to Right) 2 F MC-16FX Family ● Example: ASRW A In this example, the word data (A096H) of AL is shifted arithmetically to the right by one bit. A AH AL ×× ×× A0 96 CCR 0 ××× A 1 AH AL ×× ×× D0 4B CCR 1 1 0 T N Z V C Before execution CM44-00203-3E × 0 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 111 CHAPTER 8 DETAILED INSTRUCTIONS 8.19 ASRW (Arithmetic Shift Word Data of Accumulator to Right) 8.19 F2MC-16FX Family ASRW (Arithmetic Shift Word Data of Accumulator to Right) Shift the low-order word data of the accumulator (A) arithmetically to the right by the number of bits specified by the second operand. The most significant bit of the low-order word data for A is not changed. The bit last shifted out from the least significant bit is stored in the carry flag (C) of the condition code register (CCR). ● Assembler format: ASRW A,R0 ● Operation: MSB LSB C T 1 AL ● CCR: I S T N Z V C – – * * * – * I and S: Unchanged T: Set when the shifted-out data from the carry contains one or more "1" bits, cleared otherwise. Also cleared when the shift amount is zero. N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit last shifted out from the LSB of A. Cleared when the shift amount is zero. ● Byte count and cycle count: 112 Byte count: 2 Number of states: 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.19 ASRW (Arithmetic Shift Word Data of Accumulator to Right) 2 F MC-16FX Family ● Example: ASRW A,R0 In this example, the word data (A096H) of AL is shifted arithmetically to the right by the number of bits (2 bits) specified by R0. AH A ×× ×× R0 0 2 AL A0 96 CCR ×××× AH A 0 T N Z V C Before execution CM44-00203-3E AL E8 25 ×× ×× R0 0 2 CCR 0 1 0 × 1 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 113 CHAPTER 8 DETAILED INSTRUCTIONS 8.20 BBcc (Branch if Bit Condition satisfied) 8.20 F2MC-16FX Family BBcc (Branch if Bit Condition satisfied) Cause a branch if the bit data specified by the first operand satisfies the condition. Control is transferred to the address resulting from word-adding the sign-extended data, specified by the second operand, to the address of the instruction following the BBcc instruction. ● Assembler format: BBC addr16:bp, rel BBS addr16:bp, rel BBC dir:bp, rel BBS dir:bp, rel BBC io:bp, rel BBS io:bp, rel ● Operation: If the condition is satisfied: (PC) ← (PC) + <Byte count> + rel [Word addition] If the condition is not satisfied: (PC) ← (PC)+<Byte count> [Word addition] ● CCR: I S T N Z V C – – – – * – – I, S, T, and N: Unchanged Z: Set when the bit data is "0"; cleared when "1". V and C: Unchanged ● Byte count and cycle count: 114 BBcc BBC BBS Condition Bit data = 0 Bit data = 1 First operand addr16:bp dir:bp io:bp addr16:bp dir:bp io:bp Byte count 5 4 4 5 4 4 Cycle count 5 5 5 5 5 5 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.20 BBcc (Branch if Bit Condition satisfied) 2 F MC-16FX Family ● Example: BBC 1234H:7,12H In this example, a branch is caused if bit 7 in the byte data (7FH) at address 1234H is equal to "0" (condition satisfied). PC + (12 + number of bytes 5) E100 PC E117 Memory Memory × × × × 7 F 1234 : bit7 = 0 7 F 1234 × × × × Before execution After execution CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 115 CHAPTER 8 DETAILED INSTRUCTIONS 8.21 Bcc (Branch relative if Condition satisfied) 8.21 F2MC-16FX Family Bcc (Branch relative if Condition satisfied) Each instruction causes a branch if the condition determined for that instruction is satisfied. Control is transferred to the address resulting from word-adding the sign-extended data, specified by the operand, to the address of the instruction following the BBcc instruction. ● Assembler format: BZ/BEQ rel BNZ/BNE rel BC/BLO rel BNC/BHS rel BN rel BP rel BV rel BNV rel BT rel BNT rel BLT rel BGE rel BLE rel BGT rel BLS rel BHI rel BRA rel ● Operation: If the condition is satisfied: (PC) ← (PC)+2+rel [Word addition] If the condition is not satisfied: (PC) ← (PC)+2 [Word addition] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: 116 Byte count: 2 Cycle count: 2 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.21 Bcc (Branch relative if Condition satisfied) 2 F MC-16FX Family ● Branch instruction and condition: Bcc Condition Bcc Condition BZ/ BNZ/ BC/ BNC/ BEQ BNE BLO BHS BN BP BV BNV BT BNT BRA Z=1 N=1 N=0 V=1 V=0 T=1 T=0 Always satisfied Z=0 BLT C=1 C=0 BGE V xor N = 1 V xor N = 0 BLE BGT (V xor N) or (V xor N) or Z=1 Z=0 BLS BHI C or Z = 1 C or Z = 0 ● Example: BHI 50H In this example, a branch is caused if the C or Z flag of the condition code register (CCR) is equal to "0" (condition satisfied). PC E 2 0 0 CCR 0 1 0 1 0 +(2+50) C or Z = 0, then PC E 2 5 2 CCR 0 1 0 1 0 T N Z V C T N Z V C Before execution After execution CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 117 CHAPTER 8 DETAILED INSTRUCTIONS 8.22 CALL (Call Subroutine) 8.22 F2MC-16FX Family CALL (Call Subroutine) Cause a branch to the address specified by the operand. By executing the RET instruction in the subroutine to which control has been transferred, control returns to the instruction following the CALL instruction. ● Assembler format: CALL @ear CALL @eam CALL addr16 ● Operation: (SP) ← (SP)–2 [Word subtraction], ((SP)) ← (PC)+<Byte count> (PC) ← <Operand> ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: 118 Operand @ear @eam addr16 Byte count 2 2+ 3 Cycle count 3 5 3 Odd address correction 1 1+1 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.22 CALL (Call Subroutine) 2 F MC-16FX Family ● Example: CALL @@RW0 In this example, a branch is caused to the address (DC08H) indicated by the word data at the address (F340H) specified by the operand (@@RW0) after the address (E55AH) of the next instruction has been pushed to the stack specified by SP. PC E5 58 RW0 F3 40 SP 01 24 PC DC 08 RW0 F3 40 Memory SP 01 22 Memory D C 0 8 F341 F340 D C 0 8 F341 F340 × × × × × × 0124 0123 0122 × × 0124 0123 0122 Before execution CM44-00203-3E SP SP E 5 5 A After execution FUJITSU MICROELECTRONICS LIMITED 119 CHAPTER 8 DETAILED INSTRUCTIONS 8.23 CALLP (Call Physical Address) 8.23 F2MC-16FX Family CALLP (Call Physical Address) Cause a branch to the physical address specified by the operand. By executing the RETP instruction in the subroutine to which control has been transferred, control returns to the instruction following the CALLP instruction. The program counter bank register (PCB) stores the most significant byte of the data specified by the operand. ● Assembler format: CALLP @ear CALLP @eam CALLP addr24 ● Operation: (SP) ← (SP)–2 [Word subtraction], ((SP)) ← (PCB) (SP) ← (SP)–2 [Word subtraction], ((SP)) ← (PC)+<Byte count> [Zero extension] (PCB) ← Physical address to branch to (High-order byte) (PC) ← Physical address to branch to (Low-order word) ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: 120 Operand @ear @eam addr24 Byte count 2 2+ 4 Cycle count 5 7 4 Odd address correction 5 2+1 2 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.23 CALLP (Call Physical Address) 2 F MC-16FX Family ● Example: CALLP 080711H In this example, a branch is caused to address 080711H after PCB and the address (4349H) of the next instruction have been pushed to the stack specified by USB and SP. The most significant byte (08H) in the operand is set to PCB. PC 43 45 PCB SP F9 00 AD USB CCR × 0 15 PC 07 11 PCB SP 08 ××××× CCR Memory × × × × × × × × × × × 0 15 ××××× Memory 15F900 15F8FF 15F8FE 15F8FD 15F8FC Before execution CM44-00203-3E USB I S T N Z V C I S T N Z V C SP F8 FC × × SP 0 A 4 4 0 D 3 9 15F900 15F8FF 15F8FE 15F8FD 15F8FC After execution FUJITSU MICROELECTRONICS LIMITED 121 CHAPTER 8 DETAILED INSTRUCTIONS 8.24 CALLV (Call Vectored Subroutine) 8.24 F2MC-16FX Family CALLV (Call Vectored Subroutine) Cause a branch to the address pointed to by the interrupt vector specified by the operand. By executing the RET instruction in the subroutine to which control has been transferred, control returns to the instruction following the CALLV instruction. The RET instruction is the same as that used with the CALL instruction. ● Assembler format: CALLV #vct4 ● Operation: (SP) ← (SP)–2 ((SP)) ← (PC) + 1 [Word subtraction] (PC) ← Vector address Note: When the value of the program counter bank register (PCB) is equal to upper 8 bits of the interrupt vector table register (TBR:TB[23:16]) and lower 6 bits of the TBR (TBR:TB[15:0]) is 111111B, the vector area for "CALLV #vct4" instruction is also used as the vector area for "INT #vct8" (#0 to #7) instruction. (See Table 8.24-1 .) ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: 122 Byte count: 1 Cycle count: 5 Odd address correction: 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.24 CALLV (Call Vectored Subroutine) 2 F MC-16FX Family ● Example: CALLV #15 In this example, a branch is caused to the address specified by the interrupt vector of #15 after the address (F4A8H) of the next instruction has been pushed to the stack specified by SP. PC F4 A7 SP 01 02 PC E1 54 Memory SP SP 01 00 Memory E 1 5 4 FFE1 FFE0 E 1 5 4 FFE1 FFE0 × × × × × × 0102 0101 0100 × × 0102 0101 0100 Before execution F 4 A 8 SP After execution Table 8.24-1 CALLV Vector List Instruction Vector address L* Vector address H* CALLV #0 XXFFFEH XXFFFFH CALLV #1 XXFFFCH XXFFFDH CALLV #2 XXFFFAH XXFFFBH CALLV #3 XXFFF8H XXFFF9H CALLV #4 XXFFF6H XXFFF7H CALLV #5 XXFFF4H XXFFF5H CALLV #6 XXFFF2H XXFFF3H CALLV #7 XXFFF0H XXFFF1H CALLV #8 XXFFEEH XXFFEFH CALLV #9 XXFFECH XXFFEDH CALLV #10 XXFFEAH XXFFEBH CALLV #11 XXFFE8H XXFFE9H CALLV #12 XXFFE6H XXFFE7H CALLV #13 XXFFE4H XXFFE5H CALLV #14 XXFFE2H XXFFE3H CALLV #15 XXFFE0H XXFFE1H * : XX is replaced by the value of the program counter bank register (PCB). CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 123 CHAPTER 8 DETAILED INSTRUCTIONS 8.25 CBNE (Compare Byte Data and Branch if not Equal) 8.25 F2MC-16FX Family CBNE (Compare Byte Data and Branch if not Equal) Perform byte comparison on the first and second operands (8-bit immediate data) and cause a branch if the first and second operands are not equal. A branch is not taken if the first and second operands are equal. Control is transferred to the address equal to the address of the instruction following the CBNE instruction plus the word value resulting from sign-extending the third operand. Note that, when the first operand is @PC + disp16, the operand address is equal to the "address of the location containing the machine instruction for the CBNE instruction + 4 + disp16", not the "address of the location containing the machine instruction for the instruction following the CBNE instruction 4 + disp16". ● Assembler format: CBNE A,#imm8,rel CBNE ear,#imm8,rel CBNE eam,#imm8,rel ● Operation: (First operand)≠imm8 [Byte comparison] : (PC) ← (PC)+<Byte count>+rel (First operand)=imm8 [Byte comparison] : (PC) ← (PC)+<Byte count> ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged 124 N: Set when the MSB of the compare operation result is "1", cleared otherwise. Z: Set when (First operand) = imm8, cleared otherwise. V: Set when an overflow has occurred as a result of the compare operation, cleared otherwise. C: Set when a borrow has occurred as a result of the compare operation, cleared otherwise. FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family CHAPTER 8 DETAILED INSTRUCTIONS 8.25 CBNE (Compare Byte Data and Branch if not Equal) ● Byte count and cycle count: First operand A ear eam Second operand #imm8 #imm8 #imm8 Third operand rel rel rel Byte count 3 4 4+ Cycle count 5 4 5 ● Example: CBNE A, #0F4H,55H In this example, the low-order byte data (F3H) of AL is compared with the 8-bit immediate data (F4H). A branch is caused because the first and second operands are not equal. A AH AL ×× ×× 00 F3 PC CCR E3 10 F3H≠F4H A AH AL ×× ×× 00 F3 +(55H+Byte count: 3) ××××× T N Z V C Before execution CM44-00203-3E PC CCR E3 68 × 1 0 0 1 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 125 CHAPTER 8 DETAILED INSTRUCTIONS 8.26 CLRB (Clear Bit) 8.26 F2MC-16FX Family CLRB (Clear Bit) Clear the bit specified by bp to "0", in the memory location specified by the operand. ● Assembler format: CLRB dir:bp CLRB io:bp CLRB addr16:bp ● Operation: (Operand) b ← 0 [Bit transfer] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Operand dir:bp io:bp addr16:bp Byte count 3 3 4 Cycle count 3 3 3 ● Example: CLRB 0AA55H:3 In this example, bit 3 in data (FFH) at address AA55H is set to "0". Memory Memory × × × × F F 126 AA55 F 7 AA55 × × × × Before execution After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.27 CMP (Compare Byte Data of Destination and Source) 2 F MC-16FX Family 8.27 CMP (Compare Byte Data of Destination and Source) Compare the byte data specified by the first operand with that specified by the second operand and set the flag changes in the condition code register (CCR). The data specified by the first operand and that by the second operand are not changed. If only the accumulator (A) is specified as an operand, AH and AL are compared. ● Assembler format: (1) CMP A,#imm8 CMP A,ear (2) CMP A,eam CMP A ● Operation: (1) (First operand)–(Second operand) [Byte comparison] (2) (AH)–(AL) [Byte comparison] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: CM44-00203-3E First operand A A A A Second operand #imm8 ear eam – Byte count 2 2 2+ 1 Cycle count 1 1 2 1 FUJITSU MICROELECTRONICS LIMITED 127 CHAPTER 8 DETAILED INSTRUCTIONS 8.27 CMP (Compare Byte Data of Destination and Source) F2MC-16FX Family ● Example: CMP A,#7FH In this example, the low-order byte data (22H) of AL is compared with the 8-bit immediate data (7FH). AH A AL A0 22 ×× ×× CCR ××××× AH A ×× ×× CCR 128 × 1 0 0 1 T N Z V C T N Z V C Before execution AL A0 22 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.28 CMPL (Compare Long Word Data of Destination and Source) 2 F MC-16FX Family 8.28 CMPL (Compare Long Word Data of Destination and Source) Compare the long word data specified by the first operand with that specified by the second operand and set the result in the condition code register (CCR). The data specified by the first operand and that specified by the second are not changed. ● Assembler format: CMPL A,#imm32 CMPL A,ear CMPL A,eam ● Operation: (First operand)–(Second operand) [Long word comparison] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: CM44-00203-3E First operand A A A Second operand #imm32 ear eam Byte count 5 2 2+ Cycle count 2 2 3 Odd address correction 0 0 1 FUJITSU MICROELECTRONICS LIMITED 129 CHAPTER 8 DETAILED INSTRUCTIONS 8.28 CMPL (Compare Long Word Data of Destination and Source) ● Example: F2MC-16FX Family CMPL A,#12345678H In this example, the long-word data (12345678H) of the accumulator (A) is compared with the 32-bit immediate data (12345678H). A AH AL 12 34 56 78 CCR ××××× A AH AL 12 34 56 78 CCR 130 0 1 0 0 T N Z V C T N Z V C Before execution × After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.29 CMPW (Compare Word Data of Destination and Source) 2 F MC-16FX Family 8.29 CMPW (Compare Word Data of Destination and Source) Compare the word data specified by the first operand with that specified by the second operand and set the result in the condition code register (CCR). The data specified by the first operand and that specified by the second operand are not changed. If only A is specified as an operand, AH and AL are compared. ● Assembler format: (1) CMPW A,#imm16 CMPW A,ear (2) CMPW A,eam CMPW A ● Operation: (1) (First operand)–(Second operand) [Word comparison] (2) (AH)–(AL) [Word comparison] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: CM44-00203-3E First operand A A A A Second operand #imm16 ear eam – Byte count 3 2 2+ 1 Cycle count 1 1 2 1 Odd address correction 0 0 1 0 FUJITSU MICROELECTRONICS LIMITED 131 CHAPTER 8 DETAILED INSTRUCTIONS 8.29 CMPW (Compare Word Data of Destination and Source) F2MC-16FX Family ● Example: CMPW A,RW0 In this example, the word data (ABCDH) of AL is compared with the word data (ABCCH) of RW0. A AH AL ×× ×× AB CD RW0 CCR AB CC ××××× A AH AL ×× ×× AB CD RW0 CCR 132 × 0 0 0 0 T N Z V C T N Z V C Before execution AB CC After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.30 CWBNE (Compare Word Data and Branch if not Equal) 2 F MC-16FX Family 8.30 CWBNE (Compare Word Data and Branch if not Equal) Perform word comparison on the first and second operands (16-bit immediate data) and cause a branch if the first and second operands are not equal. A branch is not taken if the first and second operands are equal. Control is transferred to the address equal to the address of the instruction following CWBNE instruction plus the word data resulting from sign-extending the third operand. When the first operand is @PC + disp16, the operand address is equal to the "address of location containing the machine instruction for the CWBNE instruction + 4 + disp16", not "address of the location containing the machine instruction for the instruction following CWBNE instruction + disp16". the the the the ● Assembler format: CWBNE A,#imm16,rel CWBNE ear,#imm16,rel CWBNE eam,#imm16,rel ● Operation: (First operand)≠imm16 [Word comparison] : (PC) ← (PC)+<Byte count>+rel (First operand)=imm16 [Word comparison] : (PC) ← (PC)+<Byte count> ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the comparison result is "1", cleared otherwise. Z: Set when (First operand) = imm16, cleared otherwise. V: Set when an overflow has occurred as a result of the compare operation, cleared otherwise. C: Set when a borrow has occurred as a result of the compare operation, cleared otherwise. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 133 CHAPTER 8 DETAILED INSTRUCTIONS 8.30 CWBNE (Compare Word Data and Branch if not Equal) F2MC-16FX Family ● Byte count and cycle count: First operand A ear eam Second operand #imm16 #imm16 #imm16 Third operand rel rel rel Byte count 4 5 5+ Cycle count 5 5 6 Odd address correction 0 0 1 ● Example: CWBNE A,#0E5E5H,30H In this example, the word data (5EE5H) of AL is compared with the 16-bit immediate data (E5E5H). A branch is caused because the first and second operands are not equal. AH A AL 5E E5 ×× ×× PC CCR D8 56 ××××× AH A ×× ×× PC CCR 134 D8 8A × 0 0 0 0 T N Z V C T N Z V C Before execution AL 5E E5 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.31 DBNZ (Decrement Byte Data and Branch if not Zero) 2 F MC-16FX Family 8.31 DBNZ (Decrement Byte Data and Branch if not Zero) Decrement the data specified by the first operand by one byte, and if the result is not equal to 00H, a branch is generated. If the decrement result is equal to 00H, control is transferred to the next instruction. Control is transferred to the address equal to the address of the instruction following the DBNZ instruction plus the word data resulting from sign-extending the data specified by the second operand. When the first operand is @PC + disp16, the operand address is equal to the "address of the location containing the machine instruction for the DBNZ instruction + 4 + disp16", not the "address of the location containing the machine instruction for the instruction following the DBNZ instruction + disp16". ● Assembler format: DBNZ ear,rel DBNZ eam,rel ● Operation: (ea) ← (ea)–1 [Byte subtraction] if (ea) ≠ 0 : (PC) ← (PC)+<Byte count>+rel if (ea) = 0 : (PC) ← (PC)+<Byte count> ● CCR: I S T N Z V C – – – * * * – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Unchanged ● Byte count and cycle count: CM44-00203-3E First operand ear eam Second operand rel rel Byte count 3 3+ Cycle count 5 6 FUJITSU MICROELECTRONICS LIMITED 135 CHAPTER 8 DETAILED INSTRUCTIONS 8.31 DBNZ (Decrement Byte Data and Branch if not Zero) F2MC-16FX Family ● Example: DBNZ @RW0+2,40H In this example, the byte data (03H) at the address (0122H) specified by the first operand (@RW0+2) is decremented by one. A branch is caused because the operation result is not "0". PC E3 58 PC E3 9C RW0 01 20 RW0 01 20 CCR 0 0 0 0 1 T N Z V C CCR 0 0 1 0 1 T N Z V C Memory RW0+2 0 3 × × × × Memory 0122 0121 0120 Before execution 136 RW0+2 0 2 × × × × 0122 0121 0120 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family 8.32 DEC (Decrement Byte Data) CHAPTER 8 DETAILED INSTRUCTIONS 8.32 DEC (Decrement Byte Data) Decrement the byte data specified by the operand by one and store the result in the operand. ● Assembler format: DEC ear DEC eam ● Operation: (ea) ← (ea)–1 [Byte subtraction] ● CCR: I S T N Z V C – – – * * * – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Unchanged ● Byte count and cycle count: Operand ear eam Byte count 2 2+ Cycle count 1 3 ● Example: DEC R1 In this example, the byte data (80H) of R1 is decremented by one. R1 CCR 80 ××××× T N Z V C Before execution CM44-00203-3E R1 CCR 7F × 0 0 1 × T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 137 CHAPTER 8 DETAILED INSTRUCTIONS 8.33 DECL (Decrement Long Word Data) 8.33 F2MC-16FX Family DECL (Decrement Long Word Data) Decrement the long word data specified by the operand by one and restore the result in the operand. ● Assembler format: DECL ear DECL eam ● Operation: (ea) ← (ea)–1 [Long word subtraction] ● CCR: I S T N Z V C – – – * * * – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Unchanged ● Byte count and cycle count: Operand ear eam Byte count 2 2+ Cycle count 2 4 Odd address correction 0 2 ● Example: DECL RL0 In this example, the long word data (00001000H) of RL0 is decremented by one. RL0 0 0 0 0 CCR 10 00 ××××× RL0 00 00 CCR T N Z V C Before execution 138 0F FF × 0 0 0 × T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.34 DECW (Decrement Word Data) 2 F MC-16FX Family 8.34 DECW (Decrement Word Data) Decrement the word data specified by the operand by one and restore the result in the operand. ● Assembler format: DECW ear DECW eam ● Operation: (ea) ← (ea)–1 [Word subtraction] ● CCR: I S T N Z V C – – – * * * – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Unchanged ● Byte count and cycle count: CM44-00203-3E Operand ear eam Byte count 2 2+ Cycle count 1 3 Odd address correction 0 2 FUJITSU MICROELECTRONICS LIMITED 139 CHAPTER 8 DETAILED INSTRUCTIONS 8.34 DECW (Decrement Word Data) F2MC-16FX Family ● Example: DECW @RW0+1000H In this example, the word data (0001H) at the address (7780H) specified by the operand (@RW0+1000H) is decremented by one. 67 80 RW0 CCR RW0+1000H ××××× CCR × 0 0 1 × T N Z V C T N Z V C Memory Memory 0 0 0 1 × × 7781 7780 777F Before execution 140 67 80 RW0 0 0 RW0+1000H 0 0 × × 7781 7780 777F After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.35 DIV (Divide Word Data by Byte Data) 2 F MC-16FX Family 8.35 DIV (Divide Word Data by Byte Data) Divide the word data specified by the first operand by the byte data specified by the second operand and store the quotient (byte data) in the first operand and the remainder (byte data) in the second operand. The operation assumes that the values are signed ones. If only A is specified by an operand, the word data of AH is divided by the byte data of AL and the quotient (byte data) is stored in AL and the remainder (byte data) in AH. The operation assumes that the values are signed ones. If division by zero occurs, the second operand or AL retains the value it had immediately before the instruction was executed. If an overflow occurs, the contents of AL are undefined. ● Assembler format: (1) DIV A,ear (2) DIV A DIV A,eam ● Operation: (1) word (A) / byte (ea), Quotient → byte (A), Remainder → byte (ea) (2) word (AH) / byte (AL), Quotient → byte (AL), Remainder → byte (AH) ● CCR: I S T N Z V C – – – – – * * I, S, T, N, and Z: Unchanged V: Set when an overflow has occurred as a result of the operation or the divisor is zero, cleared otherwise. C: Set when the divisor is zero, cleared otherwise. ● Byte count and cycle count: First operand A A A Second operand – ear eam Byte count 2 2 2+ Cycle count CM44-00203-3E Overflow: 5 Overflow: 5 Overflow: 6 Normal termination: 11 Normal termination: 11 Normal termination: 13 FUJITSU MICROELECTRONICS LIMITED 141 CHAPTER 8 DETAILED INSTRUCTIONS 8.35 DIV (Divide Word Data by Byte Data) F2MC-16FX Family ● Example: DIV A In this example, the word data (1357H) of AH is divided by the byte data (AAH) of AL with a sign. The quotient is set to the low-order byte of AL and the remainder to the low-order byte of AH. A AL 00 AA AH 13 57 CCR ××××× A AH 00 31 CCR 142 00 C7 ××× 0 0 T N Z V C T N Z V C Before execution AL After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.36 DIVW (Divide Long Word Data by Word Data) 2 F MC-16FX Family 8.36 DIVW (Divide Long Word Data by Word Data) Divide the long word data specified by the first operand (A) by the word data specified by the second operand and store the quotient (word data) in A and the remainder (word data) in the second operand. The operation assumes that the values are signed ones. If division by zero occurs, the second operand or AL retains the value it had immediately before the instruction was executed. If an overflow occurs, the contents of AL are undefined. ● Assembler format: DIVW A,ear DIVW A,eam ● Operation: long word (A) / word (ea), Quotient → word (A), Remainder → word (ea) ● CCR: I S T N Z V C – – – – – * * I, S, T, N, and Z: Unchanged V: Set when an overflow has occurred as a result of the operation or the divisor is zero, cleared otherwise. C: Set when the divisor is zero, cleared otherwise. ● Byte count and cycle count: CM44-00203-3E First operand A A Second operand ear eam Byte count 2 2+ Cycle count Overflow: 5 Normal termination: 19 Overflow: 6 Normal termination: 21 Odd address correction 0 2 FUJITSU MICROELECTRONICS LIMITED 143 CHAPTER 8 DETAILED INSTRUCTIONS 8.36 DIVW (Divide Long Word Data by Word Data) F2MC-16FX Family ● Example: DIVW A,7254H In this example, the long word data (00001357H) of the accumulator (A) is divided by the word data (00AAH) at address 7254H with a sign. The quotient is set to AL and the remainder to address 7254H. A AH AL 00 00 13 57 CCR ××××× A AL 00 1D AH 00 00 CCR ××× T N Z V C T N Z V C Memory 0 0 A A Memory 7255 7254 Before execution 144 0 0 0 0 1 5 7255 7254 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.37 DIVU (Divide unsigned Word Data by unsigned Byte Data) 2 F MC-16FX Family 8.37 DIVU (Divide unsigned Word Data by unsigned Byte Data) Divide the word data specified by the first operand by the byte data specified by the second operand and store the quotient (byte data) in the first operand and the remainder (byte data) in the second operand. The operation assumes that the values are unsigned ones. If only A is specified by an operand, the word data of AH is divided by the byte data of AL and the quotient (byte data) is stored in AL and the remainder (byte data) in AH. The operation assumes that the values are unsigned ones. If an overflow or division by zero occurs, the second operand or AL retains the value it had immediately before the instruction was executed. ● Assembler format: (1) DIVU A,ear (2) DIVU A DIVU A,eam ● Operation: (1) word (A) / byte (ea), Quotient → byte (A), Remainder → byte (ea) (2) word (AH) / byte (AL), Quotient → byte (AL), Remainder → byte (AH) ● CCR: I S T N Z V C – – – – – * * I, S, T, N, and Z: Unchanged V: Set when an overflow has occurred as a result of the operation or the divisor is zero, cleared otherwise. C: Set when the divisor is zero, cleared otherwise. ● Byte count and cycle count: CM44-00203-3E First operand A A A Second operand – ear eam Byte count 1 2 2+ Cycle count Overflow: 4 Normal termination: 9 Overflow: 4 Overflow: 5 Normal termination: 9 Normal termination: 11 FUJITSU MICROELECTRONICS LIMITED 145 CHAPTER 8 DETAILED INSTRUCTIONS 8.37 DIVU (Divide unsigned Word Data by unsigned Byte Data) F2MC-16FX Family ● Example: DIVU A In this example, the word data (1357H) of AH is divided by the byte data (AAH) of AL without a sign. The quotient is set to AL and the remainder to AH. A AH AL 13 57 00 AA CCR ××××× A AH AL 00 15 00 1D CCR 146 0 0 T N Z V C T N Z V C Before execution ××× After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.38 DIVUW (Divide unsigned Long Word Data by unsigned Word Data) 2 F MC-16FX Family 8.38 DIVUW (Divide unsigned Long Word Data by unsigned Word Data) Divide the long word data specified by the first operand (A) by the word data specified by the second operand and store the quotient (word data) in A and the remainder (word data) in the second operand. The operation assumes that the values are unsigned ones. If an overflow or division by zero occurs, the second operand or AL retains the value it had immediately before the instruction was executed. ● Assembler format: DIVUW A,ear DIVUW A,eam ● Operation: long word (A) / word (ea), Quotient → word (A), Remainder → word (ea) ● CCR: I S T N Z V C – – – – – * * I, S, T, N, and Z: Unchanged V: Set when an overflow has occurred as a result of the operation or the divisor is zero, cleared otherwise. C: Set when the divisor is zero, cleared otherwise. ● Byte count and cycle count: CM44-00203-3E First operand A A Second operand ear eam Byte count 2 2+ Cycle count Overflow: 4 Normal termination: 17 Overflow: 5 Normal termination: 19 Odd address correction 0 2 FUJITSU MICROELECTRONICS LIMITED 147 CHAPTER 8 DETAILED INSTRUCTIONS 8.38 DIVUW (Divide unsigned Long Word Data by unsigned Word Data) ● Example: F2MC-16FX Family DIVUW A,7254H In this example, the long word data (00001357H) of the accumulator (A) is divided by the word data (00AAH) at address 7254H without a sign. The quotient is set to AL and the remainder to address 7254H. A AH AL 00 00 13 57 CCR ××××× A AH AL 00 00 00 1D CCR 0 0 A A Memory 7255 7254 Before execution 148 0 0 T N Z V C T N Z V C Memory ××× 0 0 1 5 7255 7254 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.39 DWBNZ (Decrement Word Data and Branch if not Zero) 2 F MC-16FX Family 8.39 DWBNZ (Decrement Word Data and Branch if not Zero) Decrement the data specified by the first operand by one word, and if the result is not equal to zero, cause a branch. If the decrement result is equal to zero, control is transferred to the instruction following the DWBNZ instruction. Control is transferred to the address equal to the address of the instruction following the DWBNZ instruction plus the word data resulting from sign-extending the data specified by the second operand. When the first operand is @PC + disp16, the operand address is equal to the "address of the location containing the machine instruction for the DWBNZ instruction + 4 + disp16", not the "address of the location containing the machine instruction for the instruction following the DWBNZ instruction + disp16". ● Assembler format: DWBNZ ear,rel DWBNZ eam,rel ● Operation: (First operand) ← (First operand)–1 When (First operand)≠0, [Word subtraction] (PC) ← (PC)+<Byte count>+second operand (PC) ← (PC)+<Byte count> ● CCR: I S T N Z V C – – – * * * – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Unchanged ● Byte count and cycle count: CM44-00203-3E First operand ear eam Second operand rel rel Byte count 3 3+ Cycle count 5 6 Odd address correction 0 2 FUJITSU MICROELECTRONICS LIMITED 149 CHAPTER 8 DETAILED INSTRUCTIONS 8.39 DWBNZ (Decrement Word Data and Branch if not Zero) F2MC-16FX Family ● Example: DWBNZ RW0,30H In this example, the word data (0001H) of RW0 is decremented by one. A branch is not caused because the operation result is "0". PC F8 20 PC F8 23 RW0 00 01 RW0 00 00 CCR ××××× T N Z V C Before execution 150 CCR × 0 0 0 × T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.40 EXT (Sign Extend from Byte Data to Word Data) 2 F MC-16FX Family 8.40 EXT (Sign Extend from Byte Data to Word Data) Extend the lower byte data of AL to word data as a signed binary number. ● Assembler format: EXT ● Operation: When bit 7 of AL=0, bits 8 to 15 of AL ← 00H When bit 7 of AL≠0, bits 8 to 15 of AL ← FFH ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the sign-extended data is "1", cleared otherwise. Z: Set when the sign-extended data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: EXT In this example, the high-order byte (bits 8 to 15) of AL is extended with FFH because the most significant bit of the low-order byte data (80H) of AL is "1". AH A AL ×× 80 ×× ×× CCR ××××× AH A ×× ×× CCR CM44-00203-3E × 1 0 ×× T N Z V C T N Z V C Before execution AL FF 80 After execution FUJITSU MICROELECTRONICS LIMITED 151 CHAPTER 8 DETAILED INSTRUCTIONS 8.41 EXTW (Sign Extend from Word Data to Long Word Data) 8.41 F2MC-16FX Family EXTW (Sign Extend from Word Data to Long Word Data) Extend the low-order word data of A to long word data as a signed binary number. ● Assembler format: EXTW ● Operation: When bit15 of A=0, (AH) ← 0000H When bit15 of A≠0, (AH) ← FFFFH ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the sign-extended data is "1", cleared otherwise. Z: Set when the sign-extended data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: EXTW In this example, AH (bits 16 to 31 of A) is extended with FFFFH because the most significant bit of the word data (FF80H) of AL is "1". AH A AL FF 80 ×× ×× CCR ××××× A AH FF FF CCR 152 × 1 0 ×× T N Z V C T N Z V C Before execution AL FF 80 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.42 FILS, FILSI (Fill String Byte) 2 F MC-16FX Family 8.42 FILS, FILSI (Fill String Byte) Transfer the contents of AL to the RW0-byte area that starts from the address whose high-order eight bits are specified by the bank register specified by <bank> and whose low-order 16 bits are specified by the contents of AH. If RW0 is equal to zero, transfer is not performed. If an interrupt occurs during the execution of the instruction, the execution of the instruction is suspended. After the interrupt has been handled, the execution of the instruction is resumed. Four types of registers PCB, DTB, ADB, and SPB can be specified by <bank>. If <bank> is omitted, DTB is assumed. ● Assembler format: FILS [<bank>] FILSI [<bank>] ● Operation: While RW0 ≠ 0, the following operation is repeated: ((AH)) ← (AL) [Byte transfer], (AH) ← (AH)+1, (RW0) ← (RW0)–1 ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: Byte count: 2 Cycle count: (RW0 + 1) / 2 Odd address correction: 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 153 CHAPTER 8 DETAILED INSTRUCTIONS 8.42 FILS, FILSI (Fill String Byte) F2MC-16FX Family ● Example: FILS In this example, the low-order byte data (E5H) of AL is transferred from the address (94BC00H) specified by DTB and AH to the number of bytes (0100H) specified by RW0. A AH BC 00 RW0 01 00 AL 00 E5 DTB CCR 94 A AH BD 00 RW0 00 00 ××××× CCR T N Z V C × ×× × × AH 1 0 94BC02 94BC01 94BC00 94BD00 94BCFF 94BCFE E 5 E 5 ... ... ... ... 94BD00 94BCFF 94BCFE Before execution 154 94 Memory × × × × × × AH DTB T N Z V C Memory × × × × × × AL 00 E5 E 5 E 5 E 5 94BC02 94BC01 94BC00 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.43 FILSW, FILSWI (Fill String Word) 2 F MC-16FX Family 8.43 FILSW, FILSWI (Fill String Word) Transfer the contents of AL to the RW0-word area that starts from the address whose high-order eight bits are specified by the bank register specified by <bank> and whose low-order 16 bits are specified by the contents of AH. If RW0 is equal to zero, transfer is not performed. If an interrupt occurs during the execution of the instruction, the execution of the instruction is suspended. After the interrupt has been handled, the execution of the instruction is resumed. Four types of registers PCB, DTB, ADB, and SPB can be specified by <bank>. If <bank> is omitted, DTB is assumed. ● Assembler format: FILSW [<bank>] FILSWI [<bank>] ● Operation: While RW0 ≠ 0, the following operation is repeated: ((AH)) ← (AL) [Word transfer], (AH) ← (AH)+2, (RW0) ← (RW0)–1 ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: Byte count: 2 Cycle count: 1 cycle when RW0 is zero; RW0 cycle(s) in all other cases Odd address correction: 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 155 CHAPTER 8 DETAILED INSTRUCTIONS 8.43 FILSW, FILSWI (Fill String Word) F2MC-16FX Family ● Example: FILSW ADB In this example, the word data (E55EH) of AL is transferred from the address (49ABFEH) specified by ADB and AH to the number of words (0080H) specified by RW0. A AH AB FE RW0 00 80 AL E5 5E ADB CCR 49 A AH AC FE RW0 00 00 ××××× CCR T N Z V C × ×× × × × × AH 0 0 49AC00 49ABFF 49ABFE 49ACFF 49ACFE 49ACFD E 5 ... ... ... ... 49ACFF 49ACFE 49ACFD Before execution 156 49 Memory × × × × × × AH ADB T N Z V C Memory × × × × × × AL E5 5E 5 E E 5 5 E 49AC00 49ABFF 49ABFE After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.44 INC (Increment Byte Data (Address Specification)) 2 F MC-16FX Family 8.44 INC (Increment Byte Data (Address Specification)) Increment the byte data specified by the operand by one and restore the result in the operand. ● Assembler format: INC ear INC eam ● Operation: (Operand) ← (Operand)+1 [Byte increment] ● CCR: I S T N Z V C – – – * * * – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Unchanged ● Byte count and cycle count: Operand ear eam Byte count 2 2+ Cycle count 1 3 ● Example: INC R0 In this example, "1" is added to the byte data (FFH) of R0. R0 CCR FF ××××× T N Z V C Before execution CM44-00203-3E 00 R0 CCR × 0 1 0 × T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 157 CHAPTER 8 DETAILED INSTRUCTIONS 8.45 INCL (Increment Long Word Data) 8.45 F2MC-16FX Family INCL (Increment Long Word Data) Increment the long word data specified by the operand by one and restore the result in the operand. ● Assembler format: INCL ear INCL eam ● Operation: (Operand) ← (Operand)+1 [Long word increment] ● CCR: I S T N Z V C – – – * * * – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Unchanged ● Byte count and cycle count: Operand ear eam Byte count 2 2+ Cycle count 2 4 Odd address correction 0 2 ● Example: INCL RL0 In this example, "1" is added to the long word data (7FFFFFFFH) of RL0. RL0 AH AL 7F FF FF FF CCR ××××× RL0 AH AL 80 00 00 00 CCR 158 1 0 1 × T N Z V C T N Z V C Before execution × After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.46 INCW (Increment Word Data) 2 F MC-16FX Family 8.46 INCW (Increment Word Data) Increment the word data specified by the operand by one and restore the result in the operand. ● Assembler format: INCW ear INCW eam ● Operation: (Operand) ← (Operand)+1 [Word increment] ● CCR: I S T N Z V C – – – * * * – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Unchanged ● Byte count and cycle count: CM44-00203-3E Operand ear eam Byte count 2 2+ Cycle count 1 3 Odd address correction 0 2 FUJITSU MICROELECTRONICS LIMITED 159 CHAPTER 8 DETAILED INSTRUCTIONS 8.46 INCW (Increment Word Data) F2MC-16FX Family ● Example: INCW @RW0+ In this example, "1" is added to the word data (0101H) at the address (0354H) specified by the operand (@RW0+). 03 54 RW0 CCR ××××× CCR 0 0 0 × T N Z V C Memory Memory 0 0 1 1 0357 0356 0355 0354 Before execution 160 × T N Z V C × × × × RW0 03 56 RW0 RW0 × × × × 0 0 1 2 0357 0356 0355 0354 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.47 INT (Software Interrupt) 2 F MC-16FX Family 8.47 INT (Software Interrupt) Cause a branch to the interrupt handling routine at the specified address in the bank 0FFH. By executing the RETI instruction in the interrupt handling routine to which control has been transferred, control returns to the instruction following this instruction. ● Assembler format: INT addr16 ● Operation: (SSP) ← (SSP)–2, ((SSP)) ← (AH), (SSP) ← (SSP)–2, ((SSP)) ← (AL) (SSP) ← (SSP)–2, ((SSP)) ← (DPR) : (ADB) [DPR and ADB are saved as a set, DPR as the high-order byte and ADB as the loworder byte.] (SSP) ← (SSP)–2, ((SSP)) ← (DTB) : (PCB) [DTB and PCB are saved as a set, DTB as the high-order byte and PCB as the low-order byte.] (SSP) ← (SSP)–2, ((SSP)) ← (PC+3), (SSP) ← (SSP)–2, ((SSP)) ← (PS) (S) ← 1, (I) ← 0, (PCB) ← 0FFH, (PC) ← addr16 ● CCR: I S T N Z V C R S – – – – – I: Cleared S: Set T, N, Z, V, and C: Unchanged ● Byte count and cycle count: Byte count: 3 Cycle count: 8 Odd address correction: 6 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 161 CHAPTER 8 DETAILED INSTRUCTIONS 8.47 INT (Software Interrupt) F2MC-16FX Family ● Example: INT 020F2H In this example, a branch is caused to the interrupt handling routine at address FF20F2H. FFH is set to PCB. A AH FF EE DTB 99 DPR BB ILM 03 SSB 03 AL DD CC PCB PC 88 77 66 ADB CCR AA RP I S T N Z V C 10 0 0 0 0 1 0 1 SSP 80 00 A AH FF EE DTB 99 DPR BB ILM 03 SSB 03 × × × × × × × × × × × × × × × × × × × × × × × × 038000 037FFF 037FFE 037FFD 037FFC 037FFB 037FFA 037FF9 037FF8 037FF7 037FF6 037FF5 037FF4 Before execution 162 PCB PC FF 20 F2 ADB CCR AA I S T N Z V C RP 0 1 0 0 1 0 1 10 SSP 7F F4 Memory Memory SSP AL DD CC SSP F E D C B A 9 8 7 6 7 8 F E D C B A 9 8 7 9 0 5 038000 037FFF 037FFE 037FFD 037FFC 037FFB 037FFA 037FF9 037FF8 037FF7 037FF6 037FF5 037FF4 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.48 INT (Software Interrupt (Vector Specification)) 2 F MC-16FX Family 8.48 INT (Software Interrupt (Vector Specification)) Cause a branch to the interrupt handling routine pointed to by the interrupt vector specified by the operand. ● Assembler format: INT #vct8 ● Operation: (SSP) ← (SSP)–2, ((SSP)) ← (AH), (SSP) ← (SSP)–2, ((SSP) ← (AL) (SSP) ← (SSP)–2, ((SSP)) ← (DPR) : (ADB) [DPR and ADB are saved as a set, DPR as the high-order byte and ADB as the loworder byte.] (SSP) ← (SSP)–2, ((SSP)) ← (DTB) : (PCB) [DTB and PCB are saved as a set, DTB as the high-order byte and PCB as the low-order byte.] (SSP) ← (SSP)–2, ((SSP)) ← (PC+2), (SSP) ← (SSP)–2, ((SSP)) ← (PS) (S) ← 1, (I) ← 0, (PCB) ← Vector address (High-order byte) (PC) ← Vector address (Low-order word) ● CCR: I S T N Z V C R S – – – – – I: Cleared S: Set T, N, Z, V, and C: Unchanged ● Byte count and cycle count: Byte count: 2 Cycle count: 12 Odd address correction: 6 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 163 CHAPTER 8 DETAILED INSTRUCTIONS 8.48 INT (Software Interrupt (Vector Specification)) F2MC-16FX Family ● Example: INT #11 In this example, a branch is caused to the interrupt handling routine specified by the interrupt vector of #11. AH FF EE A DTB 99 DPR BB ILM 02 SSB 03 AL DD CC PCB PC 88 77 66 ADB CCR AA RP I S T N Z V C 15 0 0 0 0 1 0 1 SSP 80 00 A AH FF EE DTB 99 DPR BB ILM 02 SSB 03 Memory PCB PC 89 E7 95 ADB CCR AA RP I S T N Z V C 15 0 1 0 0 1 0 1 SSP 7F F4 Memory 8 9 E 7 9 5 FFFFD2 FFFFD1 FFFFD0 8 9 E 7 9 5 FFFFD2 FFFFD1 FFFFD0 × × × × × × × × × × × × 038000 037FFF 037FFE 037FFD 037FFC 037FFB 037FFA 037FF9 037FF8 037FF7 037FF6 037FF5 037FF4 F E D C B A 9 8 7 6 5 8 037FFF 037FFE 037FFD 037FFC 037FFB 037FFA 037FF9 037FF8 037FF7 037FF6 037FF5 037FF4 SSP × × × × × × × × × × × × Before execution 164 AL DD CC SSP F E D C B A 9 8 7 8 5 5 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.49 INT9 (Software Interrupt) 2 F MC-16FX Family 8.49 INT9 (Software Interrupt) Cause a branch to the interrupt handling routine pointed to by the vector. By executing the RETI instruction in the interrupt handling routine to which control has been transferred, control returns to the instruction following this instruction. ● Assembler format: INT9 ● Operation: (SSP) ← (SSP)–2, ((SSP)) ← (AH), (SSP) ← (SSP)–2, ((SSP)) ← (AL) (SSP) ← (SSP)–2, ((SSP)) ← (DPR) : (ADB) [DPR and ADB are saved as a set, DPR as the high-order byte and ADB as the loworder byte.] (SSP) ← (SSP)–2, ((SSP)) ← (DTB) : (PCB) [DTB and PCB are saved as a set, DTB as the high-order byte and PCB as the low-order byte.] (SSP) ← (SSP)–2, ((SSP)) ← (PC+1), (SSP) ← (SSP)–2, ((SSP)) ← (PS) (S) ← 1, (I) ← 0, (PCB) ← Vector address (High-order byte) (PC) ← Vector address (Low-order word) ● CCR: I S T N Z V C R S – – – – – I: Cleared S: Set T, N, Z, V, and C: Unchanged ● Byte count and cycle count: Byte count: 1 Cycle count: 12 Odd address correction: 6 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 165 CHAPTER 8 DETAILED INSTRUCTIONS 8.49 INT9 (Software Interrupt) F2MC-16FX Family ● Example: INT9 In this example, a branch is caused to the interrupt handling routine specified by the interrupt vector of #9. A AH AL 11 22 33 44 DTB 77 DPR 55 ILM 02 SSB 03 PCB PC 88 99 AA ADB CCR 66 RP I S T N Z V C 15 0 0 0 0 1 0 1 SSP 80 00 A AH AL 11 22 33 44 DTB 77 DPR 55 ILM 02 SSB 03 Memory Memory 8 9 E 7 9 5 FFFFDA FFFFD9 FFFFD8 8 9 E 7 9 5 FFFFDA FFFFD9 FFFFD8 × × × × × × × × × × × × 038000 037FFF 037FFE 037FFD 037FFC 037FFB 037FFA 037FF9 037FF8 037FF7 037FF6 037FF5 037FF4 1 2 3 4 5 6 7 8 9 A 5 8 037FFF 037FFE 037FFD 037FFC 037FFB 037FFA 037FF9 037FF8 037FF7 037FF6 037FF5 037FF4 SSP × × × × × × × × × × × × Before execution 166 PCB PC 89 E7 95 ADB CCR 66 RP I S T N Z V C 15 0 1 0 0 1 0 1 SSP 7F F4 SSP 1 2 3 4 5 6 7 8 9 B 5 5 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.50 INTP (Software Interrupt) 2 F MC-16FX Family 8.50 INTP (Software Interrupt) Cause a branch to the interrupt handling routine at the 24-bit physical address specified by the operand. Any address in the entire 16Mbyte space can be specified. By executing the RETI instruction in the interrupt handling routine to which control has been transferred, control returns to the instruction following this instruction. ● Assembler format: INTP addr24 ● Operation: (SSP) ← (SSP)–2, ((SSP)) ← (AH), (SSP) ← (SSP)–2, ((SSP)) ← (AL) (SSP) ← (SSP)–2, ((SSP)) ← (DPR) : (ADB) [DPR: High-order byte, ADB: Low-order byte] (SSP) ← (SSP)–2, ((SSP)) ← (DTB) : (PCB) [DTB: High-order byte, PCB: Low-order byte] (SSP) ← (SSP)–2, ((SSP)) ← (PC+4), (SSP) ← (SSP)–2, ((SSP)) ← (PS) (S) ← 1, (I) ← 0, (PCB) ← Most significant byte of addr24, (PC) ← Low-order word of addr24 ● CCR: I S T N Z V C R S – – – – – I: Cleared S: Set T, N, Z, V, and C: Unchanged ● Byte count and cycle count: Byte count: 4 Cycle count: 8 Odd address correction: 6 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 167 CHAPTER 8 DETAILED INSTRUCTIONS 8.50 INTP (Software Interrupt) F2MC-16FX Family ● Example: INTP 0C8F220H In this example, a branch is caused to the interrupt handling routine at address C8F220H. C8H is set to PCB. A AH 11 22 DTB 77 DPR 55 ILM 03 SSB 03 AL 33 44 PCB PC 88 99 AA ADB CCR 66 RP I S T N Z V C 10 0 0 0 0 1 0 1 SSP 80 00 A AH 11 22 DTB 77 DPR 55 ILM 03 SSB 03 × × × × × × × × × × × × × × × × × × × × × × × × 038000 037FFF 037FFE 037FFD 037FFC 037FFB 037FFA 037FF9 037FF8 037FF7 037FF6 037FF5 037FF4 Before execution 168 PCB PC C8 F2 20 ADB CCR 66 I S T N Z V C RP 0 1 0 0 1 0 1 10 SSP 7F F4 Memory Memory SSP AL 33 44 SSP 1 2 3 4 5 6 7 8 9 A 7 8 1 2 3 4 5 6 7 8 9 E 0 5 038000 037FFF 037FFE 037FFD 037FFC 037FFB 037FFA 037FF9 037FF8 037FF7 037FF6 037FF5 037FF4 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.51 JCTX (Jump Context) 2 F MC-16FX Family 8.51 JCTX (Jump Context) Restore register contents or an address saved in memory. ● Assembler format: JCTX @A ● Operation: (temp) ← (AL) (PS) ← ((temp)) : (temp) ← (temp)+2 (PC) ← ((temp)) : (temp) ← (temp)+2 (DTB), (PCB) ← ((temp)) : (temp) ← (temp)+2 (DPR), (ADB) ← ((temp)) : (temp) ← (temp)+2 (AL) ← ((temp)) : (temp) ← (temp)+2 (AH) ← ((temp)) ● CCR: I S T N Z V C * * * * * * * I: Stores bit 6 of the address indicated by AL. S: Stores bit 5 of the address indicated by AL. T: Stores bit 4 of the address indicated by AL. N: Stores bit 3 of the address indicated by AL. Z: Stores bit 2 of the address indicated by AL. V: Stores bit 1 of the address indicated by AL. C: Stores bit 0 of the address indicated by AL. ● Byte count and cycle count: Byte count: 1 Cycle count: 23 cycles when the content of RP changes; 6 cycles in all other cases CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 169 CHAPTER 8 DETAILED INSTRUCTIONS 8.51 JCTX (Jump Context) F2MC-16FX Family ● Example: JCTX @A In this example, a context is returned from the address (09E020H) specified by DTB and AL. AH A AL E0 20 ×× ×× A DTB 09 DPR PCB PC ×× ×× ×× ×× ×× ILM RP ×× ×× × × × × × × × ADB CCR I S T N Z V C AL B 5 2 0 8 E 0 0 8 1 6 A 09E02C 09E02B 09E02A 09E029 09E028 09E027 09E026 09E025 09E024 09E023 09E022 09E021 09E020 Before execution 170 DTB 80 DPR 08 ILM 07 AL 02 50 PCB 50 ADB CE RP 16 PC 88 01 CCR I S T N Z V C 0 0 0 1 0 1 0 Memory Memory C 7 0 5 0 C 8 5 8 0 F 8 AH CB 75 C 7 0 5 0 C 8 5 8 0 F 8 B 5 2 0 8 E 0 0 8 1 6 A 09E02C 09E02B 09E02A 09E029 09E028 09E027 09E026 09E025 09E024 09E023 09E022 09E021 09E020 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.52 JMP (Jump Destination Address) 2 F MC-16FX Family 8.52 JMP (Jump Destination Address) Read the word data from the address specified by the operand and cause a branch to the address specified by the word data. ● Assembler format: JMP @A JMP addr16 JMP @ear JMP @eam ● Operation: (PC) ← (Operand) ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Operand @A @ear @eam addr16 Byte count 1 2 2+ 3 Cycle count 2 2 4 2 Odd address correction 0 0 1 0 ● Example: JMP @@RW0+2 In this example, a branch is caused to the address (DB80H) specified by the word data at the address (A0A2H) specified by the operand (@RW0+2). PC E0 00 PC DB 80 RW0 A0 A0 RW0 A0 A0 Memory RW0+2 D 8 B 0 × × × × Memory A0A3 A0A2 A0A1 A0A0 Before execution CM44-00203-3E RW0+2 D 8 B 0 × × × × A0A3 A0A2 A0A1 A0A0 After execution FUJITSU MICROELECTRONICS LIMITED 171 CHAPTER 8 DETAILED INSTRUCTIONS 8.53 JMPP (Jump Destination Physical Address) 8.53 F2MC-16FX Family JMPP (Jump Destination Physical Address) If the operand is addr24, this instruction causes a branch to the physical address specified by addr24. If the operand is @ea, the instruction causes a branch to the physical address specified by the contents of the operand. ● Assembler format: (1) JMPP addr24 (2) JMPP @ear JMPP @eam ● Operation: (1): (2): (PC) ← Low-order word of addr24 (PCB) ← Most significant byte of addr24 (PC) ← (ea) [Word transfer] (PCB) ← (ea+2) [Byte transfer] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Operand addr24 @ear @eam Byte count 4 2 2+ Cycle count 2 3 5 Odd address correction 0 0 1 ● Example: JMPP 0FFC850H In this example, a branch is caused to FFC850H. FFH is set to PCB. PC 12 48 PCB 3 4 Before execution 172 PC C8 50 PCB F F After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.54 LINK (Link and Create New Stack Frame) 2 F MC-16FX Family 8.54 LINK (Link and Create New Stack Frame) Store the current value of the frame pointer (RW3) in a stack and set a new frame pointer. This allows an area for a new local variable to be reserved. This instruction is used before a function is called. ● Assembler format: LINK #imm8 ● Operation: (SP) ← (SP)–2 ; ((SP)) ← (RW3) ; (RW3) ← (SP) ; (SP) ← (SP)–imm8 ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 2 Cycle count: 2 Odd address correction: 1 ● Example: LINK #20H In this example, RW3 is pushed to the stack specified by SP. Then, the 8-bit immediate data (20H) is subtracted from the SP value (E020H). SP RW3 E0 22 A0 46 SP RW3 Memory SP × × E0 20 Memory A 4 E022 SP Before execution CM44-00203-3E E0 00 0 6 E020 × × E000 After execution FUJITSU MICROELECTRONICS LIMITED 173 CHAPTER 8 DETAILED INSTRUCTIONS 8.55 LSL (Logical Shift Byte Data of Accumulator to Left) 8.55 F2MC-16FX Family LSL (Logical Shift Byte Data of Accumulator to Left) Shift the least significant byte data of the accumulator (A) to the left by the number of bits specified by the second operand. The least significant bit of A is set to "0". The bit last shifted out from the most significant bit of the least significant byte data for A is stored in the carry flag (C). ● Assembler format: LSL A,R0 ● Operation: C A MSB LSB 0 ● CCR: I S T N Z V C – – – * * – * I, S, and T: Unchanged N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit last shifted out from the MSB of A. Cleared when the shift amount is zero. ● Byte count and cycle count: 174 Byte count: 2 Cycle count: 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.55 LSL (Logical Shift Byte Data of Accumulator to Left) 2 F MC-16FX Family ● Example: LSL A,R0 In this example, the low-order byte data (FEH) of AL is shifted to the left by the number of bits (2 bits) specified by R0. AH A AL ×× FF ×× ×× R0 CCR 02 ××××× T N Z V C Before execution CM44-00203-3E AH A ×× ×× R0 AL ×× FC 02 1 0 ×× T N Z V C After execution CCR FUJITSU MICROELECTRONICS LIMITED × 175 CHAPTER 8 DETAILED INSTRUCTIONS 8.56 LSLL (Logical Shift Long Word Data of Accumulator to Left) 8.56 F2MC-16FX Family LSLL (Logical Shift Long Word Data of Accumulator to Left) Shift the long word data of the accumulator (A) to the left by the number of bits specified by the second operand. The least significant bit of the accumulator (A) is set to "0". The bit last shifted out from the most significant bit is stored in the carry flag (C). ● Assembler format: LSLL A,R0 ● Operation: C MSB A LSB 0 ● CCR: I S T N Z V C – – – * * – * I, S, and T: Unchanged N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit last shifted out from the MSB of A. Cleared when the shift amount is zero. ● Byte count and cycle count: 176 Byte count: 2 Cycle count: 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family CHAPTER 8 DETAILED INSTRUCTIONS 8.56 LSLL (Logical Shift Long Word Data of Accumulator to Left) ● Example: LSLL A,R0 In this example, the long word data (33333333H) of the accumulator (A) is shifted to the left by the number of bits (2 bits) specified by R0. A AH 33 33 AL 33 33 R0 CCR A AH CC CC 02 ××××× CCR T N Z V C Before execution CM44-00203-3E AL CC CC × R0 02 1 0 × 0 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 177 CHAPTER 8 DETAILED INSTRUCTIONS 8.57 LSLW (Logical Shift Word Data of Accumulator to Left) 8.57 F2MC-16FX Family LSLW (Logical Shift Word Data of Accumulator to Left) Shift the low-order word data of the accumulator (A) to the left by one bit. The least significant bit of the accumulator (A) is set to "0". The least significant bit of the accumulator (A) is set to "0". The bit shifted out from the most significant bit of the low-order word data for the accumulator (A) is stored in the carry flag (C). ● Assembler format: LSLW A/SHLW A ● Operation: C MSB AL LSB 0 ● CCR: I S T N Z V C – – – * * – * I, S, and T: Unchanged N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit shifted out from the MSB of A. ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: LSLW A In this example, the word data (AA55H) of AL is shifted to the left by one bit. AH A AL AA 55 ×× ×× CCR ××××× AH A ×× ×× CCR T N Z V C Before execution 178 AL 55 AA × 0 0 × 1 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.58 LSLW (Logical Shift Word Data of Accumulator to Left) 2 F MC-16FX Family 8.58 LSLW (Logical Shift Word Data of Accumulator to Left) Shift the low-order word data of the accumulator (A) to the left by the number of bits specified by the second operand. The least significant bit of the accumulator (A) is set to "0". The bit last shifted out from the most significant bit of the low-order word data for the accumulator (A) is stored in the carry flag (C). ● Assembler format: LSLW A,R0 ● Operation: C MSB AL LSB 0 ● CCR: I S T N Z V C – – – * * – * I, S, and T: Unchanged N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit last shifted out from the MSB of A. Cleared when the shift amount is zero. ● Byte count and cycle count: Byte count: 2 Cycle count: 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 179 CHAPTER 8 DETAILED INSTRUCTIONS 8.58 LSLW (Logical Shift Word Data of Accumulator to Left) F2MC-16FX Family ● Example: LSLW A,R0 In this example, the word data (AA55H) of AL is shifted to the left by the number of bits (4 bits) specified by R0. A AH AL ×× ×× AA 55 R0 CCR A AH AL ×× ×× A5 50 04 ××××× R0 CCR T N Z V C Before execution 180 × 1 0 04 × 0 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.59 LSR (Logical Shift Byte Data of Accumulator to Right) 2 F MC-16FX Family 8.59 LSR (Logical Shift Byte Data of Accumulator to Right) Shift the least significant byte data of the accumulator (A) to the right by the number of bits specified by the second operand. The most significant bit of the least significant byte of the accumulator (A) is set to "0". The bit last shifted out from the least significant bit is stored in the carry flag (C). ● Assembler format: LSR A,R0 ● Operation: AL MSB LSB C T 1 0 ● CCR: I S T N Z V C – – * * * – * I and S: Unchanged T: Set when the shifted-out data from the carry contains one or more "1" bits, cleared otherwise. Also cleared when the shift amount is "0". N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit last shifted out from the LSB of A. Cleared when the shift amount is zero. ● Byte count and cycle count: Byte count: 2 Cycle count: 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 181 CHAPTER 8 DETAILED INSTRUCTIONS 8.59 LSR (Logical Shift Byte Data of Accumulator to Right) F2MC-16FX Family ● Example: LSR A,R0 In this example, the low-order byte data (FFH) of AL is shifted to the right by the number of bits (5 bits) specified by R0. AH A AL ×× ×× ×× R0 CCR FF 05 ××××× AH A AL ×× ×× R0 182 07 05 CCR 1 1 0 T N Z V C Before execution ×× × 1 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.60 LSRL (Logical Shift Long Word Data of Accumulator to Right) 2 F MC-16FX Family 8.60 LSRL (Logical Shift Long Word Data of Accumulator to Right) Shift the long word data of the accumulator (A) to the right by the number of bits specified by the second operand. The most significant bit of the accumulator (A) is set to "0". The bit last shifted out from the least significant bit of the accumulator (A) is stored in the carry flag (C). ● Assembler format: LSRL A,R0 ● Operation: MSB A LSB C T 1 0 ● CCR: I S T N Z V C – – * * * – * I and S: Unchanged T: Set when the shifted-out data from the carry contains one or more "1" bits, cleared otherwise. Also cleared when the shift amount is zero. N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit last shifted out from the LSB of A. Cleared when the shift amount is zero. ● Byte count and cycle count: Byte count: 2 Cycle count: 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 183 CHAPTER 8 DETAILED INSTRUCTIONS 8.60 LSRL (Logical Shift Long Word Data of Accumulator to Right) ● Example: F2MC-16FX Family LSRL A,R0 In this example, the long word data (33333333H) of the accumulator (A) is shifted to the right by the number of bits (16 bits) specified by R0. A AH 33 33 AL 33 33 R0 CCR A AH 00 00 10 ××××× R0 CCR 1 0 0 T N Z V C Before execution 184 AL 33 33 10 × 0 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.61 LSRW (Logical Shift Word Data of Accumulator to Right) 2 F MC-16FX Family 8.61 LSRW (Logical Shift Word Data of Accumulator to Right) Shift the low-order word data of the accumulator (A) to the right by one bit. The most significant bit of the low-order word data of the accumulator (A) is set to "0". The least significant bit is stored in the carry flag (C). ● Assembler format: LSRW A/SHRW A ● Operation: MSB AL LSB C T 1 0 ● CCR: I S T N Z V C – – * R * – * I and S: Unchanged T: Stores the OR of the shifted-out data from the carry and the old T flag value. N: Cleared Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit shifted out from the LSB of A. ● Byte count and cycle count: Byte count: 1 Cycle count: 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 185 CHAPTER 8 DETAILED INSTRUCTIONS 8.61 LSRW (Logical Shift Word Data of Accumulator to Right) F2MC-16FX Family ● Example: LSRW A In this example, the word data (AAAAH) of AL is shifted to the right by one bit. AH A ×× ×× AL AA AA CCR 1 ××× AH A 0 ×× ×× CCR 1 0 0 T N Z V C Before execution 186 AL 55 55 × 0 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.62 LSRW (Logical Shift Word Data of Accumulator to Right) 2 F MC-16FX Family 8.62 LSRW (Logical Shift Word Data of Accumulator to Right) Shift the low-order word data of the accumulator (A) to the right by the number of bits specified by the second operand. The most significant bit of the low-order word data of the accumulator (A) is set to "0". The bit last shifted out from the least significant bit is stored in the carry flag (C). ● Assembler format: LSRW A,R0 ● Operation: MSB AL LSB C T 1 0 ● CCR: I S T N Z V C – – * * * – * I and S: Unchanged T: Set when the shifted-out data from the carry contains one or more "1" bits, cleared otherwise. Also cleared when the shift amount is zero. N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit last shifted out from the LSB of A. Cleared when the shift amount is zero. ● Byte count and cycle count: Byte count: 2 Cycle count: 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 187 CHAPTER 8 DETAILED INSTRUCTIONS 8.62 LSRW (Logical Shift Word Data of Accumulator to Right) F2MC-16FX Family ● Example: LSRW A,R0 In this example, the word data (AAAAH) of AL is shifted to the right by the number of bits (12 bits) specified by R0. A AH AL ×× ×× AA AA R0 CCR A AH AL ×× ×× 00 0A 0C ××××× R0 CCR 1 0 0 T N Z V C Before execution 188 0C × 1 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.63 MOV (Move Byte Data from Source to Accumulator) 2 F MC-16FX Family 8.63 MOV (Move Byte Data from Source to Accumulator) The value in AL is transferred to AH. And then 00H is transferred to the upper bytes of AL; the byte data in the second operand is transferred to the lower bytes of AL. If the second operand is @A, transfer to AH is not performed. ● Assembler format: MOV A,#imm8 MOV A,Ri MOV A,@A MOV A,dir MOV A,@RLi + disp8 MOV A,addr16 MOV A,io MOV A,brg1 MOV A,eam MOV A,ear ● Operation: (A) ← (Second operand) [Byte transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: First operand Second operand A A A #imm8 @A @RLi+disp8 A A A A A A A io addr16 Ri dir ear eam brg1 Byte count 2 2 3 2 3 1 2 2 2+ 2 Cycle count 1 1 1 1 1 1 1 1 1 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 189 CHAPTER 8 DETAILED INSTRUCTIONS 8.63 MOV (Move Byte Data from Source to Accumulator) F2MC-16FX Family ● Example: MOV A,0092H In this example, the word data (A046H) of AL is transferred to AH, and then the byte data (71H) at address 0092H is transferred to AL. AH A AL A0 46 ×× ×× CCR ××××× A AH A0 46 AL 00 71 × CCR 7 1 Memory 0092 Before execution 190 ×× T N Z V C T N Z V C Memory 0 0 7 1 0092 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.64 MOV (Move Byte Data from Accumulator to Destination) 2 F MC-16FX Family 8.64 MOV (Move Byte Data from Accumulator to Destination) Transfer the least significant byte data of the accumulator (A) to the address specified by the first operand. ● Assembler format: MOV dir,A MOV Ri,A MOV @RLi+disp8,A MOV io,A MOV addr16,A MOV brg2,A MOV ear,A MOV eam,A ● Operation: (First operand) ← (A) [Byte transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: CM44-00203-3E First operand dir @RLi+disp8 addr16 io Ri ear eam brg2 Second operand A A A A A A A A Byte count 2 3 3 2 1 2 2+ 2 Cycle count 1 1 1 1 1 1 1 1 FUJITSU MICROELECTRONICS LIMITED 191 CHAPTER 8 DETAILED INSTRUCTIONS 8.64 MOV (Move Byte Data from Accumulator to Destination) F2MC-16FX Family ● Example: MOV R1,A In this example, the low-order byte data (32H) of AL is transferred to R1. AH AL A ×× ×× 49 32 CCR ××××× R1 AH ×× T N Z V C A CCR ×× ×× × 0 0 ×× 49 32 R1 32 T N Z V C Before execution 192 AL FUJITSU MICROELECTRONICS LIMITED After execution CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.65 MOV (Move Byte Immediate Data to Destination) 2 F MC-16FX Family 8.65 MOV (Move Byte Immediate Data to Destination) Transfer the 8-bit immediate data specified by the second operand to the address specified by the first operand. When the first operand is @PC + disp16, the data is transferred to the "address of the location containing the machine instruction for the MOV instruction + 4 + rel", not the "address of the location containing the machine instruction for the instruction following the MOV instruction + rel". ● Assembler format: MOV RP,#imm8 MOV ILM,#imm8 MOV io,#imm8 MOV dir,#imm8 MOV ear,#imm8 MOV eam,#imm8 ● Operation: (First operand) ← imm8 ● CCR: If the data is transferred to a generalpurpose registers (R0 to R7) or bank register If the data is transferred to a register other than the general-purpose registers (R0 to R7) and the bank register I S T N Z V C I S T N Z V C – – – * * – – – – – – – – – I, S, and T: Unchanged N: Unchanged if the data is transferred to a register other than the general-purpose registers. If the data is transferred to the general-purpose register, N is set when the MSB of the transferred data is "1", cleared otherwise. Z: Unchanged if the data is transferred to a register other than the general-purpose registers. If the data is transferred to the general-purpose register, Z is set when the transferred data is zero, cleared otherwise. V and C: Unchanged CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 193 CHAPTER 8 DETAILED INSTRUCTIONS 8.65 MOV (Move Byte Immediate Data to Destination) F2MC-16FX Family ● Byte count and cycle count: First operand RP ILM dir io ear eam Second operand #imm8 Byte count 2 2 3 3 3 3+ Cycle count 19 when the content of RP changes; 4 in all other cases 1 1 1 1 1 #imm8 #imm8 #imm8 #imm8 #imm8 ● Example: MOV 009FH,#22H In this example, the 8-bit immediate data (22H) is transferred to address 009FH in bytes. A AH AL ×× ×× ×× ×× CCR ××××× A AH AL ×× ×× ×× ×× CCR T N Z V C T N Z V C Memory Memory 7 1 009F Before execution 194 ××××× 2 2 009F After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.66 MOV (Move Byte Data from Source to Destination) 2 F MC-16FX Family 8.66 MOV (Move Byte Data from Source to Destination) Transfer the byte data specified by the second operand to the first operand. MOV Ri, #imm8, described below, is an instruction contained in the basic page map (see C.1 Table C.2-1 ), with code different from that contained in MOV ear, #imm8. ● Assembler format: MOV Ri,#imm8 MOV Ri,ear MOV Ri,eam MOV ear,Ri MOV eam,Ri ● Operation: (First operand) ← (Second operand) [Byte transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: CM44-00203-3E First operand Ri Ri Ri ear eam Second operand #imm8 ear eam Ri Ri Byte count 2 2 2+ 2 2+ Cycle count 1 1 1 1 1 FUJITSU MICROELECTRONICS LIMITED 195 CHAPTER 8 DETAILED INSTRUCTIONS 8.66 MOV (Move Byte Data from Source to Destination) F2MC-16FX Family ● Example: MOV R3,@RW0 In this example, the byte data (71H) at the address (E001H) specified by the second operand (@RW0) is transferred to R3. RW0 R3 ×× E0 01 CCR Memory 7 1 ××××× T N Z V C E001 Before execution 196 RW0 R3 71 E0 01 CCR Memory 7 1 ×× 0 0 × T N Z V C E001 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.67 MOV (Move Byte Data from AH to Memory) 2 F MC-16FX Family 8.67 MOV (Move Byte Data from AH to Memory) Transfer the low-order byte data of AH to the memory location specified by the contents of AL. ● Assembler format: MOV @AL,AH ● Operation: ((AL)) ← (AH) [Byte transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: Byte count: 2 Cycle count: 1 ● Example: MOV @AL,AH In this example, the low-order byte data (22H) of AH is transferred to the address (E084H) specified by the word data of AL in bytes. A AH 01 22 AL E0 84 CCR ××××× A AH 01 22 CCR 0 0 ×× Memory Memory E084 Before execution CM44-00203-3E × T N Z V C T N Z V C 7 1 AL E0 84 2 2 E084 After execution FUJITSU MICROELECTRONICS LIMITED 197 CHAPTER 8 DETAILED INSTRUCTIONS 8.68 MOVB (Move Bit Data from Bit Address to Accumulator) 8.68 F2MC-16FX Family MOVB (Move Bit Data from Bit Address to Accumulator) The value in AL is transferred to AH. And then transfer zeros to bits 8 to 15 of the accumulator (A). 00H is transferred to bits 0 to 7 of A if the bit of the address specified by the second operand is equal to 00H and FFH is transferred if the bit is equal to "1". ● Assembler format: MOVB A,addr16:bp MOVB A,dir:bp MOVB A,io:bp ● Operation: If (Second operand)=0 : (A) ← 00H [Byte transfer] If (Second operand)=1 : (A) ← FFH [Byte transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the transferred bit is "1", cleared when "0". Z: Set when the transferred bit is "0", cleared when "1". V and C: Unchanged ● Byte count and cycle count: 198 First operand A A A Second operand addr16:bp dir:bp io:bp Byte count 4 3 3 Cycle count 1 1 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.68 MOVB (Move Bit Data from Bit Address to Accumulator) 2 F MC-16FX Family ● Example: MOVB A,32H:3 In this example, 00FFH is set to AL because bit 3 of the byte data (7FH) at address 32H is equal to "1". AH A AL ×× ×× ×× ×× CCR ××××× AH A ×× ×× CCR 1 0 ×× Memory Memory × × CM44-00203-3E × T N Z V C T N Z V C 7 F AL 00 FF × × 0032 7 F 0032 × × × × Before execution After execution FUJITSU MICROELECTRONICS LIMITED 199 CHAPTER 8 DETAILED INSTRUCTIONS 8.69 MOVB (Move Bit Data from Accumulator to Bit Address) 8.69 F2MC-16FX Family MOVB (Move Bit Data from Accumulator to Bit Address) Transfer bit data 0 to the bit address specified by the first operand if the least significant byte data of the accumulator (A) is 00H. Bit data 1 is transferred to the bit address specified by the first operand if the least significant byte data of A is not 00H. ● Assembler format: MOVB addr16:bp,A MOVB dir:bp,A MOVB io:bp,A ● Operation: If the byte data of (A) is 00H : (First operand) b=0 [Bit transfer] If the byte data of (A) is not 00H : (First operand) b=1 [Bit transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the byte data for A is "1", cleared otherwise. Z: Set when the byte data of A is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: 200 First operand addr16:bp dir:bp io:bp Second operand A A A Byte count 4 3 3 Cycle count 3 3 3 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.69 MOVB (Move Bit Data from Accumulator to Bit Address) 2 F MC-16FX Family ● Example: MOVB 765FH: 7,A In this example, bit 7 at address 765FH is set to "1" because the low-order byte data of AL is not equal to 00H. AH A AL 01 ×× ×× ×× CCR ××××× AH A ×× ×× CCR CM44-00203-3E 0 0 ×× Memory × × 7 F × T N Z V C T N Z V C Memory AL 01 ×× × × 765F F F × × × × Before execution After execution FUJITSU MICROELECTRONICS LIMITED 765F 201 CHAPTER 8 DETAILED INSTRUCTIONS 8.70 MOVEA (Move Effective Address to Destination) 8.70 F2MC-16FX Family MOVEA (Move Effective Address to Destination) Transfer the value specified by the second operand (effective address) to the first operand. If a general-purpose register is specified by the second operand, the address of the generalpurpose register is transferred. If the destination (first operand) is the accumulator (A), the value in AL before the address transfer is transferred to AH. ● Assembler format: MOVEA A,ear MOVEA A,eam MOVEA RWi,ear MOVEA RWi,eam ● Operation: First operand ← ea [Word transfer] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: 202 First operand A A RWi RWi Second operand ear eam ear eam Byte count 2 2+ 2 2+ Cycle count 1 1 1 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family CHAPTER 8 DETAILED INSTRUCTIONS 8.70 MOVEA (Move Effective Address to Destination) ● Example: MOVEA RW2,@RW0+2 In this example, the address value (006BH) specified by the second operand (@RW0+2) is transferred to RW2. RW0 00 69 RW0 00 69 RW2 ×× ×× RW2 00 6B CCR ××××× T N Z V C Before execution CM44-00203-3E CCR ××××× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 203 CHAPTER 8 DETAILED INSTRUCTIONS 8.71 MOVL (Move Long Word Data from Source to Accumulator) 8.71 F2MC-16FX Family MOVL (Move Long Word Data from Source to Accumulator) Transfer the long word data specified by the second operand to the accumulator (A). ● Assembler format: MOVL A,#imm32 MOVL A,ear MOVL A,eam ● Operation: (A) ← (Second operand) [Long word transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: 204 First operand A A A Second operand #imm32 ear eam Byte count 5 2 2+ Cycle count 2 2 2 Odd address correction 0 0 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.71 MOVL (Move Long Word Data from Source to Accumulator) 2 F MC-16FX Family ● Example: MOVL A,#0053FF64H In this example, the 32-bit immediate data (0053FF64H) is transferred to the accumulator (A) as long word data. A AH AL ×× ×× ×× ×× CCR ××××× A AH AL 00 53 FF 64 CCR CM44-00203-3E 0 0 ×× T N Z V C T N Z V C Before execution × After execution FUJITSU MICROELECTRONICS LIMITED 205 CHAPTER 8 DETAILED INSTRUCTIONS 8.72 MOVL (Move Long Word Data from Accumulator to Destination) 8.72 F2MC-16FX Family MOVL (Move Long Word Data from Accumulator to Destination) Transfer the long word data of the accumulator (A) to the first operand. ● Assembler format: MOVL ear,A MOVL eam,A ● Operation: (First operand) ← (A) [Long word transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: 206 First operand ear eam Second operand A A Byte count 2 2+ Cycle count 2 2 Odd address correction 0 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.72 MOVL (Move Long Word Data from Accumulator to Destination) 2 F MC-16FX Family ● Example: MOVL RL1,A In this example, the long word data (0197A024H) of the accumulator (A) is transferred to RL1. AH AL A 01 97 A0 24 RL1 ×× ×× ×× ×× CCR ××××× AH AL A 01 97 A0 24 RL1 01 97 A0 24 CCR CM44-00203-3E 0 0 ×× T N Z V C T N Z V C Before execution × After execution FUJITSU MICROELECTRONICS LIMITED 207 CHAPTER 8 DETAILED INSTRUCTIONS 8.73 MOVN (Move Immediate Nibble Data to Accumulator) 8.73 F2MC-16FX Family MOVN (Move Immediate Nibble Data to Accumulator) The value in AL is transferred to AH. And then 000H is transferred to the bit 4 to bit 15 of AL; nibble data specified by the second operand is transferred to bit0 to bit3 of AL. ● Assembler format: MOVN A,#imm4 ● Operation: (A) ← imm4 [Byte transfer] ● CCR: I S T N Z V C – – – R * – – I, S, and T: Unchanged N: Cleared Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: MOVN A,#0FH In this example, the word data (6207H) of AL is transferred to AH, and then the byte data (0FH) with the 4-bit immediate data (FH) zero-extended is transferred to AL. A AH AL ×× ×× 62 07 CCR ××××× A AH AL 62 07 00 0F CCR 208 0 0 ×× T N Z V C T N Z V C Before execution × After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.74 MOVS, MOVSI (Move String Byte with Increment) 2 F MC-16FX Family 8.74 MOVS, MOVSI (Move String Byte with Increment) Transfer byte data from the address specified by AL in the space specified by <source bank> to the address specified by AH in the space specified by <destination bank>. The transfer is repeated the number of times specified by RW0, with the addresses being incremented each time. The transfer is not performed if RW0 is equal to zero. Four types of registers PCB, DTB, ADB, and SPB can be used as <destination bank> and <source bank>. By default, DTB is assumed. If an interrupt occurs during the transfer, the transfer is suspended to handle the interrupt. The transfer is resumed after the interrupt has been handled. ● Assembler format: MOVS [<destination bank>] [,<source bank>] MOVSI [<destination bank>] [,<source bank>] ● Operation: The following is repeated until RW0 becomes equal to zero: ((AH)) ← ((AL)) [Byte transfer] (AH) ← (AH)+1, (AL) ← (AL)+1 (RW0) ← (RW0)–1 ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 2 Cycle count: 1 cycle when RW0 is zero; RW0 cycles when RW0 is grayer than 1 and the transfer area of source address and destination address do not overlap; 2 × RW0 cycles in all other cases Odd address correction: 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 209 CHAPTER 8 DETAILED INSTRUCTIONS 8.74 MOVS, MOVSI (Move String Byte with Increment) F2MC-16FX Family ● Example: MOVSI ADB,PCB In this example, byte data is transferred from the address (FF0000H) specified by PCB and AL to the address (018000H) specified by ADB and AH. RW0 AH 80 00 AL 00 00 00 03 CCR AH 80 03 ××××× RW0 00 00 AL 00 03 CCR T N Z V C PCB FF ADB T N Z V C PCB 01 FF ADB 01 Memory Memory C D E F FF0003 FF0002 FF0001 FF0000 AL AL F F F F F F F F C D E F FF0003 FF0002 FF0001 FF0000 × × × × 018003 018002 018001 018000 AH × × AH × × × × 018003 018002 018001 018000 Before execution 210 ××××× FUJITSU MICROELECTRONICS LIMITED F D F E F F After execution CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.75 MOVSD (Move String Byte with Decrement) 2 F MC-16FX Family 8.75 MOVSD (Move String Byte with Decrement) Transfer byte data from the address specified by AL in the space specified by <source bank> to the address specified by AH in the space specified by <destination bank>. The transfer is repeated the number of times specified by RW0, with the addresses being decremented each time. The transfer is not performed if RW0 is equal to zero. Four types of registers PCB, DTB, ADB, and SPB can be used as <destination bank> and <source bank>. By default, DTB is assumed. If an interrupt occurs during the transfer, the transfer is suspended to handle the interrupt. The transfer is resumed after the interrupt has been handled. ● Assembler format: MOVSD [<destination bank>] [,<source bank>] ● Operation: The following is repeated until RW0 becomes equal to zero: ((AH)) ← ((AL)) [Byte transfer] (AH) ← (AH)-1, (AL) ← (AL)-1 (RW0) ← (RW0)–1 ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 2 Cycle count: 1 cycle when RW0 is zero; 2 × RW0 in all other cases CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 211 CHAPTER 8 DETAILED INSTRUCTIONS 8.76 MOVSW, MOVSWI (Move String Word with Increment) 8.76 F2MC-16FX Family MOVSW, MOVSWI (Move String Word with Increment) Transfer word data from the address specified by AL in the space specified by <source bank> to the address specified by AH in the space specified by <destination bank>. The transfer is repeated the number of times specified by RW0, with the addresses being incremented each time. The transfer is not performed if RW0 is equal to zero. Four types of registers PCB, DTB, ADB, and SPB can be used as <destination bank> and <source bank>. By default, DTB is assumed. If an interrupt occurs during the transfer, the transfer is suspended to handle the interrupt. The transfer is resumed after the interrupt has been handled. ● Assembler format: MOVSW [<destination bank>] [,<source bank>] MOVSWI [<destination bank>] [,<source bank>] ● Operation: The following is repeated until RW0 becomes equal to zero: ((AH)) ← ((AL)) [Word transfer] (AH) ← (AH)+2, (AL) ← (AL)+2 (RW0) ← (RW0)–1 ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: 212 Byte count: 2 Cycle count: 1 cycle when RW0 is zero; 2 × RW0 in all other cases FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.76 MOVSW, MOVSWI (Move String Word with Increment) 2 F MC-16FX Family ● Example: MOVSW,ADB In this example, word data is transferred from the address (38A000H) specified by ADB and AL to the address (CD0000H) specified by DTB and AH. A AH 00 00 RW0 00 03 AL A0 00 CCR ××××× A AH 00 06 RW0 00 00 AL A0 06 CCR T N Z V C T N Z V C DTB CD ADB DTB 38 CD ADB AH × × × × × × 38 Memory Memory × × × × × × ××××× CD0005 CD0004 CD0003 CD0002 CD0001 CD0000 AH 2 4 3 3 4 4 6 2 6 1 D 6 CD0005 CD0004 CD0003 CD0002 CD0001 CD0000 2 4 3 3 4 4 6 2 6 1 D 6 38A005 38A004 38A003 38A002 38A001 38A000 AL AL 2 4 3 3 4 4 6 2 6 1 D 6 38A005 38A004 38A003 38A002 38A001 38A000 Before execution CM44-00203-3E After execution FUJITSU MICROELECTRONICS LIMITED 213 CHAPTER 8 DETAILED INSTRUCTIONS 8.77 MOVSWD (Move String Word with Decrement) 8.77 F2MC-16FX Family MOVSWD (Move String Word with Decrement) Transfer word data from the address specified by AL in the space specified by <source bank> to the address specified by AH in the space specified by <destination bank>. The transfer is repeated the number of times specified by RW0, with the addresses being decremented each time. The transfer is not performed if RW0 is equal to zero. Four types of registers PCB, DTB, ADB, and SPB can be used as <destination bank> and <source bank>. By default, DTB is assumed. If an interrupt occurs during the transfer, the transfer is suspended to handle the interrupt. The transfer is resumed after the interrupt has been handled. ● Assembler format: MOVSWD [<destination bank>] [,<source bank>] ● Operation: The following is repeated until RW0 becomes equal to zero: ((AH)) ← ((AL)) [Word transfer] (AH) ← (AH)–2, (AL) ← (AL)–2 (RW0) ← (RW0)–1 ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: 214 Byte count: 2 Cycle count: 1 cycle when RW0 is zero; 2 × RW0 in all other cases Odd address correction: RW0 cycle(s) when the transfer destination is an odd address; RW0 cycle(s) when the transfer source is an odd address; and 2 × RW0 cycles when both the transfer destination and the transfer source are odd addresses FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.78 MOVW (Move Word Data from Source to Accumulator) 2 F MC-16FX Family 8.78 MOVW (Move Word Data from Source to Accumulator) The value in AL is transferred to AH. And then the word data in the second operand is transferred to AL. If the second operand is @A, transfer to AH is not performed. ● Assembler format: MOVW A,#imm16 MOVW A,@RWi+disp8 MOVW A,@A MOVW A,addr16 MOVW A,@RLi+disp8 MOVW A,RWi MOVW A,SP MOVW A,dir MOVW A,io MOVW A,ear MOVW A,eam ● Operation: (A) ← (Second operand) [Word transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: First operand Second operand A A A A #imm16 @A @RLi+disp8 SP A A A A A A A io @RWi+disp8 addr16 RWi dir ear eam Byte count 3 2 3 1 2 2 3 1 2 2 2+ Cycle count 1 1 1 1 1 1 1 1 1 1 1 Odd address correction 0 1 1 0 1 1 1 0 1 0 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 215 CHAPTER 8 DETAILED INSTRUCTIONS 8.78 MOVW (Move Word Data from Source to Accumulator) F2MC-16FX Family ● Example: MOVW A,0F9A0H In this example, the word data (4901H) of AL is transferred to AH, and then the word data (AE86H) at address F9A0H is transferred to AL. AH A AL 49 01 ×× ×× CCR ××××× A AH 49 01 CCR T N Z V C Memory A E 8 6 × 1 0 ×× T N Z V C Memory F9A1 F9A0 Before execution 216 AL AE 86 A E 8 6 F9A1 F9A0 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.79 MOVW (Move Word Data from Accumulator to Destination) 2 F MC-16FX Family 8.79 MOVW (Move Word Data from Accumulator to Destination) Transfer the low-order word data of the accumulator (A) to the first operand. ● Assembler format: MOVW @RLi+disp8,A MOVW addr16,A MOVW SP,A MOVW RWi,A MOVW io,A MOVW dir,A MOVW @RWi+disp8,A MOVW ear,A MOVW eam,A ● Operation: (First operand) ← (A) [Word transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: First operand CM44-00203-3E dir @RLi+disp8 addr16 SP io @RWi+disp8 RWi ear eam Second operand A A A A A A A A A Byte count 2 3 3 1 2 2 1 2 2+ Cycle count 1 1 1 1 1 1 1 1 1 Odd address correction 1 1 1 0 1 1 0 0 1 FUJITSU MICROELECTRONICS LIMITED 217 CHAPTER 8 DETAILED INSTRUCTIONS 8.79 MOVW (Move Word Data from Accumulator to Destination) F2MC-16FX Family ● Example: MOVW RW0,A In this example, the word data (0000H) of AL is transferred to RW0. AH A AL 00 00 ×× ×× RW0 CCR ×× ×× ××××× AH A ×× ×× RW0 CCR T N Z V C Before execution 218 AL 00 00 00 00 × 0 1 ×× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.80 MOVW (Move Immediate Word Data to Destination) 2 F MC-16FX Family 8.80 MOVW (Move Immediate Word Data to Destination) This instruction transfers the 16-bit immediate data to the first operand. When the first operand is @PC + disp16, the transfer destination address is the address where the machine instruction of the MOVW instruction is stored + 4 + disp16. Note that this is not the address where the machine instruction of the instruction subsequent to the MOVW instruction is stored+disp16. ● Assembler format: MOVW ear,#imm16 MOVW eam,#imm16 ● Operation: (First operand) ← imm16 ● CCR: If the data is transferred to a generalpurpose register (RW0 to RW7) If the data is transferred to a register other than the general-purpose registers (RW0 to RW7) I S T N Z V C I S T N Z V C – – – * * – – – – – – – – – I, S, and T: Unchanged N: Unchanged if the data is transferred to a register other than the general-purpose registers. If the data is transferred to the general-purpose register, N is set when the MSB of the transferred data is "1", cleared otherwise. Z: Unchanged if the data is transferred to a register other than the general-purpose registers. If the data is transferred to the general-purpose register, Z is set when the transferred data is zero, cleared otherwise. V and C: Unchanged and none of the flags is changed. ● Byte count and cycle count: First operand Second operand CM44-00203-3E ear eam #imm16 #imm16 Byte count 4 4+ Cycle count 2 2 Odd address correction 0 1 FUJITSU MICROELECTRONICS LIMITED 219 CHAPTER 8 DETAILED INSTRUCTIONS 8.80 MOVW (Move Immediate Word Data to Destination) F2MC-16FX Family ● Example: MOVW RW0,#2343H In this example, the 16-bit immediate data (2343H) is transferred to RW0. CCR ××××× CCR T N Z V C RW0 ×× ×× Before execution 220 RW0 × 0 0 ×× T N Z V C 23 43 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.81 MOVW (Move Word Data from Source to Destination) 2 F MC-16FX Family 8.81 MOVW (Move Word Data from Source to Destination) Transfer the word data specified by the second operand to the first operand. ● Assembler format: MOVW RWi,#imm16 MOVW ear,RWi MOVW eam,RWi MOVW RWi,ear MOVW RWi,eam ● Operation: (First operand) ← (Second operand) [Word transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: CM44-00203-3E First operand RWi RWi RWi ear eam Second operand #imm16 ear eam RWi RWi Byte count 3 2 2+ 2 2+ Cycle count 1 1 1 1 1 Odd address correction 0 0 1 0 1 FUJITSU MICROELECTRONICS LIMITED 221 CHAPTER 8 DETAILED INSTRUCTIONS 8.81 MOVW (Move Word Data from Source to Destination) F2MC-16FX Family ● Example: MOVW RW1,RW0 In this example, the word data (004AH) of RW0 is transferred to RW1. A AH AL ×× ×× ×× ×× A AH AL ×× ×× ×× ×× RW0 00 4A RW0 00 4A RW1 ×× ×× RW1 00 4A CCR ××××× CCR T N Z V C Before execution 222 × 0 0 ×× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.82 MOVW (Move Immediate Word Data to io) 2 F MC-16FX Family 8.82 MOVW (Move Immediate Word Data to io) Transfer 16-bit immediate data to the I/O area specified by the first operand. ● Assembler format: MOVW io,#imm16 ● Operation: (First operand) ← imm16 [Word transfer] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 4 Cycle count: 1 Odd address correction: 1 ● Example: MOVW 24H,#2343H In this example, the 16-bit immediate data (2343H) is transferred to address 24H in the I/O area as word data. ××××× CCR CCR T N Z V C × × × × × × 000025 000024 Before execution CM44-00203-3E T N Z V C Memory Memory × × × × ××××× 2 3 4 3 000025 000024 × × After execution FUJITSU MICROELECTRONICS LIMITED 223 CHAPTER 8 DETAILED INSTRUCTIONS 8.83 MOVW (Move Word Data from AH to Memory) 8.83 F2MC-16FX Family MOVW (Move Word Data from AH to Memory) Transfer the word data of AH to the memory location specified by the contents of AL. ● Assembler format: MOVW @AL,AH ● Operation: ((AL)) ← (AH) [Word transfer] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: Byte count: 2 Cycle count: 1 Odd address correction: 1 ● Example: MOVW @AL,AH In this example, the word data (00CBH) of AH is transferred to the address (FEFFH) specified by AL. A AH AL 00 CB FE FF CCR ××××× A AH AL 00 CB FE FF CCR T N Z V C FEFF Before execution 224 1 0 ×× T N Z V C Memory Memory 7 1 × C B FEFF After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.84 MOVX (Move Byte Data with Sign Extension from Source to Accumulator) 2 F MC-16FX Family 8.84 MOVX (Move Byte Data with Sign Extension from Source to Accumulator) The value in AL is transferred to AH. And then the word data that is sign extended from a byte data in the second operand is transferred to AL. If the second operand is @A, transfer to AH is not performed. ● Assembler format: MOVX A,#imm8 MOVX A,@RWi+disp8 MOVX A,@A MOVX A,addr16 MOVX A,@RLi+disp8 MOVX A,Ri MOVX A,dir MOVX A,io MOVX A,ear MOVX A,eam ● Operation: (A) ← (Second operand) [Byte transfer with sign extension] ● CCR: I S T N Z V C – – – * * – – I, S, and T: Unchanged N: Set when the MSB of the transferred data is "1", cleared otherwise. Z: Set when the transferred data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: First operand A A A A A A A A Second operand #imm8 @A @RLi+disp8 dir io @RWi+disp8 addr16 Ri Byte count 2 2 3 2 2 2 3 1 2 2+ Cycle count 1 1 1 1 1 1 1 1 1 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED A A ear eam 225 CHAPTER 8 DETAILED INSTRUCTIONS 8.84 MOVX (Move Byte Data with Sign Extension from Source to Accumulator) ● Example: F2MC-16FX Family MOVX A,0E001H In this example, the word data (A046H) of AL is transferred to AH, and then the word data (FF86H), for which the byte data (86H) at address E001H is sign-extended, is transferred to AL. AH A AL A0 46 ×× ×× CCR ××××× A AH A0 46 CCR T N Z V C Memory 8 6 × 1 0 ×× T N Z V C Memory E001 Before execution 226 AL FF 86 8 6 E001 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.85 MUL (Multiply Byte Data of Accumulator) 2 F MC-16FX Family 8.85 MUL (Multiply Byte Data of Accumulator) This instruction multiplies the low-order byte data of AH by that of AL as signed binary numbers, then returns the result to AL of the accumulator (A). ● Assembler format: MUL A ● Operation: word (A) ← byte (AH)×byte (AL) [Byte multiplication] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 2 Cycle count: 4 ● Example: MUL A In this example, the low-order byte data (FAH) of AH is multiplied by the low-order byte data (11H) of AL with a sign. The word data (FF9AH) is set to AL as the multiplication result. A AH AL 00 FA 00 11 CCR ××××× T N Z V C Before execution CM44-00203-3E A AH AL 00 FA FF 9A CCR ××××× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 227 CHAPTER 8 DETAILED INSTRUCTIONS 8.86 MUL (Multiply Byte Data of Accumulator and Effective Address) 8.86 F2MC-16FX Family MUL (Multiply Byte Data of Accumulator and Effective Address) Multiply the byte data of the accumulator (A) by the byte data specified by the second operand as signed binary numbers and restore the result in bits 0 to 15 of A. ● Assembler format: MUL A,ear MUL A,eam ● Operation: word (A) ← byte (A) × byte (ea) [Byte multiplication] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: First operand A A Second operand ear eam Byte count 2 2+ Cycle count 4 5 ● Example: MUL A,R7 In this example, the low-order byte data (85H) of AL is multiplied by the byte data (A5H) in R7 with a sign. The word data (2B89H) is set to AL as the multiplication result. A AH AL ×× ×× 00 85 R7 CCR A AH AL ×× ×× 2B B9 A5 ××××× R7 CCR T N Z V C Before execution 228 A5 ××××× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.87 MULW (Multiply Word Data of Accumulator) 2 F MC-16FX Family 8.87 MULW (Multiply Word Data of Accumulator) Multiply the word data of AH by the word data specified by AL as signed binary numbers and restore the result in the accumulator (A) as long word data. ● Assembler format: MULW A ● Operation: long (A) ← word (AH)×word (AL) [Word multiplication] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 2 Cycle count: 6 ● Example: MULW A In this example, the word data (AD01H) of AH is multiplied by the word data (05EDH) of AL with a sign. The long word data is set to the accumulator (A) as the multiplication result. A AH AL AD 01 05 ED CCR ××××× A AH AL FE 14 2E ED CCR T N Z V C Before execution CM44-00203-3E ××××× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 229 CHAPTER 8 DETAILED INSTRUCTIONS 8.88 MULW (Multiply Word Data of Accumulator and Effective Address) 8.88 F2MC-16FX Family MULW (Multiply Word Data of Accumulator and Effective Address) Multiply the word data of the accumulator (A) by the word data specified by the second operand as signed binary numbers and restore the result in A as long word data. ● Assembler format: MULW A,ear MULW A,eam ● Operation: long (A) ← word (A) × word (Second operand) [Word multiplication] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: First operand A A Second operand ear eam Byte count 2 2+ Cycle count 6 7 Odd address correction 0 1 ● Example: MULW A,RW5 In this example, the word data (8342H) of AL is multiplied by the word data (4314H) in RW5 with a sign. The long word data is set to the accumulator (A) as the multiplication result. A AH AL ×× ×× 83 42 RW5 CCR 43 14 ××××× A AH AL DF 50 87 28 RW5 CCR T N Z V C Before execution 230 43 14 ××××× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.89 MULU (Multiply Unsigned Byte Data of Accumulator) 2 F MC-16FX Family 8.89 MULU (Multiply Unsigned Byte Data of Accumulator) Multiply the low-order byte data of AH by the low-order byte data of AL as unsigned binary numbers and restore the result in the AL of the accumulator (A). ● Assembler format: MULU A ● Operation: word (A) ← byte (AH)×byte (AL) [Byte multiplication] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 1 Cycle count: 2 ● Example: MULU A In this example, the low-order byte data (FAH) of AH is multiplied by the low-order byte data (11H) of AL without a sign. The word data (109AH) is set to AL as the multiplication result. A AH 00 FA AL 00 11 CCR ××××× A AH 00 FA CCR T N Z V C Before execution CM44-00203-3E AL 10 9A ××××× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 231 CHAPTER 8 DETAILED INSTRUCTIONS 8.90 MULU (Multiply Unsigned Byte Data of Accumulator and Effective Address) 8.90 F2MC-16FX Family MULU (Multiply Unsigned Byte Data of Accumulator and Effective Address) Multiply the byte data of the accumulator (A) by the byte data specified by the second operand as unsigned binary numbers and restore the result in bits 0 to 15 of A. ● Assembler format: MULU A, ear MULU A, eam ● Operation: word (A) ← byte (A) × byte (Second operand) [Byte multiplication] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: First operand A A Second operand ear eam Byte count 2 2+ Cycle count 2 3 ● Example: MULU A, R7 In this example, the low-order byte data (85H) of AL is multiplied by the byte data (A5H) in R7 without a sign. The word data (55B9H) is set to AL as the multiplication result. AH A AL 00 85 ×× ×× R7 CCR AH A ×× ×× A5 ××××× R7 CCR T N Z V C Before execution 232 AL 55 B9 A5 ××××× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.91 MULUW (Multiply Unsigned Word Data of Accumulator) 2 F MC-16FX Family 8.91 MULUW (Multiply Unsigned Word Data of Accumulator) Multiply the word data of AH by the word data of AL as unsigned binary numbers and restore the result in the accumulator (A) as long word data. ● Assembler format: MULUW A ● Operation: long (A) ← word (AH) × word (AL) [Word multiplication] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 1 Cycle count: 4 ● Example: MULUW A In this example, the word data (AD01H) of AH is multiplied by the word data (05EDH) of AL without a sign. The long word data is set to the accumulator (A) as the multiplication result. AH A AL AD 01 05 ED CCR ××××× AH A AL 04 01 CCR T N Z V C Before execution CM44-00203-3E 2E ED ××××× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 233 CHAPTER 8 DETAILED INSTRUCTIONS 8.92 MULUW (Multiply Unsigned Word Data of Accumulator and Effective Address) 8.92 F2MC-16FX Family MULUW (Multiply Unsigned Word Data of Accumulator and Effective Address) Multiply the word data of the accumulator (A) by the word data specified by the second operand as unsigned binary numbers and restore the result in A as long word data. ● Assembler format: MULUW A, ear MULUW A, eam ● Operation: long (A) ← word (A) × word (Second operand) [Word multiplication] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: First operand A A Second operand ear eam Byte count 2 2+ Cycle count 4 5 Odd address correction 0 1 ● Example: MULUW A, RW5 In this example, the word data (8342H) of AL is multiplied by the word data (4314H) in RW5 without a sign. The long word data is set to the accumulator (A) as the multiplication result. AH A RW5 ×× ×× 43 14 AL 83 42 CCR ××××× A RW5 AH 22 64 43 14 T N Z V C Before execution 234 FUJITSU MICROELECTRONICS LIMITED AL 87 28 CCR ××××× T N Z V C After execution CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.93 NEG (Negate Byte Data of Destination) 2 F MC-16FX Family 8.93 NEG (Negate Byte Data of Destination) Take the 2's complement of the byte data specified by the operand and restore the result in the operand. If the operand is the accumulator (A), the value resulting from sign-extending the operation result is transferred to upper byte of AL. ● Assembler format: NEG A NEG ear NEG eam ● Operation: (Operand) ← 0–(Operand) [Byte operation] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: Operand A ear eam Byte count 1 2 2+ Cycle count 1 1 3 ● Example: NEG R0 In this example, the 2's complement of the byte data (59H) in R0 is obtained. R0 CCR 59 ××××× T N Z V C Before execution CM44-00203-3E R0 CCR × A7 1 0 0 1 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 235 CHAPTER 8 DETAILED INSTRUCTIONS 8.94 NEGW (Negate Word Data of Destination) 8.94 F2MC-16FX Family NEGW (Negate Word Data of Destination) Take the 2's complement of the word data specified by the operand and restore the result in the operand. ● Assembler format: NEGW A NEGW ear NEGW eam ● Operation: (Operand) ← 0–(Operand) [Word operation] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: Operand A ear eam Byte count 1 2 2+ Cycle count 1 1 3 Odd address correction 0 0 2 ● Example: NEGW A In this example, the 2's complement of the word data (AB98H) of AL is obtained. AH A AL AB 98 ×× ×× CCR ××××× AH A ×× ×× CCR T N Z V C Before execution 236 AL 54 68 × 0 0 0 1 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.95 NOP (No Operation) 2 F MC-16FX Family 8.95 NOP (No Operation) Perform no operation. ● Assembler format: NOP ● Operation: No operation is performed. ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: NOP The NOP instruction performs no operations. A AH AL ×× ×× ×× ×× PC AH ×× ×× A F0 00 CCR AL PC ××××× CCR T N Z V C PC 0 0 ××××× Memory F001 F000 Before execution CM44-00203-3E F0 01 T N Z V C Memory × × ×× ×× PC × × 0 0 F001 F000 After execution FUJITSU MICROELECTRONICS LIMITED 237 CHAPTER 8 DETAILED INSTRUCTIONS 8.96 NOT (Not Byte Data of Destination) 8.96 F2MC-16FX Family NOT (Not Byte Data of Destination) Take the logical NOT of the byte data specified by the operand and restore the result in the operand. ● Assembler format: NOT A NOT ear NOT eam ● Operation: (Operand) ← not (Operand) [Byte logical NOT] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: 238 Operand A ear eam Byte count 1 2 2+ Cycle count 1 1 3 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.96 NOT (Not Byte Data of Destination) 2 F MC-16FX Family ● Example: NOT 0071H In this example, the byte data (FFH) at address 0071H is inverted for each bit. A AH AL ×× ×× ×× ×× CCR ××××× A AH AL ×× ×× ×× ×× CCR T N Z V C 0071 Before execution CM44-00203-3E 0 1 0 × T N Z V C Memory Memory F F × 0 0 0071 After execution FUJITSU MICROELECTRONICS LIMITED 239 CHAPTER 8 DETAILED INSTRUCTIONS 8.97 NOTW (Not Word Data of Destination) 8.97 F2MC-16FX Family NOTW (Not Word Data of Destination) Take the logical NOT of the word data specified by the operand and restore the result in the operand. ● Assembler format: NOTW A NOTW ear NOTW eam ● Operation: (Operand) ← not (Operand) [Word logical NOT] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: Operand A ear eam Byte count 1 2 2+ Cycle count 1 1 3 Odd address correction 0 0 2 ● Example: NOTW RW3 In this example, the word data (258BH) of RW3 is inverted for each bit. RW3 CCR 25 8B ××××× T N Z V C Before execution 240 RW3 CCR DA 74 × 1 0 0 × T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.98 NRML (NORMALIZE Long Word) 2 F MC-16FX Family 8.98 NRML (NORMALIZE Long Word) Shift the long word data of the accumulator (A) to the left until the most significant bit of the accumulator (A) becomes "1", if the long word data is not zero. R0 is set to the number of shifts required and the zero flag (Z) is cleared. If the long word data of the accumulator (A) is zero, R0 is set to zero and the zero flag (Z) is set. ● Assembler format: NRML A,R0 ● Operation: If A≠0: The long word data is shifted to the left until the most significant bit of A becomes 1. (R0) ← Number of shifts required, Z ← 0 If A=0: (R0) ← 0, Z ← 1 ● CCR: I S T N Z V C – – – – * – – I, S, T, and N: Unchanged Z: Set when A is equal to zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: Byte count: 2 Cycle count: 1 ● Example: NRML A,R0 In this example, the long word data (00008361H) of the accumulator (A) is shifted to the left by 16 bits. The number of shifted bits (10H) is set to R0. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 241 CHAPTER 8 DETAILED INSTRUCTIONS 8.98 NRML (NORMALIZE Long Word) A AH AL 00 00 83 61 R0 CCR F2MC-16FX Family A AH AL 83 61 00 00 34 ××××× R0 CCR T N Z V C Before execution 242 ×× 10 0 ×× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.99 OR (Or Byte Data of Destination and Source to Destination) 2 F MC-16FX Family 8.99 OR (Or Byte Data of Destination and Source to Destination) Take the logical OR of the byte data specified by the first operand and the byte data specified by the second operand and restore the result in the first operand. ● Assembler format: OR A,#imm8 OR A,ear OR A,eam OR ear,A OR eam,A ● Operation: (First operand) ← (First operand) or (Second operand) [Byte logical OR] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: CM44-00203-3E First operand A A A ear eam Second operand #imm8 ear eam A A Byte count 2 2 2+ 2 2+ Cycle count 1 1 2 1 3 FUJITSU MICROELECTRONICS LIMITED 243 CHAPTER 8 DETAILED INSTRUCTIONS 8.99 OR (Or Byte Data of Destination and Source to Destination) F2MC-16FX Family ● Example: OR 0052H,A In this example, the logical OR is taken between the byte data at address 0052H and the loworder byte data (37H) of AL. AH A AL 00 37 ×× ×× CCR ××××× AH A ×× ×× CCR T N Z V C 0052 Before execution 244 × 1 0 0 × T N Z V C Memory Memory F A AL 00 37 F F 0052 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.100 OR (Or Byte Data of Immediate Data and Condition Code Register to Condition Code Register) 2 F MC-16FX Family 8.100 OR (Or Byte Data of Immediate Data and Condition Code Register to Condition Code Register) Take the logical OR of the byte data in the condition code register (CCR) and specified 8-bit immediate data and restore the result in the condition code register (CCR). Bit 7 of the immediate data is ignored because the condition code register (CCR) is 7 bits long. ● Assembler format: OR CCR,#imm8 ● Operation: (CCR) ← (CCR) or imm8 [Byte logical OR] ● CCR: I S T N Z V C * * * * * * * I: Stores bit 6 of the operation result. S: Stores bit 5 of the operation result. T: Stores bit 4 of the operation result. N: Stores bit 3 of the operation result. Z: Stores bit 2 of the operation result. V: Stores bit 1 of the operation result. C: Stores bit 0 of the operation result. ● Byte count and cycle count: Byte count: 2 Cycle count: 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 245 CHAPTER 8 DETAILED INSTRUCTIONS 8.100 OR (Or Byte Data of Immediate Data and Condition Code Register to Condition Code Register) ● Example: F2MC-16FX Family OR CCR,#57H In this example, the logical OR is taken between CCR and bits 6 to 0 of the 8-bit immediate data (57H). A CCR AH AL ×× ×× ×× ×× I 0 S 1 T 1 N 0 Z 1 V 0 C 1 A CCR AH AL ×× ×× ×× ×× I 1 S 1 T 1 ILM2 ILM1 ILM0 × × × ILM MSB RP Before execution 246 Z 1 V 1 C 1 ILM2 ILM1 ILM0 × × × ILM LSB × × × × × N 0 MSB RP LSB × × × × × After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.101 ORL (Or Long Word Data of Destination and Source to Destination) 2 F MC-16FX Family 8.101 ORL (Or Long Word Data of Destination and Source to Destination) Take the logical OR of the long word data for the accumulator (A) and that specified by the second operand and restore the result in A. ● Assembler format: ORL A,ear ORL A,eam ● Operation: (A) ← (A) or (Second operand) [Long word logical OR] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: CM44-00203-3E First operand A A Second operand ear eam Byte count 2 2+ Cycle count 2 3 Odd address correction 0 1 FUJITSU MICROELECTRONICS LIMITED 247 CHAPTER 8 DETAILED INSTRUCTIONS 8.101 ORL (Or Long Word Data of Destination and Source to Destination) ● Example: F2MC-16FX Family ORL A,0FFF0H In this example, the logical OR is taken between the long word data (725DF05CH) of the accumulator (A) and the long word data (FF55AA00H) at address FFF0H. A AH AL 72 5D F0 5C CCR A AH AL FF 5D FA 5C ××××× CCR T N Z V C Memory F 5 A 0 F 5 A 0 1 0 0 × T N Z V C Memory FFF3 FFF2 FFF1 FFF0 Before execution 248 × F 5 A 0 F 5 A 0 FFF3 FFF2 FFF1 FFF0 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.102 ORW (Or Word Data of AH and AL to AL) 2 F MC-16FX Family 8.102 ORW (Or Word Data of AH and AL to AL) Take the logical OR of the word data for AH and that for AL and restore the result in AL. ● Assembler format: ORW A ● Operation: (AL) ← (AH) or (AL) [Word logical OR] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: ORW A In this example, the logical OR is taken between the word data (AB98H) of AL and the word data (0426H) of AH. A AH 04 26 AL AB 98 CCR ××××× A AH 04 26 CCR T N Z V C Before execution CM44-00203-3E AL AF BE × 1 0 0 × T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 249 CHAPTER 8 DETAILED INSTRUCTIONS 8.103 ORW (Or Word Data of Destination and Source to Destination) 8.103 F2MC-16FX Family ORW (Or Word Data of Destination and Source to Destination) Take the logical OR of the word data specified by the first operand and the word data specified by the second operand and restore the result in the first operand. ● Assembler format: ORW A,#imm16 ORW A,ear ORW A,eam ORW ear,A ORW eam,A ● Operation: (First operand) ← (First operand) or (Second operand) [Word logical OR] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: 250 First operand A A A ear eam Second operand #imm16 ear eam A A Byte count 3 2 2+ 2 2+ Cycle count 1 1 2 1 3 Odd address correction 0 0 1 0 2 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.103 ORW (Or Word Data of Destination and Source to Destination) 2 F MC-16FX Family ● Example: ORW 0E001H,A In this example, the logical OR is taken between the word data (4283H) at address E001H and the word data (5963H) of AL. AH A AL 59 63 ×× ×× CCR ××××× AH A ×× ×× CCR T N Z V C E002 E001 Before execution CM44-00203-3E × 1 0 0 × T N Z V C Memory Memory 8 3 4 2 AL 59 63 D B 6 3 E002 E001 After execution FUJITSU MICROELECTRONICS LIMITED 251 CHAPTER 8 DETAILED INSTRUCTIONS 8.104 POPW (Pop Word Data of Accumulator from Stack Memory) 8.104 F2MC-16FX Family POPW (Pop Word Data of Accumulator from Stack Memory) The AL value is transferred to AH. Then, the word data of the memory location pointed to by the stack pointer (SP) is transferred to AL. After the data is transferred, 0002H is word-added to the value of SP (word data). ● Assembler format: POPW A ● Operation: (A) ← ((SP)) [Word transfer] (SP) ← (SP)+2 [Word addition] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: 252 Byte count: 1 Cycle count: 1 Odd address correction: 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.104 POPW (Pop Word Data of Accumulator from Stack Memory) 2 F MC-16FX Family ● Example: POPW A In this example, the word data (1635H) of AL is transferred to AH, and then the word data (10ACH) at the address (0120H) specified by SP is transferred to AL. "2" is added to SP. A AH AL 04 22 16 35 SP 01 20 CCR A ××××× AH AL 16 35 10 AC SP 01 22 CCR T N Z V C T N Z V C Memory Memory SP 1 0 A C 0122 0121 0120 Before execution CM44-00203-3E ××××× SP 1 0 A C 0122 0121 0120 After execution FUJITSU MICROELECTRONICS LIMITED 253 CHAPTER 8 DETAILED INSTRUCTIONS 8.105 POPW (Pop Word Data of AH from Stack Memory) 8.105 F2MC-16FX Family POPW (Pop Word Data of AH from Stack Memory) Transfer word data from the memory location pointed to by the stack pointer (SP) to AH. Then, 0002H is word-added to the value of SP (word data). ● Assembler format: POPW AH ● Operation: (AH) ← ((SP)) [Word transfer] (SP) ← (SP)+2 [Word addition] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 1 Cycle count: 1 Odd address correction: 1 ● Example: POPW AH In this example, the word data (4314H) at the address (0120H) specified by SP is transferred to AH. "2" is added to SP. A AH 04 22 AL 16 35 SP CCR A 01 20 AH 43 14 SP ××××× CCR T N Z V C SP ××××× Memory 0122 0121 0120 Before execution 254 01 22 T N Z V C Memory 4 3 1 4 AL 16 35 SP 4 3 1 4 0122 0121 0120 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.106 POPW (Pop Word Data of Program Status from Stack Memory) 2 F MC-16FX Family 8.106 POPW (Pop Word Data of Program Status from Stack Memory) Transfer word data from the memory location pointed to by the stack pointer (SP) to the processor status (PS). Bit 7 of the word data is ignored. Then, 0002H is word-added to the value of SP (word data). ● Assembler format: POPW PS ● Operation: (PS) ← ((SP)) [Word transfer] (SP) ← (SP)+2 [Word addition] ● CCR: I S T N Z V C * * * * * * * The values of the corresponding bits for the stack memory are transferred. ● Byte count and cycle count: Byte count: 1 Cycle count: 19 when the content of RP changes; 4 in all other cases Odd address correction: 1 CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 255 CHAPTER 8 DETAILED INSTRUCTIONS 8.106 POPW (Pop Word Data of Program Status from Stack Memory) ● Example: F2MC-16FX Family POPW PS In this example, the word data (4314H) at the address (0120H) specified by SP is transferred to PS. "2" is added to SP. SP I CCR S T N Z V SP C × × × × × × × MSB ILM2 ILM1 ILM0 ILM 01 20 × × × RP CCR LSB × × × × × SP 0 1 0 T 1 N Z V C 0 1 0 0 MSB LSB RP 0 0 0 1 1 Memory 0122 0121 0120 Before execution 256 S 0 ILM2 ILM1 ILM0 ILM Memory 4 3 1 4 I 0 01 22 SP 4 3 1 4 0122 0121 0120 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.107 POPW (Pop Registers from Stack Memory) 2 F MC-16FX Family 8.107 POPW (Pop Registers from Stack Memory) Transfer the data pointed to by the stack pointer (SP) to the multiple generalpurpose word registers specified by the register list (rlst). In assembler representation, register names are enumerated as a register list. After assembly, the register list turns into byte data. ● Assembler format: POPW rlst ● Operation: (RWx) ← ((SP)) [Word transfer] (SP) ← (SP)+2 [Word addition] The above operation is repeated for all the registers specified by rlst. ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 2 Cycle count: (Number of transfers) Odd address correction: (Number of transfers) CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 257 CHAPTER 8 DETAILED INSTRUCTIONS 8.107 POPW (Pop Registers from Stack Memory) F2MC-16FX Family ● Example: POPW (RW0,RW4) In this example, RW0 and RW4 are popped from the stack specified by SP. SP 34 FA ×× ×× ×× ×× ×× ×× ×× ×× RW0 RW1 RW2 RW3 RW4 RW5 RW6 RW7 Memory SP 0 0 0 0 4 3 2 1 ×× ×× ×× ×× ×× ×× ×× ×× 34FE 34FD 34FC 34FB 34FA Before execution 258 SP 34 FE RW0 RW1 RW2 RW3 RW4 RW5 RW6 RW7 SP 02 01 ×× ×× ×× ×× ×× ×× 04 03 ×× ×× ×× ×× ×× ×× Memory 0 0 0 0 4 3 2 1 34FE 34FD 34FC 34FB 34FA After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.108 PUSHW (Push Word Data of Inherent Register to Stack Memory) 2 F MC-16FX Family 8.108 PUSHW (Push Word Data of Inherent Register to Stack Memory) Decrement the value of the stack pointer (SP) by two words and transfer the word data of the register to the memory location pointed to by the resulting SP value. ● Assembler format: PUSHW A PUSHW AH PUSHW PS ● Operation: (SP) ← (SP)–2 [Word subtraction] ((SP)) ← (Operand) [Word transfer] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: CM44-00203-3E Operand A AH PS Byte count 1 1 1 Cycle count 1 1 1 Odd address correction 1 1 1 FUJITSU MICROELECTRONICS LIMITED 259 CHAPTER 8 DETAILED INSTRUCTIONS 8.108 PUSHW (Push Word Data of Inherent Register to Stack Memory) ● Example: F2MC-16FX Family PUSHW A In this example, "2" is subtracted from SP, and the word data of AL is transferred to the address (0120H) specified by SP. A AH AL ×× ×× 45 A4 SP 01 22 CCR A AH AL ×× ×× 45 A4 SP 01 20 ××××× CCR T N Z V C T N Z V C Memory Memory SP × × × × 0122 0121 0120 Before execution 260 ××××× SP 4 5 A 4 0122 0121 0120 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.109 PUSHW (Push Registers to Stack Memory) 2 F MC-16FX Family 8.109 PUSHW (Push Registers to Stack Memory) Transfer the contents of the multiple general-purpose word registers specified by the register list (rlst) to the memory location pointed to by the stack pointer (SP). In assembler representation, register names are enumerated as a register list. After assembly, the register list turns into byte data. ● Assembler format: PUSHW rlst ● Operation: (SP) ← (SP)–2 [Word subtraction] ((SP))← (RWx) [Word transfer] The above operation is repeated for all the registers specified by rlst. ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 2 Cycle count: (Number of transfers) Odd address correction: (Number of transfers) CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 261 CHAPTER 8 DETAILED INSTRUCTIONS 8.109 PUSHW (Push Registers to Stack Memory) F2MC-16FX Family ● Example: PUSHW (RW1,RW3) In this example, RW3 and RW1 are pushed to the stack specified by SP. SP RW0 RW1 RW2 RW3 RW4 RW5 RW6 RW7 SP 34 FE ×× ×× 3 5 A 4 ×× ×× 6 D F 0 × × × × × × × × × × × × Memory × × × × × × × × × × × × 34FE 34FD 34FC 34FB 34FA Before execution 262 SP RW0 RW1 RW2 RW3 RW4 RW5 RW6 RW7 34 FA ×× ×× 3 5 ×× ×× 6 D F 0 × × × × × × × × × × × × Memory SP A 4 6 F 3 A D 0 5 4 × × × × 34FE 34FD 34FC 34FB 34FA After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.110 RET (Return from Subroutine) 2 F MC-16FX Family 8.110 RET (Return from Subroutine) Cause a branch to the address pointed to by the stack pointer (SP). If this instruction is used in combination with a subroutine call instruction (CALL, CALLV), control returns to the instruction following the subroutine call instruction after the branch operation is completed. ● Assembler format: RET ● Operation: (PC) ← ((SP)) [Word transfer] (SP) ← (SP)+2 [Word addition] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 1 Cycle count: 4 Odd address correction: 1 ● Example: RET In this example, the word data (FC22H) at the address (0062H) specified by SP is set to PC. "2" is added to SP. SP 00 62 SP 00 64 PC F0 02 PC FC 22 Memory SP F C 2 2 Memory 0064 0063 0062 Before execution CM44-00203-3E SP F C 2 2 0064 0063 0062 After execution FUJITSU MICROELECTRONICS LIMITED 263 CHAPTER 8 DETAILED INSTRUCTIONS 8.111 RETI (Return from Interrupt) 8.111 F2MC-16FX Family RETI (Return from Interrupt) This instruction returns the data in the memory that is indicated by (SSP) to PS to detect interrupt requests performed using IF or ILM. When the next interrupt request is received, the procedure branches to the detected interruption vector. If no next interrupt is received, the procedure will return from the interruption process. ● Assembler format: RETI ● Operation: (1) If the next interrupt is accepted (PS) ← ((SSP)) (S) ← 1, (PCB), (PC) ← Interrupt vector address (ILM) ← Accepted interrupt level DTB, PCB, DPR, ADB, AL, and AH are not restored. (2) If control is returned from the next interrupt (PS) ← ((SSP)), (SSP) ← (SSP)+2; (PC) ← ((SSP)), (SSP) ← (SSP)+2; (DTB),(PCB) ← ((SSP)), (SSP) ← (SSP)+2; (DPR),(ADB) ← ((SSP)), (SSP) ← (SSP)+2; (AL) ← ((SSP)), (SSP) ← (SSP)+2; (AH) ← ((SSP)), (SSP) ← (SSP)+2 ● CCR (1) If the next interrupt is accepted 264 (2) If control is returned from the next interrupt I S T N Z V C I S T N Z V C * S * * * * * * * * * * * * I: Restored to the saved I value. I: Restored to the saved I value. S: Set S: Restored to the saved S value. T: Restored to the saved T value. T: Restored to the saved T value. N: Restored to the saved N value. N: Restored to the saved N value. Z: Restored to the saved Z value. Z: Restored to the saved Z value. V: Restored to the saved V value. V: Restored to the saved V value. C: Restored to the saved C value. C: Restored to the saved C value. FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.111 RETI (Return from Interrupt) 2 F MC-16FX Family ● Byte count and cycle count: Byte count: 1 Cycle count: 23 when the content of RP changes; 6 in all other cases Odd address correction: 1 ● Example: RETI (if control is returned from the interrupt) In this example, the word data is transferred from the address (037FF4H) specified by SSB and SP to each register. "2" is added to SP each time data is transferred to a register. A AH AL ×××× ×××× DTB A PCB PC ×× ×× ×× ×× DPR ADB ×× ×× CCR ILM RP I S T N Z V C ×× ×× × ×× × × × × SSB 03 SSP 7F F4 AH FFFE DTB PCB 99 88 DPR ADB BB AA ILM RP 03 01 SSB 03 SSP F E D C B A 9 8 7 6 1 0 038000 037FFF 037FFE 037FFD 037FFC 037FFB 037FFA 037FF9 037FF8 037FF7 037FF6 037FF5 037FF4 Before execution CM44-00203-3E CCR I S T N Z V C 0 0 0 0 0 0 0 SSP 80 00 Memory Memory F E D C B A 9 8 7 6 6 8 AL DDCC PC 77 66 SSP F E D C B A 9 8 7 6 6 8 F E D C B A 9 8 7 6 1 0 038000 037FFF 037FFE 037FFD 037FFC 037FFB 037FFA 037FF9 037FF8 037FF7 037FF6 037FF5 037FF4 After execution FUJITSU MICROELECTRONICS LIMITED 265 CHAPTER 8 DETAILED INSTRUCTIONS 8.112 RETP (Return from Physical Address) 8.112 F2MC-16FX Family RETP (Return from Physical Address) Cause a branch to the physical address pointed to by the stack pointer (SP). If this instruction is used in combination with the CALLP instruction, control returns to the instruction following the CALLP instruction after the branch operation is completed. ● Assembler format: RETP ● Operation: (PC) ← ((SP)), (SP) ← (SP)+2 [Word addition] (PCB) ← ((SP)) (Byte transfer), (SP) ← (SP)+2 [Word addition] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: 266 Byte count: 1 Cycle count: 5 Odd address correction: 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.112 RETP (Return from Physical Address) 2 F MC-16FX Family ● Example: RETP In this example, PC and PCB are popped from the stack specified by USB and SP, and a branch is caused to address AD4345H. PC 22 FC PCB CCR SP F8 FC 08 × USB 0 PC 43 45 15 SP PCB ××××× AD × CCR I S T N Z V C 0 A 4 4 SP 0 D 3 5 0 15 ××××× Memory 15F900 15F8FF 15F8FE 15F8FD 15F8FC Before execution CM44-00203-3E USB I S T N Z V C Memory × × F9 00 SP × × 0 A 4 4 0 D 3 5 15F900 15F8FF 15F8FE 15F8FD 15F8FC After execution FUJITSU MICROELECTRONICS LIMITED 267 CHAPTER 8 DETAILED INSTRUCTIONS 8.113 ROLC (Rotate Byte Data of Accumulator with Carry to Left) 8.113 F2MC-16FX Family ROLC (Rotate Byte Data of Accumulator with Carry to Left) Rotate or shift the byte data specified by the operand to the left by one bit, including the carry flag (C). The most significant bit of the operand is placed in the carry flag (C). ● Assembler format: ROLC A ROLC ear ROLC eam ● Operation: MSB A or operand LSB C ● CCR: I S T N Z V C – – – * * – * I, S, and T: Unchanged N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit shifted out from the MSB of A. ● Byte count and cycle count: 268 Operand A ear eam Byte count 2 2 2+ Cycle count 1 1 3 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.113 ROLC (Rotate Byte Data of Accumulator with Carry to Left) 2 F MC-16FX Family ● Example: ROLC A In this example, the low-order byte data (32H) of AL and the C flag ("0") are rotated to the left. AH A AL ×× ×× ×× CCR AH 32 ×××× A 0 AL ×× ×× CCR T N Z V C Before execution CM44-00203-3E ×× × 64 0 0 × 0 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 269 CHAPTER 8 DETAILED INSTRUCTIONS 8.114 RORC (Rotate Byte Data of Accumulator with Carry to Right) 8.114 F2MC-16FX Family RORC (Rotate Byte Data of Accumulator with Carry to Right) Rotate or shift the byte data specified by the operand to the right by one bit, including the carry flag (C). The least significant bit of the operand is placed in the carry flag (C). ● Assembler format: RORC A RORC ear RORC eam ● Operation: MSB A or operand LSB C ● CCR: I S T N Z V C – – – * * – * I, S, and T: Unchanged N: Set when the MSB of the shifting result is "1", cleared otherwise. Z: Set when the shifting result is zero, cleared otherwise. V: Unchanged C: Stores the bit shifted out from the LSB of A. ● Byte count and cycle count: 270 Operand A ear eam Byte count 2 2 2+ Cycle count 1 1 3 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.114 RORC (Rotate Byte Data of Accumulator with Carry to Right) 2 F MC-16FX Family ● Example: RORC A In this example, the low-order byte data (32H) of AL and the C flag ("0") are rotated to the right. AH A AL 32 ×× ×× ×× ×××× 0 T N Z V C Before execution CCR CM44-00203-3E AH A ×× ×× CCR AL 19 ×× × 0 0 ×0 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 271 CHAPTER 8 DETAILED INSTRUCTIONS 8.115 SBBS (Set Bit and Branch if Bit Set) 8.115 F2MC-16FX Family SBBS (Set Bit and Branch if Bit Set) Cause a branch if the bit data specified by the first operand is "1". Control is transferred to the address resulting from word-adding the value resulting from signextending the second operand to the address of the instruction following the SBBS instruction. After the instruction has been executed, the bit specified by the first operand is set to "1". ● Assembler format: SBBS addr16:bp,rel ● Operation: If the condition is satisfied: (PC) ← (PC)+<Byte count>+rel [Word addition], (addr16:bp) ← 1 If the condition is not satisfied: (PC) ← (PC)+<Byte count> [Word addition], (addr16:bp) ← 1 ● CCR: I S T N Z V C – – – – * – – I, S, T, and N: Unchanged Z: Set when the bit data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: Byte count: 5 Cycle count: 5 ● Example: SBBS 1234H:5,20H In this example, after bit 7 has been set to "1", a branch is caused (condition satisfied) because bit 7 in the byte data (7FH) at address 1234H is equal to "1". PC E1 00 PC Memory Memory × × 7 F 272 E1 25 × × 1234 7 F 1234 × × × × Before execution After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.116 SCEQ, SCEQI (Scan String Byte until equal with Increment) 2 F MC-16FX Family 8.116 SCEQ, SCEQI (Scan String Byte until equal with Increment) Compare the byte data specified by AH in the space specified by <bank> with the data of AL. The address is incremented and RW0 is decremented until the byte data matches the data or RW0 becomes equal to zero. Four types of registers PCB, DTB, ADB, and SPB can be specified by <bank>. By default, DTB is assumed. If RW0 is equal to zero, comparison is not performed. If an interrupt occurs during the execution of the instruction, the execution of the instruction is suspended to handle the interrupt. After the interrupt has been handled, the execution of the instruction is resumed. ● Assembler format: SCEQ [<bank>] SCEQI [<bank>] ● Operation: The following operation is repeated until RW0 = 0 or ((AH)) = (AL) [Byte comparison]: (AH) ← (AH)+1 (RW0) ← (RW0)–1 ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, N is set when the MSB of the last compare operation result is "1", cleared otherwise. Z: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, Z is set when a match with the contents of AL is found; cleared when the instruction terminates with RW0 being set to "0". V: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, V is set when an overflow has occurred as a result of the last compare operation; cleared otherwise. C: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, V is set when a borrow has occurred as a result of the last compare operation; cleared otherwise. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 273 CHAPTER 8 DETAILED INSTRUCTIONS 8.116 SCEQ, SCEQI (Scan String Byte until equal with Increment) ● Byte count and cycle count: F2MC-16FX Family Byte count: 2 Cycle count: 1 cycle when RW0 is zero; 3 cycles when RW0 is 1; and 2+2 × (Number of times the comparison was performed) in all other cases ● Example: SCEQ In this example, the byte data (54H) at the address (031580H) specified by DTB and AH is compared with the low-order byte data (46H) of AL. Both of them match with the byte data (46H) at address 031585H. AH 15 80 A RW0 AL 00 46 01 00 DTB CCR 03 A RW0 AH 15 86 AL 00 46 00 FA ××××× CCR T N Z V C Memory AH 4 4 4 4 4 5 6 8 9 D E 4 031586 031585 031584 031583 031582 031581 031580 Before execution 274 DTB × 03 0 1 0 0 T N Z V C AH Memory 4 4 4 4 4 5 6 8 9 D E 4 131586 031585 031584 031583 031582 031581 031580 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.117 SCEQD (Scan String Byte until equal with Decrement) 2 F MC-16FX Family 8.117 SCEQD (Scan String Byte until equal with Decrement) Compare the byte data specified by AH in the space specified by <bank> with the data of AL. The address is decremented and RW0 is decremented until the byte data matches the data or RW0 becomes equal to zero. Four types of registers PCB, DTB, ADB, and SPB can be specified by <bank>. By default, DTB is assumed. If RW0 is equal to zero, comparison is not performed. If an interrupt occurs during the execution of the instruction, the execution of the instruction is suspended to handle the interrupt. After the interrupt has been handled, the execution of the instruction is resumed. ● Assembler format: SCEQD [<bank>] ● Operation: The following operation is repeated until RW0 = 0 or ((AH)) = (AL) [Byte comparison]: (AH) ← (AH)–1 (RW0) ← (RW0)–1 ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, N is set when the MSB of the last compare operation result is "1", cleared otherwise. Z: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, Z is set when a match with the contents of AL is found; cleared when the instruction terminates with RW0 being set to zero. V: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, V is set when an overflow has occurred as a result of the last compare operation; cleared otherwise. C: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, V is set when a borrow has occurred as a result of the last compare operation; cleared otherwise. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 275 CHAPTER 8 DETAILED INSTRUCTIONS 8.117 SCEQD (Scan String Byte until equal with Decrement) F2MC-16FX Family ● Byte count and cycle count: 276 Byte count: 2 Cycle count: 1 cycle when RW0 is zero; 3 cycles when RW0 is 1; and 2+2 × (Number of times the comparison was performed) in all other cases Odd address correction: Number of times the comparison was performed FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.118 SCWEQ, SCWEQI (Scan String Word until equal with Increment) 2 F MC-16FX Family 8.118 SCWEQ, SCWEQI (Scan String Word until equal with Increment) Compare the word data specified by AH in the space specified by <bank> with the data of AL. The address is incremented and RW0 is decremented until the word data matches the data or RW0 becomes equal to zero. Four types of registers PCB, DTB, ADB, and SPB can be specified by <bank>. By default, DTB is assumed. If RW0 is equal to zero, comparison is not performed. If an interrupt occurs during the execution of the instruction, the execution of the instruction is suspended to handle the interrupt. After the interrupt has been handled, the execution of the instruction is resumed. ● Assembler format: SCWEQ [<bank>] SCWEQI [<bank>] ● Operation: The following operation is repeated until RW0 = 0 or ((AH)) = (AL) [Word comparison]: (AH) ← (AH)+2 (RW0) ← (RW0)–1 ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, N is set when the MSB of the last compare operation result is "1", cleared otherwise. Z: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, Z is set when a match with the contents of AL is found; cleared when the instruction terminates with RW0 being set to zero. V: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, V is set when an overflow has occurred as a result of the last compare operation; cleared otherwise. C: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, V is set when a borrow has occurred as a result of the last compare operation; cleared otherwise. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 277 CHAPTER 8 DETAILED INSTRUCTIONS 8.118 SCWEQ, SCWEQI (Scan String Word until equal with Increment) ● Byte count and cycle count: F2MC-16FX Family Byte count: 2 Cycle count: 1 cycle when RW0 is zero; 3 cycles when RW0 is 1; and 2+2 × (Number of times the comparison was performed) in all other cases Odd address correction: Number of times the comparison was performed ● Example: SCWEQ In this example, the word data (E1E0H) at the address (DEC000H) specified by DTB and AH is compared with the word data (00FFH) of AL. RW0 is set to "0", and processing is terminated. A RW0 AH C0 00 AL 00 FF 00 03 DTB CCR DE A RW0 AH C0 06 AL 00 FF 00 00 ××××× DTB CCR T N Z V C AH 6 5 4 3 2 1 0 Memory DEC006 DEC005 DEC004 DEC003 DEC002 DEC001 DEC000 Before execution 278 1 0 0 1 T N Z V C Memory E E E E E E E × DE AH E E E E E E E 6 5 4 3 2 1 0 DEC006 DEC005 DEC004 DEC003 DEC002 DEC001 DEC000 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.119 SCWEQD (Scan String Word until Equal with Decrement) 2 F MC-16FX Family 8.119 SCWEQD (Scan String Word until Equal with Decrement) Compare the word data specified by AH in the space specified by <bank> with the data of AL. The address is decremented and RW0 is decremented until the word data matches the data or RW0 becomes equal to zero. Four types of registers PCB, DTB, ADB, and SPB can be specified by <bank>. By default, DTB is assumed. If RW0 is equal to zero, comparison is not performed. If an interrupt occurs during the execution of the instruction, the execution of the instruction is suspended to handle the interrupt. After the interrupt has been handled, the execution of the instruction is resumed. ● Assembler format: SCWEQD [<bank>] ● Operation: The following operation is repeated until RW0 = 0 or ((AH)) = (AL) [Word comparison]: (AH) ← (AH)–2 (RW0) ← (RW0)–1 ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, N is set when the MSB of the last compare operation result is "1", cleared otherwise. Z: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, Z is set when a match with the contents of AL is found; cleared when the instruction terminates with RW0 being set to zero. V: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, V is set when an overflow has occurred as a result of the last compare operation; cleared otherwise. C: Unchanged if the initial value of RW0 is zero. If the initial value of RW0 is not zero, V is set when a borrow has occurred as a result of the last compare operation; cleared otherwise. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 279 CHAPTER 8 DETAILED INSTRUCTIONS 8.119 SCWEQD (Scan String Word until Equal with Decrement) F2MC-16FX Family ● Byte count and cycle count: 280 Byte count: 2 Cycle count: 1 cycle when RW0 is zero; 3 cycles when RW0 is 1; and 2+2 × (Number of times the comparison was performed) in all other cases Odd address correction: Number of times the comparison was performed FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.120 SETB (Set Bit) 2 F MC-16FX Family 8.120 SETB (Set Bit) Set the contents of the bit address specified by the operand to "1". ● Assembler format: SETB addr16:bp SETB dir:bp SETB io:bp ● Operation: (Operand) b ← 1 [Bit transfer] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. Byte count and cycle count: Operand addr16:bp dir:bp io:bp Byte count 4 3 3 Cycle count 3 3 3 ● Example: SETB 0AA55H:4 In this example, bit 4 in data (FFH) at address AA55H is set to "1". CCR 00000 TNZVC Memory CCR × × 6 F CM44-00203-3E 00000 TNZVC Memory × × AA55 7 F AA55 × × × × Before execution After execution FUJITSU MICROELECTRONICS LIMITED 281 CHAPTER 8 DETAILED INSTRUCTIONS 8.121 SUB (Subtract Byte Data of Source from Destination to Destination) 8.121 F2MC-16FX Family SUB (Subtract Byte Data of Source from Destination to Destination) Subtract the byte data specified by the second operand from the byte data specified by the first operand and restore the result in the first operand. If the first operand is A, 00H is transferred to upper byte of AL. ● Assembler format: SUB A,#imm8 SUB A,dir SUB A,ear SUB A,eam SUB ear,A SUB eam,A ● Operation: (First operand) ← (First operand)–(Second operand) [Byte subtraction] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: 282 First operand A A A A ear eam Second operand #imm8 dir ear eam A A Byte count 2 2 2 2+ 2 2+ Cycle count 1 2 1 2 1 3 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.121 SUB (Subtract Byte Data of Source from Destination to Destination) 2 F MC-16FX Family ● Example: SUB A,#22H In this example, the 8-bit immediate data (22H) is subtracted from the low-order byte data (01H) of AL. AH A AL 49 01 ×× ×× CCR ××××× AH A ×× ×× CCR CM44-00203-3E × 1 0 0 1 T N Z V C T N Z V C Before execution AL 00 DF After execution FUJITSU MICROELECTRONICS LIMITED 283 CHAPTER 8 DETAILED INSTRUCTIONS 8.122 SUBC (Subtract Byte Data of AL from AH with Carry to AL) 8.122 F2MC-16FX Family SUBC (Subtract Byte Data of AL from AH with Carry to AL) Subtract the low-order byte data of AL and the carry flag (C) from the low-order byte data of AH and restore the result in AL. 00H is transferred to upper byte of AL. ● Assembler format: SUBC A ● Operation: (AL) ← (AH)–(AL)–(C) [Byte subtraction with a carry] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: SUBC A In this example, the low-order byte data (D4H) of AL and the carry flag C ("1") are subtracted from the low-order byte data (30H) of AL. The result is stored in the low-order byte of AL. A AH 05 05 AL 00 D4 CCR ××××× A AH 05 05 CCR 284 × 1 0 0 1 T N Z V C T N Z V C Before execution AL 00 30 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.123 SUBC (Subtract Byte Data of Effective Address from Accumulator with Carry to Accumulator) 2 F MC-16FX Family 8.123 SUBC (Subtract Byte Data of Effective Address from Accumulator with Carry to Accumulator) Subtract the byte data specified by the second operand and the carry flag (C) from the byte data of the accumulator (A) and restore the result in A. 00H is transferred to upper byte of AL. ● Assembler format: SUBC A,ear SUBC A,eam ● Operation: (A) ← (A)–(Second operand)–(C) [Byte subtraction with a carry] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: CM44-00203-3E First operand A A Second operand ear eam Byte count 2 2+ Cycle count 1 2 FUJITSU MICROELECTRONICS LIMITED 285 CHAPTER 8 DETAILED INSTRUCTIONS 8.123 SUBC (Subtract Byte Data of Effective Address from Accumulator with Carry to Accumulator) ● Example: F2MC-16FX Family SUBC A,R1 In this example, the byte data (54H) of R1 and the C flag ("0") are subtracted from the loworder byte data (35H) of AL. AH A AL 00 35 ×× ×× R1 CCR AH A ×× ×× 54 ×××× 0 R1 CCR 286 × 54 1 0 0 1 T N Z V C T N Z V C Before execution AL 00 E1 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.124 SUBCW (Subtract Word Data of Effective Address from Accumulator with Carry to Accumulator) 2 F MC-16FX Family 8.124 SUBCW (Subtract Word Data of Effective Address from Accumulator with Carry to Accumulator) Subtract the word data specified by the second operand and the carry flag (C) from the low-order word data of the accumulator (A) and restore the result in A. ● Assembler format: SUBCW A,ear SUBCW A,eam ● Operation: (A) ← (A)–(Second operand)–(C) [Word subtraction with a carry] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: CM44-00203-3E First operand A A Second operand ear eam Byte count 2 2+ Cycle count 1 2 Odd address correction 0 1 FUJITSU MICROELECTRONICS LIMITED 287 CHAPTER 8 DETAILED INSTRUCTIONS 8.124 SUBCW (Subtract Word Data of Effective Address from Accumulator with Carry to Accumulator) ● Example: F2MC-16FX Family SUBCW A,0E024H In this example, the word data (A95BH) at address E024H and the C flag ("1") are subtracted from the word data (7558H) of AL. A AH AL ×× ×× 75 58 CCR ×××× A 1 AH AL ×× ×× CB FC CCR A 9 5 B Memory E025 E024 Before execution 288 1 0 0 1 T N Z V C T N Z V C Memory × A 9 5 B E025 E024 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.125 SUBDC (Subtract Decimal Data of AL from AH with Carry to AL) 2 F MC-16FX Family 8.125 SUBDC (Subtract Decimal Data of AL from AH with Carry to AL) Subtract the low-order byte data of AL and the carry flag (C) from the low-order byte data of AH and restore the result in AL. 00H is transferred to upper byte of AL. ● Assembler format: SUBDC A ● Operation: (AL) ← (AH)–(AL)–(C) [Decimal subtraction with a carry] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Undefined C: Set when a borrow has occurred as a result of the decimal operation, cleared otherwise. ● Byte count and cycle count: Byte count: 1 Cycle count: 2 ● Example: SUBDC A In this example, the byte data (86H) of AL and the C flag ("0") are subtracted from the byte data (86H) of AH in decimal operation. AH A ×× AL ×× 86 CCR AH 86 ×××× A 0 ×× AL 86 CCR CM44-00203-3E × 0 1 × 0 T N Z V C T N Z V C Before execution 00 00 After execution FUJITSU MICROELECTRONICS LIMITED 289 CHAPTER 8 DETAILED INSTRUCTIONS 8.126 SUBL (Subtract Long Word Data of Source from Destination to Destination) 8.126 F2MC-16FX Family SUBL (Subtract Long Word Data of Source from Destination to Destination) Subtract the long word data specified by the second operand from the long word data of the accumulator (A) and restore the result in A. ● Assembler format: SUBL A,#imm32 SUBL A,ear SUBL A,eam ● Operation: (First operand) ← (First operand)–(Second operand) [Long word subtraction] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: 290 First operand A A A Second operand #imm32 ear eam Byte count 5 2 2+ Cycle count 2 2 3 Odd address correction 0 0 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.126 SUBL (Subtract Long Word Data of Source from Destination to Destination) 2 F MC-16FX Family ● Example: SUBL A,0FD12H In this example, the long word data (525F31BDH) at address FD12H is subtracted from the long word data (34B3F201H) of the accumulator (A). A AH 34 B3 AL F2 01 CCR A AH E2 54 ××××× AL C0 44 CCR 5 5 3 B 2 F 1 D Memory FD16 FD15 FD14 FD13 FD12 Before execution CM44-00203-3E 1 0 0 1 T N Z V C T N Z V C Memory × 5 5 3 B 2 F 1 D FD16 FD15 FD14 FD13 FD12 After execution FUJITSU MICROELECTRONICS LIMITED 291 CHAPTER 8 DETAILED INSTRUCTIONS 8.127 SUBW (Subtract Word Data of Source from Destination to Destination) 8.127 F2MC-16FX Family SUBW (Subtract Word Data of Source from Destination to Destination) Subtract the word data specified by the second operand from the word data specified by the first operand and restore the result in the first operand. ● Assembler format: SUBW A,#imm16 SUBW A,ear SUBW A,eam SUBW ear,A SUBW eam,A ● Operation: (First operand) ← (First operand)–(Second operand) [Word subtraction] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: 292 First operand A A A ear eam Second operand #imm16 ear eam A A Byte count 3 2 2+ 2 2+ Cycle count 1 1 2 1 3 Odd address correction 0 0 1 0 2 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family ● Example: CHAPTER 8 DETAILED INSTRUCTIONS 8.127 SUBW (Subtract Word Data of Source from Destination to Destination) SUBW @RW0+,A In this example, the word data (3104H) of AL is subtracted from the word data (5DABH) of the address (E2A4H) specified by the first operand (@RW0+). A AH AL ×× ×× 31 04 RW0 CCR E2 A4 ××××× A AH AL ×× ×× 31 04 RW0 CCR T N Z V C E2A5 E2A4 Before execution CM44-00203-3E × 0 0 0 0 T N Z V C Memory Memory 5 D A B E2 A6 2 C A 7 E2A5 E2A4 After execution FUJITSU MICROELECTRONICS LIMITED 293 CHAPTER 8 DETAILED INSTRUCTIONS 8.128 SUBW (Subtract Word Data of AL from AH to AL) 8.128 F2MC-16FX Family SUBW (Subtract Word Data of AL from AH to AL) Subtract the word data of AL from the word data of AH and restore the result to AL. ● Assembler format: SUBW A ● Operation: (AL) ← (AH)–(AL) [Word subtraction] ● CCR: I S T N Z V C – – – * * * * I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Set when an overflow has occurred as a result of the operation, cleared otherwise. C: Set when a borrow has occurred as a result of the operation, cleared otherwise. ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: SUBW A In this example, the word data (1019H) of AL is subtracted from the word data (83A2H) of AH. The subtraction result (7389H) is set to AL. A AH AL 83 A2 10 19 CCR ××××× A AH AL 83 A2 73 89 CCR T N Z V C Before execution 294 × 0 0 1 0 T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.129 SWAP (Swap Byte Data of Accumulator) 2 F MC-16FX Family 8.129 SWAP (Swap Byte Data of Accumulator) Swap the high- and low-order bytes of the word data for the accumulator (A) with each other. ● Assembler format: SWAP ● Operation: temp ← AL[7:0] AL[7:0] ← AL[15:8] AL[15:8] ← temp [Byte swapping] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: SWAP In this example, the high-order byte data (06H) of AL is exchanged with the low-order byte data (90H) of AL. AH A ×× ×× CCR AL AH AL 06 90 ×× ×× 90 06 ××××× A CCR T N Z V C Before execution CM44-00203-3E ××××× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 295 CHAPTER 8 DETAILED INSTRUCTIONS 8.130 SWAPW (Swap Word Data of Accumulator) 8.130 F2MC-16FX Family SWAPW (Swap Word Data of Accumulator) Swap the high- and low-order words of the long word data for the accumulator (A) with each other. ● Assembler format: SWAPW ● Operation: temp ← (AH) (AH) ← (AL) (AL) ← temp [Word swapping] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: SWAPW In this example, the word data (1986H) of AH is exchanged with the word data (9861H) of AL. A AH AL 19 86 98 61 CCR ××××× A AH AL 98 61 19 86 CCR T N Z V C Before execution 296 ××××× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.131 UNLINK (Unlink and Create New Stack Frame) 2 F MC-16FX Family 8.131 UNLINK (Unlink and Create New Stack Frame) Restore an old frame pointer from a stack. ● Assembler format: UNLINK ● Operation: (SP) ← (RW3), (RW3) ← ((SP)), (SP) ← (SP)+2 ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Byte count: 1 Cycle count: 1 Odd address correction: 1 ● Example: UNLINK In this example, the word data (E020H) of RW3 is transferred to SP, and RW3 is popped from the stack specified by SP. SP RW3 E0 00 SP E0 20 A 0 4 6 A0 46 RW3 Memory E0 22 Memory E020 SP × × A 0 4 6 SP × × E000 Before execution CM44-00203-3E E022 E021 E020 After execution FUJITSU MICROELECTRONICS LIMITED 297 CHAPTER 8 DETAILED INSTRUCTIONS 8.132 WBTc (Wait until Bit Condition Satisfied) 8.132 F2MC-16FX Family WBTc (Wait until Bit Condition Satisfied) This instruction keeps reading data from the bit address specified by the operand until that data satisfies the conditions. Once the data at the specified bit address satisfies the conditions, control is transferred to the instruction subsequent to the WBTc instruction. ● Assembler format: WBTC io:bp WBTS io:bp ● Operation: Data is read from the bit address specified by io:bp until the data satisfies the condition. If the data from the bit address satisfies the condition, control is transferred to the next instruction. Interrupts are acceptable while the read operation is repeated with the condition not satisfied. If an interrupt is generated in this state, the RETI instruction causes control to return to the WBTc instruction, not to the instruction following the WBTc instruction. ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: Instruction WBTC WBTS Condition Bit data=0 Bit data=1 Byte count 3 3 Cycle count 298 Undefined Undefined (Until the condition is satisfied) (Until the condition is satisfied) FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.132 WBTc (Wait until Bit Condition Satisfied) 2 F MC-16FX Family ● Example: WBTS 34H:7 In this example, wait until bit 7 in the byte data at address 34H is set to "1". PC E1 00 Memory Peripheral register × × 7 F 0034H × × Before execution CM44-00203-3E Data is read from address 34H until bit 7 is set to "1" (because of resource operation, for example). When bit 7 becomes "1", execute the next instruction. After execution FUJITSU MICROELECTRONICS LIMITED 299 CHAPTER 8 DETAILED INSTRUCTIONS 8.133 XCH (Exchange Byte Data of Source to Destination) 8.133 F2MC-16FX Family XCH (Exchange Byte Data of Source to Destination) Exchange the byte data specified by the first operand with that specified by the second operand. If the first operand is A, the high-order byte of AL is set to 00H. ● Assembler format: XCH A,ear XCH A,eam XCH Ri,ear XCH Ri,eam ● Operation: temp ← (First operand) (First operand) ← (Second operand) (Second operand) ← temp [Byte exchange] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: 300 First operand A A Ri Ri Second operand ear eam ear eam Byte count 2 2+ 2 2+ Cycle count 1 2 2 2 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.133 XCH (Exchange Byte Data of Source to Destination) 2 F MC-16FX Family ● Example: XCH R4,@RW0+ In this example, the byte data (F1H) of R4 is exchanged with the byte data (22H) at address (0060H) specified by the second operand (@RW0+). RW0 00 60 R4 CCR RW0 F1 R4 ××××× CCR T N Z V C 2 2 ××××× Memory 0061 0060 Before execution CM44-00203-3E 22 T N Z V C Memory RW0 00 61 RW0 F 1 0061 0060 After execution FUJITSU MICROELECTRONICS LIMITED 301 CHAPTER 8 DETAILED INSTRUCTIONS 8.134 XCHW (Exchange Word Data of Source to Destination) 8.134 F2MC-16FX Family XCHW (Exchange Word Data of Source to Destination) Exchange the word data specified by the first operand with that specified by the second operand. ● Assembler format: XCHW A,ear XCHW A,eam XCHW RWi,ear XCHW RWi,eam ● Operation: temp ← (First operand) (First operand) ← (Second operand) (Second operand) ← temp [Word exchange] ● CCR: I S T N Z V C – – – – – – – None of the flags is changed. ● Byte count and cycle count: 302 First operand A A RWi RWi Second operand ear eam ear eam Byte count 2 2+ 2 2+ Cycle count 1 2 2 2 Odd address correction 0 2 0 2 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.134 XCHW (Exchange Word Data of Source to Destination) 2 F MC-16FX Family ● Example: XCHW A,@RW0 In this example, the word data (24B4H) of AL is exchanged with the word data (2D58H) at address (E001H) specified by the second operand (@RW0). A AH AL ×× ×× 34 B4 RW0 E0 01 CCR A ××××× AH AL ×× ×× 2D 58 RW0 E0 01 CCR T N Z V C T N Z V C Memory Memory RW0 2 D 5 8 E002 E001 Before execution CM44-00203-3E ××××× RW0 3 4 B 4 E002 E001 After execution FUJITSU MICROELECTRONICS LIMITED 303 CHAPTER 8 DETAILED INSTRUCTIONS 8.135 XOR (Exclusive Or Byte Data of Destination and Source to Destination) 8.135 F2MC-16FX Family XOR (Exclusive Or Byte Data of Destination and Source to Destination) Take the logical exclusive OR of the byte data specified by the first operand and the byte data specified by the second operand and restore the result in the first operand. ● Assembler format: XOR A,#imm8 XOR A,ear XOR A,eam XOR ear,A XOR eam,A ● Operation: (First operand) ← (First operand) xor (Second operand) [Byte logical exclusive OR] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: 304 First operand A A A ear eam Second operand #imm8 ear eam A A Byte count 2 2 2+ 2 2+ Cycle count 1 1 2 1 3 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.135 XOR (Exclusive Or Byte Data of Destination and Source to Destination) 2 F MC-16FX Family ● Example: XOR 0052H,A In this example, the logical exclusive OR is taken between the byte data (FAH) at address 0052H and the low-order byte data (55H) of AL. A AH AL ×× ×× 00 55 CCR ××××× A AH AL ×× ×× 00 55 CCR T N Z V C Before execution CM44-00203-3E 1 0 0 × T N Z V C Memory Memory F A × 000052 A F 000052 After execution FUJITSU MICROELECTRONICS LIMITED 305 CHAPTER 8 DETAILED INSTRUCTIONS 8.136 XORL (Exclusive Or Long Word Data of Destination and Source to Destination) 8.136 F2MC-16FX Family XORL (Exclusive Or Long Word Data of Destination and Source to Destination) Take the logical exclusive OR of the long word data for the accumulator (A) and that specified by the second operand and restore the result in A. ● Assembler format: XORL A,ear XORL A,eam ● Operation: (A) ← (A) xor (Second operand) [Long word logical exclusive OR] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: 306 First operand A A Second operand ear eam Byte count 2 2+ Cycle count 2 3 Odd address correction 0 1 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.136 XORL (Exclusive Or Long Word Data of Destination and Source to Destination) 2 F MC-16FX Family ● Example: XORL A,0FFF0H In this example, the logical exclusive OR is taken between the long word data (8252FEACH) of the accumulator (A) and the long word data (FF55AA00H) at address FFF0H. A AH AL 82 52 FE AC CCR A AH AL 7D 07 54 AC ××××× CCR T N Z V C Memory F 5 A 0 F 5 A 0 0 0 0 × T N Z V C Memory FFF3 FFF2 FFF1 FFF0 Before execution CM44-00203-3E × F 5 A 0 F 5 A 0 FFF3 FFF2 FFF1 FFF0 After execution FUJITSU MICROELECTRONICS LIMITED 307 CHAPTER 8 DETAILED INSTRUCTIONS 8.137 XORW (Exclusive Or Word Data of AH and AL to AL) 8.137 F2MC-16FX Family XORW (Exclusive Or Word Data of AH and AL to AL) Take the logical exclusive OR for the word data of AH and that of AL and restore the result in AL. ● Assembler format: XORW A ● Operation: (AL) ← (AH) xor (AL) [Word logical exclusive OR] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: XORW A In this example, the logical exclusive OR is taken between the word data (AB98H) of AL and the word data (0426H) of AH. A AH AL 04 26 AB 98 CCR ××××× AH A AL 04 26 CCR T N Z V C Before execution 308 AF BE × 1 0 0 × T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.138 XORW (Exclusive Or Word Data of Destination and Source to Destination) 2 F MC-16FX Family 8.138 XORW (Exclusive Or Word Data of Destination and Source to Destination) Take the logical exclusive OR of the word data specified by the first operand and the word data specified by the second operand and restore the result in the first operand. ● Assembler format: XORW A,#imm16 XORW A,ear XORW A,eam XORW ear,A XORW eam,A ● Operation: (First operand) ← (First operand) xor (Second operand) [Word logical exclusive OR] ● CCR: I S T N Z V C – – – * * R – I, S, and T: Unchanged N: Set when the MSB of the operation result is "1", cleared otherwise. Z: Set when the operation result is zero, cleared otherwise. V: Cleared C: Unchanged ● Byte count and cycle count: CM44-00203-3E First operand A A A ear eam Second operand #imm16 ear eam A A Byte count 3 2 2+ 2 2+ Cycle count 1 1 2 1 3 Odd address correction 0 0 1 0 2 FUJITSU MICROELECTRONICS LIMITED 309 CHAPTER 8 DETAILED INSTRUCTIONS 8.138 XORW (Exclusive Or Word Data of Destination and Source to Destination) ● Example: F2MC-16FX Family XORW 0E001H,A In this example, the logical exclusive OR is taken between the word data (8342H) at address E001H and the word data (5963H) of AL. AH A ×× ×× CCR AL AH AL 59 63 ×× ×× 59 63 ××××× A CCR T N Z V C E002 E001 Before execution 310 1 0 0 × T N Z V C Memory Memory 8 3 4 2 × D A 2 1 E002 E001 After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CHAPTER 8 DETAILED INSTRUCTIONS 8.139 ZEXT (Zero Extend from Byte Data to Word Data) 2 F MC-16FX Family 8.139 ZEXT (Zero Extend from Byte Data to Word Data) Transfer 00H to upper byte of AL. ● Assembler format: ZEXT ● Operation: AL[15:8] ← 00H ● CCR: I S T N Z V C – – – R * – – I, S, and T: Unchanged N: Cleared Z: Set when the zero-extended data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: ZEXT In this example, the upper byte of AL is set to 00H. AH A AL ×× ×× ×× CCR 80 ××××× AH A AL ×× ×× CCR T N Z V C Before execution CM44-00203-3E 00 80 × 0 0 ×× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED 311 CHAPTER 8 DETAILED INSTRUCTIONS 8.140 ZEXTW (Zero Extend from Word Data to Long Word Data) 8.140 F2MC-16FX Family ZEXTW (Zero Extend from Word Data to Long Word Data) Transfer 0000H to AH. ● Assembler format: ZEXTW ● Operation: AH ← 0000H ● CCR: I S T N Z V C – – – R * – – I, S, and T: Unchanged N: Cleared Z: Set when the zero-extended data is zero, cleared otherwise. V and C: Unchanged ● Byte count and cycle count: Byte count: 1 Cycle count: 1 ● Example: ZEXTW In this example, AH is set to 0000H. A AH AL ×× ×× FF 80 CCR ××××× A AH AL 00 00 FF 80 CCR T N Z V C Before execution 312 × 0 0 ×× T N Z V C After execution FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E APPENDIX This appendix includes lists and maps of instructions for the F2MC-16FX CPU. APPENDIX A Explanation of Instruction Lists APPENDIX B Instruction Lists (351 Instructions) APPENDIX C Instruction Maps CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 313 APPENDIX APPENDIX A Explanation of Instruction Lists F2MC-16FX Family APPENDIX A Explanation of Instruction Lists This section explains items and symbols used in each instruction list included in Instruction Lists (351 Instructions). A.1 Items Used in Instruction Lists A.2 Symbols Used in Instruction Lists A.3 Effective Address Field 314 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E APPENDIX APPENDIX A Explanation of Instruction Lists 2 F MC-16FX Family A.1 Items Used in Instruction Lists Table A.1-1 explains the items used in the instruction lists. Table A.1-1 Explanation of the Items Used in the Instruction Lists Item Mnemonic Description Upper-case letters and symbols: Lower-case letters: Numbers after lower-case letters: Described as they appear in assembler. Replaced when described in assembler. Indicate the bit width within the instruction. # Indicates the byte count. ~ Indicates the cycle count. B Indicates the cycle count required for correcting odd addresses. The actual cycle count during instruction execution is the correction value added to the value in the "~" column. Operation Indicates operation of instruction. LH Indicates special operations involving bits 15 through 08 of the accumulator. Z: Transfers "0". X: Sign-extended transfer through sign extension. - : Transfers nothing. AH Indicates special operations involving the high-order 16 bits in the accumulator. *: Transfers from AL to AH. - : No transfer Z: Transfers 00H to AH. X: Transfers 00H or FFH to AH using sign extension AL. I S T N Indicates the status of each of the following flags: I (interrupt enable), S (stack), T (sticky bit), N (negative), Z (zero), V (overflow), and C (carry). *: Changes due to execution of instruction. - : No change S: Set by execution of instruction. R: Clear by execution of instruction. Z V C RMW CM44-00203-3E Indicates whether the instruction is a read-modify-write instruction (a single instruction that reads data from memory, etc., processes the data, and then writes the result to memory.). *: Instruction is a read-modify-write instruction. -: Instruction is not a read-modify-write instruction. Note: A read-modify-write instruction cannot be used on addresses of the I/O register, etc., that have different meanings depending on whether they are read or written. FUJITSU MICROELECTRONICS LIMITED 315 APPENDIX APPENDIX A Explanation of Instruction Lists F2MC-16FX Family ■ Execution cycle count The cycle count required to execute instructions (execution cycle count) is the summation of the cycle count of each instruction and the odd address correction value determined by access conditions for data. At the actual instruction execution time, the execution cycle count may become larger than the calculated value due to the instruction fetch delay, the data access conflict, etc. Especially, when performing instruction fetch and data access from an external bus by using the external bus interface, the execution cycle count becomes larger than the calculated value. ■ Odd address correction For some instructions, the execution cycles increases when performing data access to odd addresses. The execution cycles that increases at data access time to odd addresses is shown under the title of "odd address correction" in item B in the instruction list. 316 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E APPENDIX APPENDIX A Explanation of Instruction Lists 2 F MC-16FX Family A.2 Symbols Used in Instruction Lists Table A.2-1 explains the symbols used in the instruction lists. ■ Explanation of the Symbols Used in the Instruction Lists Table A.2-1 Explanation of the Symbols Used in the Instruction Lists (1 / 2) Symbol A Explanation 32 bit accumulator The bit length used is different for each instruction. Byte: Lower 8 bits of AL Word: 16 bits of AL Long Word: 32 bits of AL and AH AH Upper 16 bits of A AL Lower 16 bits of A SP Stack pointer (USP or SSP) PC Program counter PCB Program bank register DTB Data bank register ADB Additional data bank register SSB System stack bank register USB User stack bank register DPR Direct page register brg1 DTB, ADB, SSB, USB, DPR, PCB brg2 DTB, ADB, SSB, USB, DPR Ri R0, R1, R2, R3, R4, R5, R6, R7 Rj R0, R1, R2, R3 RWi RW0, RW1, RW2, RW3, RW4, RW5, RW6, RW7 RWj RW0, RW1, RW2, RW3 RLi RL0, RL1, RL2, RL3 dir Abbreviated direct addressing addr16 Direct addressing addr24 Physical direct addressing ad24 0-15 Bit0 to bit15 of address 24 ad24 16-23 Bit16 to bit23 of address 24 io CM44-00203-3E I/O area (000000H to 0000FFH) FUJITSU MICROELECTRONICS LIMITED 317 APPENDIX APPENDIX A Explanation of Instruction Lists F2MC-16FX Family Table A.2-1 Explanation of the Symbols Used in the Instruction Lists (2 / 2) Symbol imm4 4-bit immediate data imm8 8-bit immediate data imm16 16-bit immediate data imm32 32-bit immediate data ext (imm8) 16-bit data signed and extended from 8-bit immediate data disp8 8-bit displacement disp16 16-bit displacement bp 318 Explanation Bit offset value vct4 Vector number (0 to 15) vct8 Vector number (0 to 255) ( )b Bit address rel Branch specification relative to PC ear Effective addressing (codes 00 to 07) eam Effective addressing (codes 08 to 1F) rlst Register list FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E APPENDIX APPENDIX A Explanation of Instruction Lists 2 F MC-16FX Family A.3 Effective Address Field Table A.3-1 lists address formats used in the effective address field. Table A.3-1 Effective Address Field Code 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F Notation R0 R1 R2 R3 R4 R5 R6 R7 RW0 RL0 RW1 (RL0) RW2 RL1 RW3 (RL1) RW4 RL2 RW5 (RL2) RW6 RL3 RW7 (RL3) @RW0 @RW1 @RW2 @RW3 @RW0+ @RW1+ @RW2+ @RW3+ @RW0+disp8 @RW1+disp8 @RW2+disp8 @RW3+disp8 @RW4+disp8 @RW5+disp8 @RW6+disp8 @RW7+disp8 @RW0+disp16 @RW1+disp16 @RW2+disp16 @RW3+disp16 @RW0+RW7 @RW1+RW7 @PC+disp16 addr16 Address format Byte count of address expansion part* Register direct Note: The general purpose register name on the left notation corresponds to the byte, word and long-word types. - Register indirect 0 Register indirect with post-incrementing 0 Register indirect with 8-bit displacement 1 Register indirect with 16-bit displacement 2 Register indirect with index Register indirect with index PC indirect with 16-bit displacement Direct address 0 0 2 2 *: The byte count of the address expansion part is shown in the "#" (byte count) column. "numeric value+", such as "2+", written in the detailed instructions indicates the byte count of the address expansion part added to the value. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 319 APPENDIX APPENDIX B Instruction Lists (351 Instructions) F2MC-16FX Family APPENDIX B Instruction Lists (351 Instructions) Instruction lists used by the assembler is shown here. For each item and symbol in the instruction lists, see “APPENDIX A Explanation of Instruction Lists”. Table B-1 Transfer Instructions (Byte) : 41 instructions Mnemonic MOV MOV MOV MOV MOV MOV MOV MOV MOV MOVN MOVX MOVX MOVX MOVX MOVX MOVX MOVX MOVX MOVX MOVX MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV XCH XCH XCH XCH # A, dir A, addr16 A, Ri A, ear A, eam A, io A, #imm8 A, @A A, @RLi+disp8 A, #imm4 A, dir A, addr16 A, Ri A, ear A, eam A, io A, #imm8 A, @A A, @RWi+disp8 A, @RLi+disp8 dir, A addr16, A Ri, A ear, A eam, A io, A @RLi+disp8, A Ri, ear Ri, eam ear, Ri eam, Ri Ri, #imm8 io, #imm8 dir, #imm8 ear, #imm8 eam, #imm8 @AL, AH A, ear A, eam Ri, ear Ri, eam 2 3 1 2 2+ 2 2 2 3 1 2 3 1 2 2+ 2 2 2 2 3 2 3 1 2 2+ 2 3 2 2+ 2 2+ 2 3 3 3 3+ 2 2 2+ 2 2+ B 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 / 2*1 1 1 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Operation byte (A) ←(dir) byte (A) ←(addr16) byte (A) ←(Ri) byte (A) ←(ear) byte (A) ←(eam) byte (A) ←(io) byte (A) ←imm8 byte (A) ←((A)) byte (A) ←((RLi)+disp8) byte (A) ←imm4 byte (A) ←(dir) byte (A) ←(addr16) byte (A) ←(Ri) byte (A) ←(ear) byte (A) ←(eam) byte (A) ←(io) byte (A) ←imm8 byte (A) ←((A)) byte (A) ←((RWi)+disp8) byte (A) ←((RLi)+disp8) byte (dir) ←(A) byte (addr16) ←(A) byte (Ri) ←(A) byte (ear) ←(A) byte (eam) ←(A) byte (io) ←(A) byte ((RLi)+disp8) ←(A) byte (Ri) ←(ear) byte (Ri) ←(eam) byte (ear) ←(Ri) byte (eam) ←(Ri) byte (Ri) ←imm8 byte (io) ←imm8 byte (dir) ←imm8 byte (ear) ←imm8 byte (eam) ←imm8 byte ((A)) ←(AH) byte (A) ←→(ear) byte (A) ←→(eam) byte (Ri) ←→(ear) byte (Ri) ←→(eam) LH AH I S T N Z V C RMW Z Z Z Z Z Z Z Z Z Z X X X X X X X X X X Z Z - - - - * * * * * * * * * R * * * * * * * * * * * * * * * * * * * * * * * * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - - * * * * * * * * * * * * * * * * * * - - *1 : 1 cycle in case of eam is Ri/@RWi/@RWi+/@RWi+RW7, 2 cycles in other case. 320 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E APPENDIX APPENDIX B Instruction Lists (351 Instructions) 2 F MC-16FX Family Table B-2 Transfer Instructions (Word, Long Word) : 38 instructions Mnemonic MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW XCHW XCHW XCHW XCHW MOVL MOVL MOVL MOVL MOVL # A, dir A, addr16 A, SP A, RWi A, ear A, eam A, io A, @A A, #imm16 A, @RWi+disp8 A, @RLi+disp8 dir, A addr16, A SP, A RWi, A ear, A eam, A io, A @RWi+disp8, A @RLi+disp8, A RWi, ear RWi, eam ear, RWi eam, RWi RWi, #imm16 io, #imm16 ear, #imm16 eam, #imm16 @AL, AH A, ear A, eam RWi, ear RWi, eam A, ear A, eam A, #imm32 ear, A eam, A 2 3 1 1 2 2+ 2 2 3 2 3 2 3 1 1 2 2+ 2 2 3 2 2+ 2 2+ 3 4 4 4+ 2 2 2+ 2 2+ 2 2+ 5 2 2+ B 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 2 2 2 2 2 2 2 3 / 2*1 1 1 0 0 0 1 1 1 0 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 1 0 2 0 2 0 1 0 0 1 Operation word (A) ←(dir) word (A) ←(addr16) word (A) ←(SP) word (A) ←(RWi) word (A) ←(ear) word (A) ←(eam) word (A) ←(io) word (A) ←((A)) word (A) ←imm16 word (A) ←((RWi)+disp8) word (A) ←((RLi)+disp8) word (dir) ←(A) word (addr16) ←(A) word (SP) ←(A) word (RWi) ←(A) word (ear) ←(A) word (eam) ←(A) word (io) ←(A) word ((RWi)+disp8) ←(A) word ((RLi)+disp8) ←(A) word (RWi) ←(ear) word (RWi) ←(eam) word (ear) ←(RWi) word (eam) ←(RWi) word (RWi) ←imm16 word (io) ←imm16 word (ear) ←imm16 word (eam) ←imm16 word ((A)) ←(AH) word (A) ←→ear word (A) ←→eam word (RWi) ←→ear word (RWi) ←→eam long (A) ←(ear) long (A) ←(eam) long (A) ←imm32 long (ear) ←(A) long (eam) ←(A) LH AH - * * * * * * * * * * - I S T N Z V C RMW - - - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - - *1 : 3 cycle in case of eam is @RWi+, 2 cycles in other case. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 321 APPENDIX APPENDIX B Instruction Lists (351 Instructions) F2MC-16FX Family Table B-3 Addition/Subtraction Instructions (Byte, Word, Long Word) : 42 instructions Mnemonic ADD ADD ADD ADD ADD ADD ADDC ADDC ADDC ADDDC SUB SUB SUB SUB SUB SUB SUBC SUBC SUBC SUBDC ADDW ADDW ADDW ADDW ADDW ADDW ADDCW ADDCW SUBW SUBW SUBW SUBW SUBW SUBW SUBCW SUBCW ADDL ADDL ADDL SUBL SUBL SUBL 322 # A, #imm8 A, dir A, ear A, eam ear, A eam, A A A, ear A, eam A A, #imm8 A, dir A, ear A, eam ear, A eam, A A A, ear A, eam A A A, ear A, eam A, #imm16 ear, A eam, A A, ear A, eam A A, ear A, eam A, #imm16 ear, A eam, A A, ear A, eam A, ear A, eam A, #imm32 A, ear A, eam A, #imm32 2 2 2 2+ 2 2+ 1 2 2+ 1 2 2 2 2+ 2 2+ 1 2 2+ 1 1 2 2+ 3 2 2+ 2 2+ 1 2 2+ 3 2 2+ 2 2+ 2 2+ 5 2 2+ 5 B 1 2 1 2 1 3 1 1 2 2 1 2 1 2 1 3 1 1 2 2 1 1 2 1 1 3 1 2 1 1 2 1 1 3 1 2 2 3 2 2 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 1 0 0 1 0 0 2 0 1 0 1 0 0 1 0 Operation LH AH I byte (A) ←(A) + imm8 byte (A) ←(A) + (dir) byte (A) ←(A) + (ear) byte (A) ←(A) + (eam) byte (ear) ←(ear) + (A) byte (eam) ←(eam) + (A) byte (A) ←(AH) + (AL) + (C) byte (A) ←(A) + (ear) + (C) byte (A) ←(A) + (eam) + (C) byte (A) ←(AH) + (AL) + (C) : decimal byte (A) ←(A) - imm8 byte (A) ←(A) - (dir) byte (A) ←(A) - (ear) byte (A) ←(A) - (eam) byte (ear) ←(ear) - (A) byte (eam) ←(eam) - (A) byte (A) ←(AH) - (AL) - (C) byte (A) ←(A) - (ear) - (C) byte (A) ←(A) - (eam) - (C) byte (A) ←(AH) - (AL) - (C) : decimal word (A) ←(AH) + (AL) word (A) ←(A) + (ear) word (A) ←(A) + (eam) word (A) ←(A) + imm16 word (ear) ←(ear) + (A) word (eam) ←(eam) + (A) word (A) ←(A) + (ear) + (C) word (A) ←(A) + (eam) + (C) word (A) ←(AH) - (AL) word (A) ←(A) - (ear) word (A) ←(A) - (eam) word (A) ←(A) - imm16 word (ear) ←(ear) - (A) word (eam) ←(eam) - (A) word (A) ←(A) - (ear) - (C) word (A) ←(A) - (eam) - (C) long (A) ←(A) + (ear) long (A) ←(A) + (eam) long (A) ←(A) + imm32 long (A) ←(A) - (ear) long (A) ←(A) - (eam) long (A) ←(A) - imm32 FUJITSU MICROELECTRONICS LIMITED Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z - - - S T N Z V C RMW - - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - CM44-00203-3E APPENDIX APPENDIX B Instruction Lists (351 Instructions) 2 F MC-16FX Family Table B-4 Increment/Decrement Instructions (Byte, Word, Long Word) : 12 instructions Mnemonic INC INC DEC DEC INCW INCW DECW DECW INCL INCL DECL DECL # ear eam ear eam ear eam ear eam ear eam ear eam CM44-00203-3E 2 2+ 2 2+ 2 2+ 2 2+ 2 2+ 2 2+ B 1 3 1 3 1 3 1 3 2 4 2 4 0 0 0 0 0 2 0 2 0 2 0 2 Operation byte (ear) ←(ear) + 1 byte (eam) ←(eam) + 1 byte (ear) ←(ear) - 1 byte (eam) ←(eam) - 1 word (ear) ←(ear) + 1 word (eam) ←(eam) + 1 word (ear) ←(ear) - 1 word (eam) ←(eam) - 1 long (ear) ←(ear) + 1 long (eam) ←(eam) + 1 long (ear) ←(ear) - 1 long (eam) ←(eam) - 1 LH AH - FUJITSU MICROELECTRONICS LIMITED - I S T N Z V C RMW - - - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * * * * * * 323 APPENDIX APPENDIX B Instruction Lists (351 Instructions) F2MC-16FX Family Table B-5 Compare Instructions (Byte, Word, Long Word) : 11 instructions Mnemonic CMP CMP CMP CMP CMPW CMPW CMPW CMPW CMPL CMPL CMPL 324 # A A, ear A, eam A, #imm8 A A, ear A, eam A, #imm16 A, ear A, eam A, #imm32 1 2 2+ 2 1 2 2+ 3 2 2+ 5 B 1 1 2 1 1 1 2 1 2 3 2 0 0 0 0 0 0 1 0 0 1 0 Operation byte (AH) - (AL) byte (A) - (ear) byte (A) - (eam) byte (A) - imm8 word (AH) - (AL) word (A) - (ear) word (A) - (eam) word (A) - imm16 long (A) - (ear) long (A) - (eam) long (A) - imm32 LH AH - FUJITSU MICROELECTRONICS LIMITED - I S T N Z V C RMW - - - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - CM44-00203-3E APPENDIX APPENDIX B Instruction Lists (351 Instructions) 2 F MC-16FX Family Table B-6 Unsigned Multiplication/Division Instructions (Word, Long Word) : 11 instructions Mnemonic # B *1 0 DIVU A 1 4/9 DIVU A, ear 2 4 / 9*1 0 DIVU A, eam 2+ 5 / 11*2 0 DIVUW A, ear 2 4 / 17*3 0 DIVUW A, eam 2+ 5 / 19*4 2 MULU MULU MULU MULUW MULUW MULUW A A, ear A, eam A A, ear A, eam 1 2 2+ 1 2 2+ 0 0 0 0 0 1 2 2 3 4 4 5 Operation word (AH) / byte (AL) quotient →byte (AL), remainder →byte (AH) word (A) / byte (ear) quotient →byte (A), remainder →byte (ear) word (A) / byte (eam) quotient →byte (A), remainder →byte (eam) long (A) / word (ear) quotient →word (A), remainder →word (ear) long (A) / word (eam) quotient →word (A), remainder →word (eam) byte (AH) * byte (AL) →word (A) byte (A) * byte (ear) →word (A) byte (A) * byte (eam) →word (A) word (AH) * word (AL) →long (A) word (A) * word (ear) →long (A) word (A) * word (eam) →long (A) LH AH I S T N Z V C RMW - - - - - - - * * - - - - - - - - * * - - - - - - - - * * - - - - - - - - * * - - - - - - - - * * - - - - - - - - - - - *1 : 4 cycles in case of overflow, 9 cycles in other case. *2 : 5 cycles in case of overflow, 11 cycles in other case. *3 : 4 cycles in case of overflow, 17 cycles in other case. *4 : 5 cycles in case of overflow, 19 cycles in other case. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 325 APPENDIX APPENDIX B Instruction Lists (351 Instructions) F2MC-16FX Family Table B-7 Signed Multiplication/Division Instructions (Word, Long Word) : 11 instructions Mnemonic # B *1 DIV A 2 5 / 11 0 DIV A, ear 2 5 / 11*1 0 DIV A, eam 2+ 6 / 13*2 0 DIVW A, ear 2 5 / 19*3 0 DIVW A, eam 2+ 6 / 21*4 2 MUL MUL MUL MULW MULW MULW A A, ear A, eam A A, ear A, eam 2 2 2+ 2 2 2+ 0 0 0 0 0 1 4 4 5 6 6 7 Operation word (AH) / byte (AL) quotient →byte (AL), remainder →byte (AH) word (A) / byte (ear) quotient →byte (A), remainder →byte (ear) word (A) / byte (eam) quotient →byte (A), remainder →byte (eam) long (A) / word (ear) quotient →word (A), remainder →word (ear) long (A) / word (eam) quotient →word (A), remainder →word (eam) byte (AH) * byte (AL) →word (A) byte (A) * byte (ear) →word (A) byte (A) * byte (eam) →word (A) word (AH) * word (AL) →long (A) word (A) * word (ear) →long (A) word (A) * word (eam) →long (A) LH AH I S T N Z V C RMW Z - - - - - - * * - Z - - - - - - * * - Z - - - - - - * * - - - - - - - - * * - - - - - - - - * * - - - - - - - - - - - *1 : 5 cycles in case of overflow, 11 cycles in other case. *2 : 6 cycles in case of overflow, 13 cycles in other case. *3 : 5 cycles in case of overflow, 19 cycles in other case. *4 : 6 cycles in case of overflow, 21 cycles in other case. 326 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E APPENDIX APPENDIX B Instruction Lists (351 Instructions) 2 F MC-16FX Family Table B-8 Logic Instructions (Byte, Word, Long Word) : 45 instructions Mnemonic AND AND AND AND AND OR OR OR OR OR XOR XOR XOR XOR XOR NOT NOT NOT ANDW ANDW ANDW ANDW ANDW ANDW ORW ORW ORW ORW ORW ORW XORW XORW XORW XORW XORW XORW NOTW NOTW NOTW ANDL ANDL ORL ORL XORL XORL # A, #imm8 A, ear A, eam ear, A eam, A A, #imm8 A, ear A, eam ear, A eam, A A, #imm8 A, ear A, eam ear, A eam, A A ear eam A A, #imm16 A, ear A, eam ear, A eam, A A A, #imm16 A, ear A, eam ear, A eam, A A A, #imm16 A, ear A, eam ear, A eam, A A ear eam A, ear A, eam A, ear A, eam A, ear A, eam CM44-00203-3E 2 2 2+ 2 2+ 2 2 2+ 2 2+ 2 2 2+ 2 2+ 1 2 2+ 1 3 2 2+ 2 2+ 1 3 2 2+ 2 2+ 1 3 2 2+ 2 2+ 1 2 2+ 2 2+ 2 2+ 2 2+ B 1 1 2 1 3 1 1 2 1 3 1 1 2 1 3 1 1 3 1 1 1 2 1 3 1 1 1 2 1 3 1 1 1 2 1 3 1 1 3 2 3 2 3 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 1 0 2 0 0 0 1 0 2 0 0 2 0 1 0 1 0 1 Operation byte (A) ←(A) and imm8 byte (A) ←(A) and (ear) byte (A) ←(A) and (eam) byte (ear) ←(ear) and (A) byte (eam) ←(eam) and (A) byte (A) ←(A) or imm8 byte (A) ←(A) or (ear) byte (A) ←(A) or (eam) byte (ear) ←(ear) or (A) byte (eam) ←(eam) or (A) byte (A) ←(A) xor imm8 byte (A) ←(A) xor (ear) byte (A) ←(A) xor (eam) byte (ear) ←(ear) xor (A) byte (eam) ←(eam) xor (A) byte (A) ←not (A) byte (ear) ←not (ear) byte (eam) ←not (eam) word (A) ←(AH) and (A) word (A) ←(A) and imm16 word (A) ←(A) and (ear) word (A) ←(A) and (eam) word (ear) ←(ear) and (A) word (eam) ←(eam) and (A) word (A) ←(AH) or (A) word (A) ←(A) or imm16 word (A) ←(A) or (ear) word (A) ←(A) or (eam) word (ear) ←(ear) or (A) word (eam) ←(eam) or (A) word (A) ←(AH) xor (A) word (A) ←(A) xor imm16 word (A) ←(A) xor (ear) word (A) ←(A) xor (eam) word (ear) ←(ear) xor (A) word (eam) ←(eam) xor (A) word (A) ←not (A) word (ear) ←not (ear) word (eam) ←not (eam) long (A) ←(A) and (ear) long (A) ←(A) and (eam) long (A) ←(A) or (ear) long (A) ←(A) or (eam) long (A) ←(A) xor (ear) long (A) ←(A) xor (eam) LH AH - FUJITSU MICROELECTRONICS LIMITED - I S T N Z V C RMW - - - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R - * * * * * * * * - 327 APPENDIX APPENDIX B Instruction Lists (351 Instructions) F2MC-16FX Family Table B-9 Sign Inversion Instructions (Byte, Word) : 6 instructions Mnemonic NEG NEG NEG NEGW NEGW NEGW 328 # A ear eam A ear eam 1 2 2+ 1 2 2+ 1 1 3 1 1 3 B Operation 0 0 0 0 0 2 byte (A) ←0 - (A) byte (ear) ←0 - (ear) byte (eam) ←0 - (eam) word (A) ←0 - (A) word (ear) ←0 - (ear) word (eam) ←0 - (eam) LH AH I S T N Z V C RMW X - - - - * * * * * * * * * * * * * * * * * * * * * * * * FUJITSU MICROELECTRONICS LIMITED - * * CM44-00203-3E 2 F MC-16FX Family APPENDIX APPENDIX B Instruction Lists (351 Instructions) Table B-10 Shift/Normalization Instructions (Byte, Word, Long Word) : 19 instructions Mnemonic # B RORC RORC RORC ROLC ROLC ROLC ASR LSR LSL ASRW LSRW/SHRW LSLW/SHLW ASRW LSRW LSLW ASRL LSRL LSLL A ear eam A ear eam A, R0 A, R0 A, R0 A A A A, R0 A, R0 A, R0 A, R0 A, R0 A, R0 2 2 2+ 2 2 2+ 2 2 2 1 1 1 2 2 2 2 2 2 1 1 3 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NRML A, R0 2 1 0 CM44-00203-3E Operation byte (A) ←Right rotation of (A) with carry byte (ear) ←Right rotation of (ear) with carry byte (eam) ←Right rotation of (eam) with carry byte (A) ←Left rotation of (A) with carry byte (ear) ←Right rotation of (ear) with carry byte (eam) ←Right rotation of (eam) with carry byte (A) ←Arithmetic right barrel shift of (A) , (R0) bits byte (A) ←Logical right barrel shift of (A) , (R0) bits byte (A) ←Logical left barrel shift of (A) , (R0) bits word (A) ←Arithmetic right shift of (A) , 1 bit word (A) ←Logical right shift of (A) , 1 bits word (A) ←Logical left shift of (A) , 1 bits word (A) ←Arithmetic right barrel shift of (A) , (R0) bits word (A) ←Logical right barrel shift of (A) , (R0) bits word (A) ←Logical left barrel shift of (A) , (R0) bits long (A) ←Arithmetic right barrel shift of (A) , (R0) bits long (A) ←Logical right barrel shift of (A) , (R0) bits long (A) ←Logical left barrel shift of (A) , (R0) bits long (A) ←Shift left (A) until the MSB is "1" byte (R0) ←Shift count (the first "1" bit position) FUJITSU MICROELECTRONICS LIMITED LH AH I S T N Z V C RMW - - - - * * * * * * * * - * * * * * * * * * * R * * * * * * * * * * * * * * * * * * * * * * * * * - * * * * * * * * * * * * * * * * * * * * - - - - - - - * - - - 329 APPENDIX APPENDIX B Instruction Lists (351 Instructions) F2MC-16FX Family Table B-11 Branch Instructions 1 : 31 instructions Mnemonic # B BZ/BEQ BNZ/BNE BC/BLO BNC/BHS BN BP BV BNV BT BNT BLT BGE BLE BGT BLS BHI BRA JMP JMP JMP JMP JMPP JMPP JMPP rel rel rel rel rel rel rel rel rel rel rel rel rel rel rel rel rel @A addr16 @ear @eam @ear @eam addr24 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 3 2 2+ 2 2+ 4 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 3 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 CALL @ear 2 3 1 CALL @eam 2+ 5 1+1*a CALL addr16 3 3 1 CALLV #vct4 1 5 1 CALLP @ear 2 5 2 CALLP @eam 2+ 7 2+1*b CALLP addr24 4 4 2 Operation Branch on (Z) = 1 Branch on (Z) = 0 Branch on (C) = 1 Branch on (C) = 0 Branch on (N) = 1 Branch on (N) = 0 Branch on (V) = 1 Branch on (V) = 0 Branch on (T) = 1 Branch on (T) = 0 Branch on (V) xor (N) = 1 Branch on (V) xor (N) = 0 Branch on ((V) xor (N)) or (Z) = 1 Branch on ((V) xor (N)) or (Z) = 0 Branch on (C) or (Z) = 1 Branch on (C) or (Z) = 0 Branch always (Unconditional branch) word (PC) ←(A) word (PC) ←addr16 word (PC) ←(ear) word (PC) ←(eam) word (PC) ←(ear), (PCB) ←(ear+2) word (PC) ←(eam), (PCB) ←(eam+2) word (PC) ←ad24 0-15, (PCB) ←ad24 16-23 word (SP) ←(SP)-2, ((SP)) ←(PC)+2 word (PC) ←(ear) word (SP) ←(SP)-2, ((SP)) ←(PC)+ 2+ word (PC) ←(eam) word (SP) ←(SP)-2, ((SP)) ←(PC)+3 word (PC) ←addr16 word (SP) ←(SP)-2, ((SP)) ←(PC)+1 word (PC) ←(vecter_address) word (SP) ←(SP)-2, ((SP)) ←(PCB) word (SP) ←(SP)-2, ((SP)) ←(PC)+2 word (PC) ←(ear), (PCB) ←(ear+2) word (SP) ←(SP)-2, ((SP)) ←(PCB) word (SP) ←(SP)-2, ((SP)) ←(PC)+ 2+ word (PC) ←(eam), (PCB) ←(eam+2) word (SP) ←(SP)-2, ((SP)) ←(PCB) word (SP) ←(SP)-2, ((SP)) ←(PC)+4 word (PC) ←ad24 0-15, (PCB) ←ad24 16-23 LH AH I S T N Z V C RMW - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *a : compensation value: +1 for odd stack, +1 for odd operand address *b : compensation value +2 for odd stack, +1 for odd operand address. 330 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E APPENDIX APPENDIX B Instruction Lists (351 Instructions) 2 F MC-16FX Family Table B-12 Branch Instructions 2 : 19 instructions Mnemonic CBNE CWBNE CBNE CBNE CWBNE CWBNE DBNZ DBNZ DWBNZ DWBNZ INT INT INTP INT9 INTE # A, #imm8, rel A, #imm16, rel ear, #imm8, rel eam, #imm8, rel ear, #imm16, rel eam, #imm16, rel ear, rel eam, rel ear, rel eam, rel #vct8 addr16 addr24 RETI LINK #imm8 B 3 4 4 4+ 5 5+ 3 3+ 3 3+ 2 3 4 1 1 5 5 4 5 5 6 5 6 5 6 11 8 8 11 12 0 0 0 0 0 1 0 0 0 2 6 6 6 6 6 1 22 / 6*1 1 2 2 1 UNLINK 1 1 1 RET 1 4 1 RETP 1 5 1 Operation LH AH I S T N Z V C RMW Branch on byte (A) not equal to imm8 Branch on word (A) not equal to imm16 Branch on byte (ear) not equal to imm8 Branch on byte (eam) not equal to imm8 Branch on word (ear) not equal to imm16 Branch on word (eam) not equal to imm16 byte (ear) ←(ear) - 1, Branch on (ear) not equal to 0 byte (eam) ←(eam) - 1, Branch on (eam) not equal to 0 word (ear) ←(ear) - 1, Branch on (ear) not equal to 0 word (eam) ←(eam) - 1, Branch on (eam) not equal to 0 Software interrupt Software interrupt Software interrupt Software interrupt Software interrupt for break point (reserved for emulator) - - R R R R R S S S S S - * * * * * * * * * * - * * * * * * * * * * - * * * * * * * * * * - * * * * * * - * * - Return from interrupt - - * * * * * * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - word (SP) ←(SP) - 2, ((SP)) ←(RW3), word (RW3) ←(SP), (SP) ←(SP) - imm8 word (SP) ←(RW3), (RW3) ←((SP)), word (SP) ←(SP) + 2 word (PC) ←((SP)), (SP) ←(SP) + 2 word (PC) ←((SP)), (SP) ←(SP) + 2, byte (PCB) ←((SP)), (SP) ←(SP) + 2 *1 : 6 cycles in case of RP stable, 22 cycles in other case. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 331 APPENDIX APPENDIX B Instruction Lists (351 Instructions) F2MC-16FX Family Table B-13 Other Control Instructions (Byte, Word, Long Word) : 28 instructions Mnemonic # B Operation LH AH I S T N Z V C RMW - - - - - A AH PS 1 1 1 1 1 1 1 1 1 word (SP) ←(SP) - 2, ((SP)) ←(A) word (SP) ←(SP) - 2, ((SP)) ←(AH) word (SP) ←(SP) - 2, ((SP)) ←(PS) PUSHW rlst 2 - - - - - - - - - 1 1 N*a 1 1 - A AH N*1 1 1 multi word (SP) ←(SP) - 2n, ((SP)) ←(rlst) POPW POPW word (A) ←((SP)), (SP) ←(SP) + 2 word (AH) ←((SP)), (SP) ←(SP) + 2 - * - - - - - - - - - POPW PS 1 18 / 4*2 1 POPW rlst 2 JCTX AND OR MOV MOV MOVEA MOVEA MOVEA MOVEA ADDSP ADDSP MOV MOV NOP ADB DTB PCB SPB NCC CMR @A CCR, #imm8 CCR, #imm8 RP, #imm8 ILM, #imm8 RWi, ear RWi, eam A, ear A, eam #imm8 #imm16 A, brg1 brg2, A 1 2 2 2 2 2 2+ 2 2+ 2 3 2 2 1 1 1 1 1 1 1 N*1 22 / 6*3 1 1 19 / 4*2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 N*a 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 PUSHW PUSHW PUSHW - - - - - word (PS) ←((SP)), (SP) ←(SP) + 2 - - * * * * * * * - multi word (rlst) ←((SP)), (SP) ←(SP) + 2n - - - - - - - - - - Context switch byte (CCR) ←(CCR) and imm8 byte (CCR) ←(CCR) or imm8 byte (RP) ←imm8 byte (ILM) ←imm8 word (RWi) ←ear word (RWi) ←eam word (A) ←ear word (A) ←eam word (SP) ←(SP) + ext(imm8) word (SP) ←(SP) + imm16 byte (A) ←(brg1) byte (brg2) ←(A) No operation Prefix code for AD space access Prefix code for DT space access Prefix code for PC space access Prefix code for SP space access Prefix code for flags no change Prefix code for common register bank Z - * * * - * * * - * * * - * * * - * * * * * - * * * * * - * * * - * * * - - *1 : N depends on number of registers to be saved/restored, minimum 1 cycle *2 : 4 cycles in case of RP stable, 18 cycles in other case *3 : 6 cycles in case of RP stable, 22 cycles in other case *a : N depends on number of registers to be saved 332 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E APPENDIX APPENDIX B Instruction Lists (351 Instructions) 2 F MC-16FX Family Table B-14 Bit Operation Instructions : 21 instructions S T N Z V C RMW MOVB MOVB MOVB MOVB MOVB MOVB SETB SETB SETB CLRB CLRB CLRB BBC BBC BBC BBS BBS BBS SBBS Mnemonic A, dir:bp A, addr16:bp A, io:bp dir:bp, A addr16:bp, A io:bp, A dir:bp addr16:bp io:bp dir:bp addr16:bp io:bp dir:bp, rel addr16:bp, rel io:bp, rel dir:bp, rel addr16:bp, rel io:bp, rel addr16:bp, rel # 3 4 3 3 4 3 3 4 3 3 4 3 4 5 4 4 5 4 5 1 1 1 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 byte (A) ←(dir:bp) b byte (A) ←(addr16:bp) b byte (A) ←(io:bp) b bit (dir:bp) b ←(A) bit (addr16:bp) b ←(A) bit (io:bp) b ←(A) bit (dir:bp) b ←1 bit (addr16:bp) b ←1 bit (io:bp) b ←1 bit (dir:bp) b ←0 bit (addr16:bp) b ←0 bit (io:bp) b ←0 Branch on (dir:bp) b = 0 Branch on (addr16:bp) b = 0 Branch on (io:bp) b = 0 Branch on (dir:bp) b = 1 Branch on (addr16:bp) b = 1 Branch on (io:bp) b = 1 Branch on (addr16:bp) b = 1, bit (addr16:bp) b ←1 Operation LH AH I Z Z Z - * * * - - - - * * * * * * - * * * * * * * * * * * * * - - * * * * * * * * * * WBTS io:bp 3 undefined*1 0 Wait until (io:bp) b = 1 - - - - - - - - - - WBTC io:bp 3 undefined*2 0 Wait until (io:bp) b = 0 - - - - - - - - - - *1 : 4 cycles if the bit is set already. In other case, the cycle is undefined. *2 : 4 cycles if the bit is cleared already. In other case, the cycle is undefined. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 333 APPENDIX APPENDIX B Instruction Lists (351 Instructions) F2MC-16FX Family Table B-15 Accumulator Instructions (Byte, Word) : 6 instructions Mnemonic SWAP SWAPW EXT EXTW ZEXT ZEXTW 334 # 1 1 1 1 1 1 B 1 1 1 1 1 1 0 0 0 0 0 0 Operation byte (A) 0-7 ←→(A) 8-15 word (AH) ←→(AL) Byte sign extension Word sign extension Byte zero extension Word zero extension LH AH I S T N Z V C RMW X Z - - - * * R R * * * * - - - FUJITSU MICROELECTRONICS LIMITED * X Z - CM44-00203-3E APPENDIX APPENDIX B Instruction Lists (351 Instructions) 2 F MC-16FX Family Table B-16 String Instructions : 10 instructions Mnemonic # S T N Z V C 1 byte transfer @AH+ ←@AL+, (RW0) times - - - - - - - - - - 2 RW0*2 2*RW0 0 byte transfer @AH- ←@AL-, (RW0) times - - - - - - - - - - brg3 2 2+2*N*3 0 byte search @AH+ = AL, (RW0) times or till match - - - - - * * * * - SCEQD brg3 2 2+2*N*3 0 byte search @AH- = AL, (RW0) times or till match - - - - - * * * * - FILS/FILSI brg3 2 1 byte fill @AH+ ←AL, (RW0) times - - - - - * * - - - 1 word transfer @AH+ ←@AL+, (RW0) times - - - - - - - - - - - - - - - - - - - - - - - - - * * * * - MOVS/MOVSI brg3, brg3 2 MOVSD brg3, brg3 SCEQ/SCEQI B Operation LH AH I RMW MOVSW/MOVSWI brg3, brg3 2 RW0/2*4 2*RW0 MOVSWD brg3, brg3 2 2*RW0 SCWEQ/SCWEQI brg3 2 2+2*N*3 N*b word search @AH+ = AL, (RW0) times or till match SCWEQD brg3 2 - - - - * * * * - 2 N*b 1 - brg3 2+2*N*3 RW0 word search @AH- = AL, (RW0) times or till match FILSW/FILSWI word fill @AH+ ←AL, (RW0) times - - - - - * * - - - (1+1)*RW0*a word transfer @AH- ←@AL-, (RW0) times *1 : All String operations need 1 cycle if RW0=0. *2 : 2*RW0 cycles if overlapping ranges, optimization can not be done. *3 : 1 cycle if RW0=0, 3 cycles if RW0=1, N is number of items compared till match occurs. *4 : The number of cycle is round up in case of odd number of bytes. *a : Correction is 2*RW0 if both src and dest address is odd, 1*RW0 if only src or dest is odd. *b : N is number of items compared till match occurs. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 335 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family APPENDIX C Instruction Maps This appendix describes F2MC-16FX CPU instruction maps. C.1 Structure of the Instruction Map C.2 Basic Page Map C.3 Bit Operation Instruction Map C.4 Character String Operation Instruction Map C.5 2-byte Instruction Map C.6 ea-type Instruction Map C.7 MOVEA RWi, ea Instruction Map C.8 MOV Ri, ea Instruction Map C.9 MOVW RWi, ea Instruction Map C.10 MOV ea, Ri Instruction Map C.11 MOVW ea, RWi Instruction Map C.12 XCH Ri, ea Instruction Map C.13 XCHW RWi, ea Instruction Map 336 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E APPENDIX APPENDIX C Instruction Maps 2 F MC-16FX Family C.1 Structure of the Instruction Map The instruction code of the F2MC-16FX CPU consists of one- and two-byte instructions. The instruction map consists of more than one page that can be used for one- and two- byte instructions. ■ Structure of the Instruction Map Figure C.1-1 shows the structure of the instruction map. Figure C.1-1 Structure of the F2MC-16FX CPU Instruction Map Basic page map Bit operation instruction Character string operation instruction 2-byte instructions : First byte ea-type instruction × 9 : Second byte The instruction code is described on the basic page map for one-byte instructions (such as the NOP instruction). For two-byte instructions (such as the MOVS instruction), see the basic page map to find the name of the map that describes the second byte of the instruction code to be referenced next. Figure C.1-2 shows the relationship between actual instruction codes and instruction maps. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 337 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Figure C.1-2 Relationship Between Actual Instruction Codes and Instruction Maps May not exist for some instruction. The length varies depending on instructions. Instruction code First byte Second byte Operand Operand ... [Basic page map] XY +Z [Extended page map]* UV +W *: Extended page map is a generic name for bit operation instruction, character string operation instruction, 2-byte instruction, and ea-type instruction. More than one extended page map exists for each type of instruction. 338 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E 2 F MC-16FX Family C.2 Basic Page Map APPENDIX APPENDIX C Instruction Maps Table C.2-1 shows the basic page map. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 339 340 JCTX @A NEG LINK SPB ADB DTB PCB FUJITSU MICROELECTRONICS LIMITED SWAPW ADDSP #imm16 ASRW +E A LSRW +F A +D EXTW LSLW +C A ZEXTW CMPL A, #imm32 NEGW +B A INTE MOV ILM, #imm8 MULUW A XORW A ORW A ANDW A CMPW A CBNE A, #imm8, rel SUBW A ADDW A ADDL A, #imm32 SUBL A, #imm32 MULU A DIVU A OR CCR, #imm8 AND CCR, #imm8 CMP A ADDC A SUB A, dir ADD A, dir 20 ADDSP #imm8 SWAP ZEXT MOV +A RP, #imm8 +9 UNLINK +8 #imm8 +7 +6 +5 +4 +3 A EXT SUBDC A NCC CMR 10 ADDDC INT9 NOP +2 A +1 +0 00 MOVW dir, A MOVW A, dir MOVW SP, A MOVW A, SP MOVX A, dir MOV dir, #imm8 MOVX A, #imm8 MOV A, #imm8 MOV dir, A MOV A, dir 40 NOTW A XORW A, #imm16 ORW A, #imm16 ANDW A, #imm16 CMPW A, #imm16 PUSHW rlst PUSHW PS PUSHW AH PUSHW A MOVL A, #imm32 CWBNE MOVW A, A, #imm16, rel #imm16 SUBW A, #imm16 ADDW A, #imm16 NOT A XOR A, #imm8 OR A, #imm8 AND A, #imm8 CMP A, #imm8 SUBC A SUB A, #imm8 ADD A, #imm8 30 POPW rlst POPW PS POPW AH POPW A MOVW addr16, A MOVW A, addr16 MOVW io, A MOVW A, io MOVX A, addr16 MOVW io, #imm16 MOVX A, io MOV io, #imm8 MOV addr16, A MOV A, addr16 MOV io, A MOV A, io 50 ea MOVW RW2, A MOVW RW3, A MOVW RW4, A MOVW A, RW2 MOVW A, RW3 MOVW A, RW4 instruction instruction instruction XCHW RWi, ea instruction instruction 2-byte instruction XCH Ri, ea String operation instruction MOVW ea, RWi MOV ea, Ri instruction MOVW RWi, ea instruction MOV Ri, ea instruction MOVW RW5, A MOVW RW6, A MOVW RW7, A MOVW A, RW5 MOVW A, RW6 MOVW A, RW7 A, RW1 MOVW RW1, A MOVEA RWi, ea MOVW MOV R7, A MOV R6, A MOV R5, A MOV R4, A MOV R3, A MOV R2, A MOV R1, A MOV R0, A 90 MOVW RW0, A MOV A, R7 MOV A, R6 MOV A, R5 MOV A, R4 MOV A, R3 MOV A, R2 MOV A, R1 MOV A, R0 80 MOVW A, RW0 instruction 9 ea instruction 8 ea instruction 7 ea instruction 6 ea instruction 5 ea instruction 4 ea instruction 3 ea instruction 2 ea instruction 1 70 Bit operation RETI INTP addr24 INT addr16 INT #vct8 RET RETP CALLP addr24 CALL addr16 JMPP addr24 JMP addr16 JMP @A BRA rel 60 MOVW RW7, #imm16 MOVW RW6, #imm16 MOVW RW5, #imm16 MOVW RW4, #imm16 MOVW RW3, #imm16 MOVW RW2, #imm16 MOVW RW1, #imm16 MOVW RW0, #imm16 MOV R7, #imm8 MOV R6, #imm8 MOV R5, #imm8 MOV R4, #imm8 MOV R3, #imm8 MOV R2, #imm8 MOV R1, #imm8 MOV R0, #imm8 A0 D0 MOVN A, #imm4 MOVN A, #imm4 A @RW7+disp8 #imm4 @RW7+disp8, A, MOVW A, MOVN #imm4 A @RW6+disp8 MOVW @RW6+disp8, A, MOVW A, MOVN #imm4 A @RW5+disp8 MOVW @RW5+disp8, A, MOVW A, MOVN #imm4 A @RW4+disp8 MOVW @RW4+disp8, A, MOVW A, MOVN #imm4 A @RW3+disp8 MOVW @RW3+disp8, A, MOVW A, MOVN #imm4 A @RW2+disp8 MOVW @RW2+disp8, A, MOVW A, MOVN #imm4 A MOVW @RW1+disp8, A, @RW1+disp8 MOVN #imm4 MOVW A, MOVW A @RW0+disp8 MOVN @RW0+disp8, A, MOVW MOVN A, @RW7+disp8 #imm4 MOVX A MOVN A, @RW6+disp8 #imm4 MOVX A @RW5+disp8 MOVX A MOVN A, @RW4+disp8 #imm4 MOVX A MOVN A, @RW3+disp8 #imm4 MOVX A MOVN A, @RW2+disp8 #imm4 MOVX A @RW1+disp8 MOVX A MOVN A, @RW0+disp8 #imm4 MOVX A C0 MOVW A, MOVX A, R7 MOVX A, R6 MOVX A, R5 MOVX A, R4 MOVX A, R3 MOVX A, R2 MOVX A, R1 MOVX A, R0 B0 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 CALLV #vct4 E0 BHI rel BLS rel BGT rel BLE rel BGE rel BLT rel BNT rel BT rel BNV rel BV rel BP rel BN rel BNC/BHS rel BC/BLO rel BNZ/BNE rel BZ/BEQ rel F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.2-1 Basic Page Map CM44-00203-3E 2 F MC-16FX Family C.3 Bit Operation Instruction Map APPENDIX APPENDIX C Instruction Maps Table C.3-1 shows the bit operation instruction map. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 341 342 MOVB ip:bp, A MOVB ip:bp, A MOVB ip:bp, A MOVB ip:bp, A MOVB ip:bp, A MOVB ip:bp, A MOVB dir:bp, A MOVB A, addr16:bp MOVB A, addr16:bp MOVB A, addr16:bp MOVB A, addr16:bp MOVB A, addr16:bp MOVB MOVB MOVB MOVB MOVB MOVB MOVB MOVB MOVB FUJITSU MICROELECTRONICS LIMITED MOVB MOVB MOVB A, addr16:bp MOVB A, addr16:bp MOVB A, addr16:bp MOVB MOVB CM44-00203-3E dir:bp +F A, dir:bp +E A, dir:bp +D A, MOVB dir:bp +C A, dir:bp +B A, dir:bp +A A, dir:bp +9 A, dir:bp +8 A, io:bp +7 A, io:bp +6 A, io:bp +5 A, io:bp +4 A, io:bp +3 A, io:bp +2 A, io:bp MOVB dir:bp, A MOVB dir:bp, A MOVB dir:bp, A MOVB dir:bp, A MOVB dir:bp, A MOVB dir:bp, A MOVB dir:bp, A MOVB ip:bp, A +1 A, io:bp +0 A, MOVB 20 MOVB ip:bp, A 10 MOVB 00 MOVB addr16:bp MOVB addr16:bp MOVB addr16:bp MOVB addr16:bp MOVB addr16:bp MOVB addr16:bp MOVB addr16:bp MOVB addr16:bp 30 CLRB dir:bp CLRB dir:bp CLRB dir:bp CLRB dir:bp CLRB dir:bp CLRB dir:bp CLRB dir:bp CLRB dir:bp CLRB io:bp CLRB io:bp CLRB io:bp CLRB io:bp CLRB io:bp CLRB io:bp CLRB io:bp CLRB io:bp 40 CLRB addr16:bp CLRB addr16:bp CLRB addr16:bp CLRB addr16:bp CLRB addr16:bp CLRB addr16:bp CLRB addr16:bp CLRB addr16:bp 50 SETB dir:bp SETB dir:bp SETB dir:bp SETB dir:bp SETB dir:bp SETB dir:bp SETB dir:bp SETB dir:bp SETB io:bp SETB io:bp SETB io:bp SETB io:bp SETB io:bp SETB io:bp SETB io:bp SETB io:bp 60 SETB addr16:bp SETB addr16:bp SETB addr16:bp SETB addr16:bp SETB addr16:bp SETB addr16:bp SETB addr16:bp SETB addr16:bp 70 BBC dir:bp, rel BBC dir:bp, rel BBC dir:bp, rel BBC dir:bp, rel BBC dir:bp, rel BBC dir:bp, rel BBC dir:bp, rel BBC dir:bp, rel BBC ip:bp, rel BBC ip:bp, rel BBC ip:bp, rel BBC ip:bp, rel BBC ip:bp, rel BBC ip:bp, rel BBC ip:bp, rel BBC ip:bp, rel 80 BBS io:bp, rel BBS io:bp, rel BBS io:bp, rel BBS io:bp, rel BBS io:bp, rel BBS io:bp, rel BBS io:bp, rel BBS io:bp, rel A0 BBC BBS addr16:bp, dir:bp, rel rel BBC BBS addr16:bp, dir:bp, rel rel BBC BBS addr16:bp, dir:bp, rel rel BBC BBS addr16:bp, dir:bp, rel rel BBC BBS addr16:bp, dir:bp, rel rel BBC BBS addr16:bp, dir:bp, rel rel BBC BBS addr16:bp, dir:bp, rel rel BBC BBS addr16:bp, dir:bp, rel rel 90 BBS addr16:bp, rel BBS addr16:bp, rel BBS addr16:bp, rel BBS addr16:bp, rel BBS addr16:bp, rel BBS addr16:bp, rel BBS addr16:bp, rel BBS addr16:bp, rel B0 WBTS io:bp WBTS io:bp WBTS io:bp WBTS io:bp WBTS io:bp WBTS io:bp WBTS io:bp WBTS io:bp C0 D0 WBTC io:bp WBTC io:bp WBTC io:bp WBTC io:bp WBTC io:bp WBTC io:bp WBTC io:bp WBTC io:bp E0 SBBS addr16:bp, rel SBBS addr16:bp, rel SBBS addr16:bp, rel SBBS addr16:bp, rel SBBS addr16:bp, rel SBBS addr16:bp, rel SBBS addr16:bp, rel SBBS addr16:bp, rel F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.3-1 Bit Operation Instruction Map (First Byte = 6CH) 2 APPENDIX APPENDIX C Instruction Maps F MC-16FX Family C.4 Character String Operation Instruction Map Table C.4-1 shows the character string operation instruction map. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 343 344 MOVSD PCB, PCB MOVSD PCB, DTB MOVSD PCB, ADB MOVSD PCB, SPB MOVSD DTB, PCB MOVSD DTB, DTB MOVSD DTB, ADB MOVSD DTB, SPB MOVSD ADB, PCB MOVSD ADB, DTB MOVSD ADB, ADB MOVSD ADB, SPB MOVSD SPB, PCB MOVSI MOVSI MOVSI MOVSI MOVSI MOVSI MOVSI MOVSI MOVSI MOVSI MOVSI FUJITSU MICROELECTRONICS LIMITED MOVSI MOVSI MOVSD SPB, DTB MOVSD SPB, ADB MOVSD SPB, SPB MOVSI MOVSI CM44-00203-3E SPB +F SPB, ADB +E SPB, DTB +D SPB, MOVSI PCB +C SPB, SPB +B ADB, ADB +A ADB, DTB +9 ADB, PCB +8 ADB, SPB +7 DTB, ADB +6 DTB, DTB +5 DTB, PCB +4 DTB, SPB +3 PCB, ADB +2 PCB, DTB +1 PCB, PCB +0 PCB, 10 00 MOVSWI SPB, SPB MOVSWI SPB, ADB MOVSWI SPB, DTB MOVSWI SPB, PCB MOVSWI ADB, SPB MOVSWI ADB, ADB MOVSWI ADB, DTB MOVSWI ADB, PCB MOVSWI DTB, SPB MOVSWI DTB, ADB MOVSWI DTB, DTB MOVSWI DTB, PCB MOVSWI PCB, SPB MOVSWI PCB, ADB MOVSWI PCB, DTB MOVSWI PCB, PCB 20 MOVSWD SPB, SPB MOVSWD SPB, ADB MOVSWD SPB, DTB MOVSWD SPB, PCB MOVSWD ADB, SPB MOVSWD ADB, ADB MOVSWD ADB, DTB MOVSWD ADB, PCB MOVSWD DTB, SPB MOVSWD DTB, ADB MOVSWD DTB, DTB MOVSWD DTB, PCB MOVSWD PCB, SPB MOVSWD PCB, ADB MOVSWD PCB, DTB MOVSWD PCB, PCB 30 40 50 60 70 SCEQI SPB SCEQI ADB SCEQI DTB SCEQI PCB 80 SCEQD SPB SCEQD ADB SCEQD DTB SCEQD PCB 90 SCWEQI SPB SCWEQI ADB SCWEQI DTB SCWEQI PCB A0 SCWEQD SPB SCWEQD ADB SCWEQD DTB SCWEQD PCB B0 FILSI SPB FILSI ADB FILSI DTB FILSI PCB C0 D0 FILSWI SPB FILSWI ADB FILSWI DTB FILSWI PCB E0 F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.4-1 Character String Operation Instruction Map (First Byte = 6EH) 2 F MC-16FX Family C.5 2-byte Instruction Map APPENDIX APPENDIX C Instruction Maps Table C.5-1 shows the 2-byte instruction map. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 345 346 MOV SSB, A MOV USB, A MOV DPR, A MOV @AL, AH MOVX A, @A RORC A MOV MOV MOV MOV MOV ROLC FUJITSU MICROELECTRONICS LIMITED LSLW MOVW @AL, AH ASRL A, R0 LSRL A, R0 ASRW LSRW CM44-00203-3E R0 +F A, R0 +E A, @A +D A, MOVW R0 +C A, +B +A +9 +8 +7 A PCB +6 A, @A +5 A, DPR +4 A, USB +3 A, SSB +2 A, ADB LSLL A, R0 MOV ADB, A MOV +1 A, DTB +0 A, MOV DTB, A 10 MOV 00 MOV 30 MOV 40 MOV MOV MOV MOV MOV MOV LSR A, R0 ASR A, R0 NRML A, R0 LSL A, R0 MOVW MOVW MOVW MOVW @RL3+disp8, A, @RL3+disp8 A MOVW @RL2+disp8, A, @RL2+disp8 A MOVW @RL1+disp8, A, @RL1+disp8 A MOVW @RL0+disp8, A, @RL0+disp8 A MOVW @RL3+disp8, A, @RL3+disp8 A @RL3+disp8 MOVX A, @RL2+disp8, A, A, @RL2+disp8 A @RL2+disp8 MOVX @RL1+disp8, A, @RL1+disp8 A @RL1+disp8 MOVX A, @RL0+disp8, A, A, @RL0+disp8 A @RL0+disp8 MOVX 20 50 60 DIV A MULW A MUL A 70 80 90 A0 B0 C0 D0 E0 F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.5-1 2-byte Instruction Map (First Byte = 6FH) 2 F MC-16FX Family C.6 ea-type Instruction Map APPENDIX APPENDIX C Instruction Maps ea-type instruction maps (first byte = 70H to first byte = 78H) are shown in the following nine tables: • Table C.6-1 for ea-type instruction (1) (first byte = 70H) • Table C.6-2 for ea-type instruction (2) (first byte = 71H) • Table C.6-3 for ea-type instruction (3) (first byte = 72H) • Table C.6-4 for ea-type instruction (4) (first byte = 73H) • Table C.6-5 for ea-type instruction (5) (first byte = 74H) • Table C.6-6 for ea-type instruction (6) (first byte = 75H) • Table C.6-7 for ea-type instruction (7) (first byte = 76H) • Table C.6-8 for ea-type instruction (8) (first byte = 77H) • Table C.6-9 for ea-type instruction (9) (first byte = 78H) CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 347 348 RL0 20 FUJITSU MICROELECTRONICS LIMITED SUBL A, @RW1+disp8 RL0 ADDL A, SUBL A, @RW2+disp8 RL1 ADDL A, SUBL A, @RW3+disp8 RL1 ADDL A, SUBL A, @RW4+disp8 RL2 ADDL A, SUBL A, @RW5+disp8 RL2 ADDL A, SUBL A, @RW6+disp8 RL3 ADDL A, SUBL A, @RW7+disp8 RL3 ADDL A, SUBL A, @RW0+disp16 @RW0 ADDL A, SUBL A, @RW1+disp16 @RW1 ADDL A, SUBL A, @RW2+disp16 @RW2 ADDL A, SUBL A, @RW3+disp16 @RW3 ADDL A, ADDL +2 A, RL1 ADDL +3 A, RL1 ADDL +4 A, RL2 ADDL +5 A, RL2 ADDL +6 A, RL3 ADDL +7 A, RL3 ADDL +8 A, @RW0 ADDL +9 A, @RW1 ADDL +A A, @RW2 ADDL +B A, @RW3 ADDL +C A, @RW0+ SUBL A, @RW1+RW7 @RW1+ ADDL A, SUBL A, @PC+disp16 @RW2+ ADDL A, addr16 ADDL +E A, @RW2+ ADDL +F A, @RW3+ SUBL A, @RW3+ ADDL A, ADDL +D A, @RW1+ SUBL A, @RW0+RW7 @RW0+ ADDL A, ADDL +1 A, RL0 SUBL A, ADDL A, +0 A, @RW0+disp8 RL0 10 ADDL 00 CWBNE RW0, 40 CWBNE RW1, CWBNE RW2, CWBNE RW3, CWBNE RW4, CWBNE RW5, CWBNE RW6, CWBNE RW7, CWBNE @RW0, CWBNE @RW1, CWBNE @RW2, CWBNE @RW3, CWBNE @RW0+, CWBNE @RW1+, CWBNE @RW2+, SUBL A, addr16 CWBNE addr16, #imm16, rel #imm16, rel CMPL A, @RW3+ CMPL @PC+disp16, A, #imm16, rel @RW2+ CWBNE CMPL @RW1+RW7, A, #imm16, rel @RW1+ CWBNE CMPL @RW0+RW7, A, #imm16, rel @RW0+ CWBNE CMPL @RW3+disp16, A, #imm16, rel @RW3 CWBNE CMPL @RW2+disp16, A, #imm16, rel @RW2 CWBNE CMPL @RW1+disp16, A, #imm16, rel @RW1 CWBNE CMPL @RW0+disp16, A, #imm16, rel @RW0 CWBNE CMPL @RW7+disp8, A, #imm16, rel RL3 CWBNE CMPL @RW6+disp8, A, #imm16, rel RL3 CWBNE CMPL @RW5+disp8, A, #imm16, rel RL2 CWBNE CMPL @RW4+disp8, A, #imm16, rel RL2 CWBNE CMPL @RW3+disp8, A, #imm16, rel RL1 CWBNE CMPL @RW2+disp8, A, #imm16, rel RL1 CWBNE CMPL @RW1+disp8, A, #imm16, rel RL0 CWBNE 60 CMPL @RW0+disp8, A, #imm16, rel RL0 CWBNE 50 CWBNE @RW3+, @PC+disp16 #imm16, rel SUBL A, @RW1+RW7 #imm16, rel SUBL A, @RW0+RW7 #imm16, rel SUBL A, @RW3+disp16 #imm16, rel SUBL A, @RW2+disp16 #imm16, rel SUBL A, @RW1+disp16 #imm16, rel SUBL A, @RW0+disp16 #imm16, rel SUBL A, @RW7+disp8 #imm16, rel SUBL A, @RW6+disp8 #imm16, rel SUBL A, @RW5+disp8 #imm16, rel SUBL A, @RW4+disp8 #imm16, rel SUBL A, @RW3+disp8 #imm16, rel SUBL A, @RW2+disp8 #imm16, rel SUBL A, @RW1+disp8 #imm16, rel SUBL A, @RW0+disp8 #imm16, rel SUBL A, 30 CMPL A, addr16 ANDL A, @RW3+ ANDL A, @PC+disp16 @RW2+ CMPL A, ANDL A, @RW1+RW7 @RW1+ CMPL A, ANDL A, @RW0+RW7 @RW0+ CMPL A, ANDL A, @RW3+disp16 @RW3 CMPL A, ANDL A, @RW2+disp16 @RW2 CMPL A, ANDL A, @RW1+disp16 @RW1 CMPL A, ANDL A, @RW0+disp16 @RW0 CMPL A, ANDL A, @RW7+disp8 RL3 CMPL A, ANDL A, @RW6+disp8 RL3 CMPL A, ANDL A, @RW5+disp8 RL2 CMPL A, ANDL A, @RW4+disp8 RL2 CMPL A, ANDL A, @RW3+disp8 RL1 CMPL A, ANDL A, @RW2+disp8 RL1 CMPL A, ANDL A, @RW1+disp8 RL0 CMPL A, 80 ANDL A, @RW0+disp8 RL0 CMPL A, 70 ANDL A, addr16 ORL A, @RW3+ ORL A, @PC+disp16 @RW2+ ANDL A, ORL A, @RW1+RW7 @RW1+ ANDL A, ORL A, @RW0+RW7 @RW0+ ANDL A, ORL A, @RW3+disp16 @RW3 ANDL A, ORL A, @RW2+disp16 @RW2 ANDL A, ORL A, @RW1+disp16 @RW1 ANDL A, ORL A, @RW0+disp16 @RW0 ANDL A, ORL A, @RW7+disp8 RL3 ANDL A, ORL A, @RW6+disp8 RL3 ANDL A, ORL A, @RW5+disp8 RL2 ANDL A, ORL A, @RW4+disp8 RL2 ANDL A, ORL A, @RW3+disp8 RL1 ANDL A, ORL A, @RW2+disp8 RL1 ANDL A, ORL A, @RW1+disp8 RL0 ANDL A, A0 ORL A, @RW0+disp8 RL0 ANDL A, 90 ORL A, addr16 XORL A, @RW3+ XORL A, @PC+disp16 @RW2+ ORL A, XORL A, @RW1+RW7 @RW1+ ORL A, XORL A, @RW0+RW7 @RW0+ ORL A, XORL A, @RW3+disp16 @RW3 ORL A, XORL A, @RW2+disp16 @RW2 ORL A, XORL A, @RW1+disp16 @RW1 ORL A, XORL A, @RW0+disp16 @RW0 ORL A, XORL A, @RW7+disp8 RL3 ORL A, XORL A, @RW6+disp8 RL3 ORL A, XORL A, @RW5+disp8 RL2 ORL A, XORL A, @RW4+disp8 RL2 ORL A, XORL A, @RW3+disp8 RL1 ORL A, XORL A, @RW2+disp8 RL1 ORL A, XORL A, @RW1+disp8 RL0 ORL A, C0 XORL A, @RW0+disp8 RL0 ORL A, B0 CBNE R0, E0 XORL A, addr16 CBNE @RW3+, #imm8, rel CBNE @RW2+, @PC+disp16 #imm8, rel XORL A, CBNE @RW1+, @RW1+RW7 #imm8, rel XORL A, CBNE @RW0+, @RW0+RW7 #imm8, rel XORL A, CBNE @RW3, @RW3+disp16 #imm8, rel XORL A, CBNE @RW2, @RW2+disp16 #imm8, rel XORL A, CBNE @RW1, @RW1+disp16 #imm8, rel XORL A, CBNE @RW0, @RW0+disp16 #imm8, rel XORL A, CBNE R7, @RW7+disp8 #imm8, rel XORL A, CBNE R6, @RW6+disp8 #imm8, rel XORL A, CBNE R5, @RW5+disp8 #imm8, rel XORL A, CBNE R4, @RW4+disp8 #imm8, rel XORL A, CBNE R3, @RW3+disp8 #imm8, rel XORL A, CBNE R2, @RW2+disp8 #imm8, rel XORL A, CBNE R1, @RW1+disp8 #imm8, rel XORL A, @RW0+disp8 #imm8, rel XORL A, D0 CBNE addr16, #imm8, rel #imm8, rel @PC+disp16, CBNE #imm8, rel @RW1+RW7, CBNE #imm8, rel @RW0+RW7, CBNE #imm8, rel @RW3+disp16, CBNE #imm8, rel @RW2+disp16, CBNE #imm8, rel @RW1+disp16, CBNE #imm8, rel @RW0+disp16, CBNE #imm8, rel @RW7+disp8, CBNE #imm8, rel @RW6+disp8, CBNE #imm8, rel @RW5+disp8, CBNE #imm8, rel @RW4+disp8, CBNE #imm8, rel @RW3+disp8, CBNE #imm8, rel @RW2+disp8, CBNE #imm8, rel @RW1+disp8, CBNE #imm8, rel @RW0+disp8, CBNE F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.6-1 ea-byte Instruction (1) (First Byte = 70H) CM44-00203-3E CM44-00203-3E CALLP @@RW1+disp8 @RL0 JMPP CALLP @@RW2+disp8 @RL1 JMPP JMPP +2 @RL1 JMPP +3 @RL1 CALLP @@RW4+disp8 @RL2 JMPP CALLP @@RW5+disp8 @RL2 JMPP CALLP @@RW6+disp8 @RL3 JMPP CALLP @@RW7+disp8 @RL3 JMPP CALLP @@RW0+disp16 @@RW0 JMPP CALLP @@RW1+disp16 @@RW1 JMPP CALLP @@RW2+disp16 @@RW2 JMPP JMPP +5 @RL2 JMPP +6 @RL3 JMPP +7 @RL3 JMPP +8 @@RW0 JMPP +9 @@RW1 JMPP +A @@RW2 JMPP +B @@RW3 FUJITSU MICROELECTRONICS LIMITED INCL JMPP JMPP CALLP CALLP INCL +E @@RW2+ @@PC+disp16 @@RW2+ @@PC+disp16 @RW2+ INCL @RW3+ DECL @RW1+RW7 @RW1+ CALLP CALLP @@RW3+ @addr16 INCL JMPP JMPP CALLP CALLP INCL +D @@RW1+ @@RW1+RW7 @@RW1+ @@RW1+RW7 @RW1+ JMPP JMPP +F @@RW3+ @addr16 DECL @RW0+RW7 @RW0+ INCL addr16 DECL @RW3+ DECL @PC+disp16 @RW2+ INCL DECL @RW3+disp16 @RW3 INCL DECL @RW2+disp16 @RW2 INCL DECL @RW1+disp16 @RW1 INCL DECL @RW0+disp16 @RW0 INCL DECL @RW7+disp8 RL3 INCL DECL @RW6+disp8 RL3 INCL DECL @RW5+disp8 RL2 INCL DECL @RW4+disp8 RL2 INCL DECL @RW3+disp8 RL1 INCL DECL @RW2+disp8 RL1 INCL DECL @RW1+disp8 RL0 INCL 60 DECL @RW0+disp8 RL0 INCL 50 JMPP JMPP CALLP CALLP INCL +C @@RW0+ @@RW0+RW7 @@RW0+ @@RW0+RW7 @RW0+ INCL @@RW3+disp16 @RW3 CALLP INCL @@RW2+disp16 @RW2 CALLP INCL @@RW1+disp16 @RW1 CALLP INCL @@RW0+disp16 @RW0 CALLP INCL @@RW7+disp8 RL3 CALLP INCL @@RW6+disp8 RL3 CALLP INCL @@RW5+disp8 RL2 CALLP INCL @@RW4+disp8 RL2 CALLP INCL @@RW3+disp8 RL1 CALLP INCL @@RW2+disp8 RL1 CALLP INCL @@RW1+disp8 RL0 CALLP 40 INCL @@RW0+disp8 RL0 CALLP 30 DECL addr16 MOVL A, @RW3+ MOVL @PC+disp16 A, @RW2+ DECL MOVL @RW1+RW7 A, @RW1+ DECL MOVL @RW0+RW7 A, @RW0+ DECL MOVL @RW3+disp16 A, @RW3 DECL MOVL @RW2+disp16 A, @RW2 DECL MOVL @RW1+disp16 A, @RW1 DECL MOVL @RW0+disp16 A, @RW0 DECL MOVL @RW7+disp8 A, RL3 DECL MOVL @RW6+disp8 A, RL3 DECL MOVL @RW5+disp8 A, RL2 DECL MOVL @RW4+disp8 A, RL2 DECL MOVL @RW3+disp8 A, RL1 DECL MOVL @RW2+disp8 A, RL1 DECL MOVL RL0, A A0 MOVL A, addr16 MOVL @RW3+, A MOVL @RW2+, @PC+disp16 A MOVL A, MOVL @RW1+, @RW1+RW7 A MOVL A, MOVL @RW0+, @RW0+RW7 A MOVL A, MOVL @RW3, A, @RW3+disp16 A MOVL MOVL @RW2, @RW2+disp16 A MOVL A, MOVL @RW1, @RW1+disp16 A MOVL A, MOVL @RW0, @RW0+disp16 A MOVL A, MOVL RL3, @RW7+disp8 A MOVL A, MOVL RL3, @RW6+disp8 A MOVL A, MOVL RL2, @RW5+disp8 A MOVL A, MOVL RL2, @RW4+disp8 A MOVL A, MOVL RL1, @RW3+disp8 A MOVL A, MOVL RL1, @RW2+disp8 A MOVL A, MOVL RL0, @RW1+disp8 A RL0 MOVL @RW1+disp8 A, RL0 DECL MOVL A, MOVL A, 90 @RW0+disp8 80 MOVL @RW0+disp8 A, DECL 70 MOV MOV R1, #imm8 MOV MOVEA @RW3+disp8, A, #imm8 RW3 MOV MOVEA @RW4+disp8, A, #imm8 RW4 MOV MOVEA @RW5+disp8, A, #imm8 RW5 MOV MOVEA @RW6+disp8, A, #imm8 RW6 MOV MOVEA @RW7+disp8, A, #imm8 RW7 MOV MOVEA @RW0+disp16, A, #imm8 @RW0 MOV MOVEA @RW1+disp16, A, #imm8 @RW1 MOV MOVEA @RW2+disp16, A, #imm8 @RW2 MOV MOVEA @RW3+disp16, A, #imm8 @RW3 MOV MOVEA @RW0+RW7, A, #imm8 @RW0+ MOV MOVEA @RW1+RW7, A, #imm8 @RW1+ MOV MOV @RW3+disp8, R3, A #imm8 MOV @RW4+disp8, R4, A #imm8 MOV @RW5+disp8, R5, A #imm8 MOV @RW6+disp8, R6, A #imm8 MOV @RW7+disp8, R7, A #imm8 MOV @RW0+disp16, @RW0, A #imm8 MOV @RW1+disp16, @RW1, A #imm8 MOV @RW2+disp16, @RW2, A #imm8 MOV @RW3+disp16, @RW3, A #imm8 MOV @RW0+RW7, @RW0+, A #imm8 MOV @RW1+RW7, @RW1+, A #imm8 MOV @PC+disp16, @RW2+, A #imm8 MOVL addr16, A MOVL MOVL MOVL MOVL MOVL MOVL MOVL MOVL MOVL MOVL MOVL MOVL MOV @RW3+, #imm8 MOVEA @RW2+disp8, A, #imm8 RW2 MOV addr16, #imm8 MOVEA A, @RW3+ MOVEA @PC+disp16, A, #imm8 @RW2+ MOV MOVL MOV @RW2+disp8, R2, A #imm8 A @RW1+disp8, MOVEA @RW1+disp8, A, #imm8 RW1 RW0 #imm8 #imm8 MOVL E0 MOVEA A MOV D0 @RW0+disp8, A, MOV C0 @RW0+disp8, R0, MOVL B0 MOVEA A, addr16 @PC+disp16 MOVEA A, @RW1+RW7 MOVEA A, @RW0+RW7 MOVEA A, @RW3+disp16 MOVEA A, @RW2+disp16 MOVEA A, @RW1+disp16 MOVEA A, @RW0+disp16 MOVEA A, @RW7+disp8 MOVEA A, @RW6+disp8 MOVEA A, @RW5+disp8 MOVEA A, @RW4+disp8 MOVEA A, @RW3+disp8 MOVEA A, @RW2+disp8 MOVEA A, @RW1+disp8 MOVEA A, @RW0+disp8 MOVEA A, F0 F MC-16FX Family CALLP @@RW3+disp16 @@RW3 JMPP JMPP +4 @RL2 CALLP @@RW3+disp8 @RL1 JMPP JMPP +1 @RL0 CALLP 20 @@RW0+disp8 @RL0 JMPP 10 +0 @RL0 JMPP 00 2 APPENDIX APPENDIX C Instruction Maps Table C.6-2 ea-type Instruction (2) (First Byte = 71H) 349 350 RORC @RW1+disp8 R1 ROLC RORC @RW2+disp8 R2 ROLC ROLC +2 R2 ROLC +3 R3 FUJITSU MICROELECTRONICS LIMITED ROLC RORC @RW3+disp16 @RW3 ROLC ROLC +B @RW3 ROLC +C @RW0+ RORC @PC+disp16 @RW2+ ROLC addr16 ROLC +F @RW3+ RORC @RW3+ ROLC RORC ROLC +E @RW2+ ROLC @RW1+RW7 @RW1+ +D @RW1+ ROLC RORC @RW2+disp16 @RW2 RORC @RW0+RW7 @RW0+ ROLC ROLC +A @RW2 INC RORC addr16 INC @RW3+ INC @PC+disp16 @RW2+ RORC @RW1+RW7 @RW1+ RORC INC @RW0+RW7 @RW0+ RORC INC @RW3+disp16 @RW3 RORC INC @RW2+disp16 @RW2 RORC @RW1+disp16 @RW1 INC RORC RORC ROLC @RW1+disp16 @RW1 +9 @RW1 ROLC INC R6 INC @RW7+disp8 R7 RORC @RW6+disp8 RORC INC @RW0+disp16 @RW0 ROLC ROLC +8 @RW0 INC @RW5+disp8 R5 RORC INC @RW4+disp8 R4 RORC INC @RW3+disp8 R3 RORC INC @RW2+disp8 R2 RORC INC @RW1+disp8 R1 RORC 40 RORC RORC @RW7+disp8 R7 INC @RW0+disp8 R0 RORC 30 RORC @RW0+disp16 @RW0 ROLC ROLC +7 R7 @RW6+disp8 RORC R6 ROLC RORC ROLC +6 R6 ROLC @RW5+disp8 R5 ROLC +5 R5 ROLC ROLC +4 R4 RORC @RW4+disp8 R4 RORC @RW3+disp8 R3 ROLC RORC ROLC +1 R1 ROLC @RW0+disp8 R0 ROLC 20 +0 R0 10 00 INC DEC DEC DEC INC addr16 DEC @RW3+ DEC @PC+disp16 @RW2+ INC @RW1+RW7 @RW1+ INC DEC @RW0+RW7 @RW0+ INC DEC @RW3+disp16 @RW3 INC DEC @RW2+disp16 @RW2 INC @RW1+disp16 @RW1 INC DEC @RW0+disp16 @RW0 INC DEC @RW7+disp8 R7 INC DEC @RW6+disp8 R6 INC @RW5+disp8 R5 INC DEC @RW4+disp8 R4 INC DEC @RW3+disp8 R3 INC DEC @RW2+disp8 R2 INC DEC @RW1+disp8 R1 INC 60 DEC @RW0+disp8 R0 50 MOV R5 MOV @RW1 MOV @RW1+ DEC addr16 MOV A, @RW3+ MOV @PC+disp16 A, @RW2+ DEC @RW1+RW7 A, DEC MOV @RW0+RW7 A, @RW0+ DEC MOV @RW3+disp16 A, @RW3 DEC MOV @RW2+disp16 A, @RW2 DEC @RW1+disp16 A, DEC MOV @RW0+disp16 A, @RW0 DEC MOV @RW7+disp8 A, R7 DEC MOV @RW6+disp8 A, R6 DEC @RW5+disp8 A, DEC MOV @RW4+disp8 A, R4 DEC MOV @RW3+disp8 A, R3 DEC MOV @RW2+disp8 A, R2 DEC MOV A, addr16 MOV @RW3+, A MOV @RW2+, @PC+disp16 A MOV A, MOV @RW1+, @RW1+RW7 A MOV A, MOV @RW0+, @RW0+RW7 A MOV A, MOV @RW3, @RW3+disp16 A MOV A, MOV @RW2, @RW2+disp16 A MOV A, MOV @RW1, @RW1+disp16 A MOV A, MOV @RW0, @RW0+disp16 A MOV A, MOV R7, @RW7+disp8 A MOV A, MOV R6, @RW6+disp8 A MOV A, MOV R5, @RW5+disp8 A MOV A, MOV R4, @RW4+disp8 A MOV A, MOV R3, @RW3+disp8 A MOV A, MOV R2, @RW2+disp8 A MOV A, MOV R1, @RW1+disp8 A MOV A, R0 MOV @RW1+disp8 A, R1 DEC A0 MOV R0, MOV A, 90 @RW0+disp8 A 80 MOV @RW0+disp8 A, DEC 70 D0 MOVX A, C0 MOVX A MOVX MOVX A, XCH A, @RW3+disp8 R3 MOVX A, MOVX A, MOVX @RW3+disp8, A, A R3 MOVX @RW4+disp8, A, A R4 MOVX MOVX A, XCH A, @RW7+disp8 R7 MOVX A, MOVX A, MOVX @RW7+disp8, A, A R7 MOVX @RW0+disp16, A, A @RW0 MOVX XCH A, @RW3+disp16 @RW3 MOVX A, MOVX @RW0+RW7, A, A @RW0+ MOV addr16, A MOV @RW1+ MOVX A, @RW3+ MOVX @PC+disp16, A, A @RW2+ A @RW1+RW7, A, MOV MOV MOVX MOVX A, MOVX @RW3+disp16, A, A @RW3 MOV MOVX A, addr16 XCH A, @RW3+ XCH A, @PC+disp16 @RW2+ MOVX A, XCH A, @RW1+RW7 @RW1+ MOVX A, XCH A, @RW0+RW7 @RW0+ XCH A, @RW2+disp16 @RW2 MOV MOVX A, @RW1 XCH A, @RW1+disp16 @RW1 MOVX @RW2+disp16, A, A @RW2 A @RW1+disp16, A, MOV MOV MOV XCH A, @RW0+disp16 @RW0 XCH A, @RW6+disp8 R6 MOV MOVX A, R5 XCH A, @RW5+disp8 R5 MOVX @RW6+disp8, A, A R6 A @RW5+disp8, A, MOV MOV MOV XCH A, @RW4+disp8 R4 XCH A, @RW2+disp8 R2 R1 MOVX A, MOV MOVX @RW2+disp8, A, A R2 A XCH A, @RW1+disp8 R1 MOVX A, R0 @RW1+disp8, A, MOV E0 XCH A, @RW0+disp8 R0 @RW0+disp8, A, MOV B0 XCH A, addr16 @PC+disp16 XCH A, @RW1+RW7 XCH A, @RW0+RW7 XCH A, @RW3+disp16 XCH A, @RW2+disp16 XCH A, @RW1+disp16 XCH A, @RW0+disp16 XCH A, @RW7+disp8 XCH A, @RW6+disp8 XCH A, @RW5+disp8 XCH A, @RW4+disp8 XCH A, @RW3+disp8 XCH A, @RW2+disp8 XCH A, @RW1+disp8 XCH A, @RW0+disp8 XCH A, F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.6-3 ea-type Instruction (3) (First Byte = 72H) CM44-00203-3E CM44-00203-3E CALL @@RW1+disp8 @RW1 JMP CALL @@RW2+disp8 @RW2 JMP JMP +2 @RW2 JMP +3 @RW3 CALL @@RW4+disp8 @RW4 JMP CALL @@RW5+disp8 @RW5 JMP CALL @@RW6+disp8 @RW6 JMP CALL @@RW7+disp8 @RW7 JMP CALL @@RW0+disp16 @@RW0 JMP CALL @@RW1+disp16 @@RW1 JMP CALL @@RW2+disp16 @@RW2 JMP JMP +5 @RW5 JMP +6 @RW6 JMP +7 @RW7 JMP +8 @@RW0 JMP +9 @@RW1 JMP +A @@RW2 JMP +B @@RW3 INCW 40 FUJITSU MICROELECTRONICS LIMITED DECW 60 DECW @RW1+RW7 @RW1+ INCW DECW @PC+disp16 @RW2+ INCW addr16 JMP JMP CALL CALL INCW +E @@RW2+ @@PC+disp16 @@RW2+ @@PC+disp16 @RW2+ JMP JMP +F @@RW3+ @addr16 DECW @RW3+ INCW JMP JMP CALL CALL INCW +D @@RW1+ @@RW1+RW7 @@RW1+ @@RW1+RW7 @RW1+ INCW @RW3+ DECW @RW0+RW7 @RW0+ CALL CALL @@RW3+ @addr16 INCW DECW @RW3+disp16 @RW3 INCW DECW @RW2+disp16 @RW2 INCW DECW @RW1+disp16 @RW1 INCW DECW @RW0+disp16 @RW0 INCW DECW @RW7+disp8 RW7 INCW DECW @RW6+disp8 RW6 INCW DECW @RW5+disp8 RW5 INCW DECW @RW4+disp8 RW4 INCW DECW @RW3+disp8 RW3 INCW DECW @RW2+disp8 RW2 INCW DECW @RW1+disp8 RW1 INCW @RW0+disp8 RW0 INCW 50 JMP JMP CALL CALL INCW +C @@RW0+ @@RW0+RW7 @@RW0+ @@RW0+RW7 @RW0+ INCW @@RW3+disp16 @RW3 CALL INCW @@RW2+disp16 @RW2 CALL INCW @@RW1+disp16 @RW1 CALL INCW @@RW0+disp16 @RW0 CALL INCW @@RW7+disp8 RW7 CALL INCW @@RW6+disp8 RW6 CALL INCW @@RW5+disp8 RW5 CALL INCW @@RW4+disp8 RW4 CALL INCW @@RW3+disp8 RW3 CALL INCW @@RW2+disp8 RW2 CALL INCW @@RW1+disp8 RW1 CALL @@RW0+disp8 RW0 CALL 30 RW0 @RW0+ @RW1+ DECW addr16 @RW3+ MOVW A, @RW2+ MOVW @PC+disp16 A, DECW MOVW @RW1+RW7 A, DECW MOVW @RW0+RW7 A, DECW MOVW @RW3+disp16 A, @RW3 DECW MOVW @RW2+disp16 A, @RW2 DECW MOVW @RW1+disp16 A, @RW1 DECW MOVW @RW0+disp16 A, @RW0 DECW MOVW @RW7+disp8 A, RW7 DECW MOVW @RW6+disp8 A, RW6 DECW MOVW @RW5+disp8 A, RW5 DECW MOVW @RW4+disp8 A, RW4 DECW MOVW @RW3+disp8 A, RW3 DECW MOVW @RW2+disp8 A, RW2 DECW MOVW @RW1+disp8 A, RW1 DECW 80 MOVW @RW0+disp8 A, DECW 70 A0 MOVW @RW0, A MOVW A, addr16 MOVW @RW3+, A MOVW @RW2+, @PC+disp16 A MOVW A, MOVW @RW1+, @RW1+RW7 A MOVW A, MOVW @RW0+, @RW0+RW7 A MOVW A, MOVW @RW3, @RW3+disp16 A MOVW A, MOVW @RW2, @RW2+disp16 A MOVW A, MOVW @RW1, @RW1+disp16 A MOVW A, @RW0+disp16 MOVW A, MOVW RW7, @RW7+disp8 A MOVW A, MOVW RW6, @RW6+disp8 A MOVW A, MOVW RW5, @RW5+disp8 A MOVW A, MOVW RW4, @RW4+disp8 A MOVW A, MOVW RW3, @RW3+disp8 A MOVW A, MOVW RW2, @RW2+disp8 A MOVW A, MOVW RW1, @RW1+disp8 A MOVW A, MOVW RW0, @RW0+disp8 A MOVW A, 90 MOVW XCHW @RW0+disp16, A, #imm16 @RW0 MOVW XCHW @RW1+disp16, A, #imm16 @RW1 MOVW XCHW @RW2+disp16, A, #imm16 @RW2 MOVW XCHW @RW3+disp16, A, #imm16 @RW3 MOVW XCHW @RW0+RW7, A, #imm16 @RW0+ MOVW XCHW @RW1+RW7, A, #imm16 @RW1+ MOVW MOVW @RW0+disp16, @RW0, A #imm16 MOVW @RW1+disp16, @RW1, A #imm16 MOVW @RW2+disp16, @RW2, A #imm16 MOVW @RW3+disp16, @RW3, A #imm16 MOVW @RW0+RW7, @RW0+, A #imm16 MOVW @RW1+RW7, @RW1+, A #imm16 MOVW @PC+disp16, @RW2+, A #imm16 MOVW addr16, A MOVW MOVW MOVW MOVW MOVW MOVW MOVW MOVW @RW3+, #imm16 XCHW @RW7+disp8, A, #imm16 RW7 MOVW addr16, #imm16 XCHW A, @RW3+ XCHW @PC+disp16, A, #imm16 @RW2+ MOVW MOVW MOVW MOVW @RW7+disp8, RW7, A #imm16 XCHW A, RW5 XCHW A, RW4 XCHW A, RW3 XCHW A, RW2 XCHW A, RW1 XCHW @RW6+disp8, A, #imm16 RW6 #imm16 @RW5+disp8, MOVW #imm16 @RW4+disp8, MOVW #imm16 @RW3+disp8, MOVW #imm16 @RW2+disp8, MOVW #imm16 @RW1+disp8, MOVW #imm16 XCHW A, RW0 E0 MOVW MOVW RW5, #imm16 MOVW RW4, #imm16 MOVW RW3, #imm16 MOVW RW2, #imm16 MOVW RW1, #imm16 MOVW MOVW RW0, #imm16 @RW0+disp8, D0 C0 MOVW @RW6+disp8, RW6, A #imm16 A @RW5+disp8, MOVW A @RW4+disp8, MOVW A @RW3+disp8, MOVW A @RW2+disp8, MOVW A @RW1+disp8, MOVW A @RW0+disp8, MOVW B0 XCHW A, addr16 @PC+disp16 XCHW A, @RW1+RW7 XCHW A, @RW0+RW7 XCHW A, @RW3+disp16 XCHW A, @RW2+disp16 XCHW A, @RW1+disp16 XCHW A, @RW0+disp16 XCHW A, @RW7+disp8 XCHW A, @RW6+disp8 XCHW A, @RW5+disp8 XCHW A, @RW4+disp8 XCHW A, @RW3+disp8 XCHW A, @RW2+disp8 XCHW A, @RW1+disp8 XCHW A, @RW0+disp8 XCHW A, F0 F MC-16FX Family CALL @@RW3+disp16 @@RW3 JMP JMP +4 @RW4 CALL @@RW3+disp8 @RW3 JMP JMP +1 @RW1 CALL 20 @@RW0+disp8 @RW0 JMP 10 +0 @RW0 JMP 00 2 APPENDIX APPENDIX C Instruction Maps Table C.6-4 ea-type Instruction (4) (First Byte = 73H) 351 352 ADD A, R0 FUJITSU MICROELECTRONICS LIMITED SUB A, @RW1+disp8 R1 ADD A, SUB A, @RW2+disp8 R2 ADD A, SUB A, @RW3+disp8 R3 ADD A, SUB A, @RW4+disp8 R4 ADD A, SUB A, @RW5+disp8 R5 ADD A, SUB A, @RW6+disp8 R6 ADD A, SUB A, @RW7+disp8 R7 ADD A, SUB A, @RW0+disp16 @RW0 ADD A, SUB A, @RW1+disp16 @RW1 ADD A, SUB A, @RW2+disp16 @RW2 ADD A, SUB A, @RW3+disp16 @RW3 ADD A, ADD +2 A, R2 ADD +3 A, R3 ADD +4 A, R4 ADD +5 A, R5 ADD +6 A, R6 ADD +7 A, R7 ADD +8 A, @RW0 ADD +9 A, @RW1 ADD +A A, @RW2 ADD +B A, @RW3 ADD +C A, @RW0+ SUB A, @RW1+RW7 @RW1+ ADD A, SUB A, @PC+disp16 @RW2+ ADD A, addr16 ADD +E A, @RW2+ ADD +F A, @RW3+ SUB A, @RW3+ ADD A, ADD +D A, @RW1+ SUB A, @RW0+RW7 @RW0+ ADD A, SUB A, R0 20 ADD +1 A, R1 +0 A, @RW0+disp8 10 ADD 00 ADDC A, R0 40 SUB A, addr16 ADDC A, @RW3+ ADDC A, @PC+disp16 @RW2+ SUB A, ADDC A, @RW1+RW7 @RW1+ SUB A, ADDC A, @RW0+RW7 @RW0+ SUB A, ADDC A, @RW3+disp16 @RW3 SUB A, ADDC A, @RW2+disp16 @RW2 SUB A, ADDC A, @RW1+disp16 @RW1 SUB A, ADDC A, @RW0+disp16 @RW0 SUB A, ADDC A, @RW7+disp8 R7 SUB A, ADDC A, @RW6+disp8 R6 SUB A, ADDC A, @RW5+disp8 R5 SUB A, ADDC A, @RW4+disp8 R4 SUB A, ADDC A, @RW3+disp8 R3 SUB A, ADDC A, @RW2+disp8 R2 SUB A, ADDC A, @RW1+disp8 R1 SUB A, @RW0+disp8 SUB A, 30 CMP A, R0 60 ADDC A, addr16 CMP A, @RW3+ CMP A, @PC+disp16 @RW2+ ADDC A, CMP A, @RW1+RW7 @RW1+ ADDC A, CMP A, @RW0+RW7 @RW0+ ADDC A, CMP A, @RW3+disp16 @RW3 ADDC A, CMP A, @RW2+disp16 @RW2 ADDC A, CMP A, @RW1+disp16 @RW1 ADDC A, CMP A, @RW0+disp16 @RW0 ADDC A, CMP A, @RW7+disp8 R7 ADDC A, CMP A, @RW6+disp8 R6 ADDC A, CMP A, @RW5+disp8 R5 ADDC A, CMP A, @RW4+disp8 R4 ADDC A, CMP A, @RW3+disp8 R3 ADDC A, CMP A, @RW2+disp8 R2 ADDC A, CMP A, @RW1+disp8 R1 ADDC A, @RW0+disp8 ADDC A, 50 AND A, R0 80 CMP A, addr16 AND A, @RW3+ AND A, @PC+disp16 @RW2+ CMP A, AND A, @RW1+RW7 @RW1+ CMP A, AND A, @RW0+RW7 @RW0+ CMP A, AND A, @RW3+disp16 @RW3 CMP A, AND A, @RW2+disp16 @RW2 CMP A, AND A, @RW1+disp16 @RW1 CMP A, AND A, @RW0+disp16 @RW0 CMP A, AND A, @RW7+disp8 R7 CMP A, AND A, @RW6+disp8 R6 CMP A, AND A, @RW5+disp8 R5 CMP A, AND A, @RW4+disp8 R4 CMP A, AND A, @RW3+disp8 R3 CMP A, AND A, @RW2+disp8 R2 CMP A, AND A, @RW1+disp8 R1 CMP A, @RW0+disp8 CMP A, 70 OR A, R0 A0 AND A, addr16 OR A, @RW3+ OR A, @PC+disp16 @RW2+ AND A, OR A, @RW1+RW7 @RW1+ AND A, OR A, @RW0+RW7 @RW0+ AND A, OR A, @RW3+disp16 @RW3 AND A, OR A, @RW2+disp16 @RW2 AND A, OR A, @RW1+disp16 @RW1 AND A, OR A, @RW0+disp16 @RW0 AND A, OR A, @RW7+disp8 R7 AND A, OR A, @RW6+disp8 R6 AND A, OR A, @RW5+disp8 R5 AND A, OR A, @RW4+disp8 R4 AND A, OR A, @RW3+disp8 R3 AND A, OR A, @RW2+disp8 R2 AND A, OR A, @RW1+disp8 R1 AND A, @RW0+disp8 AND A, 90 XOR A, R0 C0 OR A, addr16 XOR A, @RW3+ XOR A, @PC+disp16 @RW2+ OR A, XOR A, @RW1+RW7 @RW1+ OR A, XOR A, @RW0+RW7 @RW0+ OR A, XOR A, @RW3+disp16 @RW3 OR A, XOR A, @RW2+disp16 @RW2 OR A, XOR A, @RW1+disp16 @RW1 OR A, XOR A, @RW0+disp16 @RW0 OR A, XOR A, @RW7+disp8 R7 OR A, XOR A, @RW6+disp8 R6 OR A, XOR A, @RW5+disp8 R5 OR A, XOR A, @RW4+disp8 R4 OR A, XOR A, @RW3+disp8 R3 OR A, XOR A, @RW2+disp8 R2 OR A, XOR A, @RW1+disp8 R1 OR A, @RW0+disp8 OR A, B0 DBNZ R1, rel DBNZ R0, rel E0 XOR A, addr16 DBNZ @RW3+, rel DBNZ @RW2+, @PC+disp16 rel XOR A, DBNZ @RW1+, @RW1+RW7 rel XOR A, DBNZ @RW0+, @RW0+RW7 rel XOR A, DBNZ @RW3, @RW3+disp16 rel XOR A, DBNZ @RW2, @RW2+disp16 rel XOR A, DBNZ @RW1, @RW1+disp16 rel XOR A, DBNZ @RW0, @RW0+disp16 rel XOR A, DBNZ R7, @RW7+disp8 rel XOR A, DBNZ R6, @RW6+disp8 rel XOR A, DBNZ R5, @RW5+disp8 rel XOR A, DBNZ R4, @RW4+disp8 rel XOR A, DBNZ R3, @RW3+disp8 rel XOR A, DBNZ R2, @RW2+disp8 rel XOR A, @RW1+disp8 XOR A, @RW0+disp8 XOR A, D0 DBNZ addr16, rel rel @PC+disp16, DBNZ rel @RW1+RW7, DBNZ rel @RW0+RW7, DBNZ rel @RW3+disp16, DBNZ rel @RW2+disp16, DBNZ rel @RW1+disp16, DBNZ rel @RW0+disp16, DBNZ rel @RW7+disp8, DBNZ rel @RW6+disp8, DBNZ rel @RW5+disp8, DBNZ rel @RW4+disp8, DBNZ rel @RW3+disp8, DBNZ rel @RW2+disp8, DBNZ rel @RW1+disp8, DBNZ rel @RW0+disp8, DBNZ F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.6-5 ea-type Instruction (5) (First Byte = 74H) CM44-00203-3E CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED ADD SUB SUB ADD A SUB A SUB A ADD A SUB A SUB A ADD A SUB A SUB A ADD A SUB A SUB A ADD A SUB A SUB A ADD A SUB @RW3+, A SUB addr16, A ADD addr16, A ADD +F @RW3+, SUBC A, @RW3+ @RW2+ A A A A @PC+disp16, A, SUBC @RW1+ @RW1+RW7, A, @RW1+RW7, @RW1+, SUBC @RW0+ @RW0+RW7, A, @RW0+RW7, @RW0+, SUBC @RW3 @RW3+disp16, A, @RW3+disp16, @RW3, SUBC @RW2 @RW2+disp16, A, @RW2+disp16, @RW2, SUBC @RW1 @RW1+disp16, A, @RW1+disp16, @RW1, SUBC @RW0 A A A SUBC @RW0+disp16, A, @RW0+disp16, @RW0, @PC+disp16, @RW2+, +E @RW2+, ADD A +D @RW1+, ADD A +C @RW0+, ADD A +B @RW3, SUB SUB ADD R7 A A A SUBC A, addr16 @PC+disp16 SUBC A, @RW1+RW7 SUBC A, @RW0+RW7 SUBC A, @RW3+disp16 SUBC A, @RW2+disp16 SUBC A, @RW1+disp16 SUBC A, @RW0+disp16 SUBC A, @RW7+disp8 SUBC A, @RW6+disp8 SUBC A, @RW5+disp8 SUBC A, @RW4+disp8 SUBC A, @RW3+disp8 SUBC A, @RW2+disp8 SUBC A, @RW1+disp8 SUBC A, @RW0+disp8 SUBC A, 50 NEG @RW3+ NEG @RW2+ NEG @RW1+ NEG @RW0+ NEG @RW3 NEG @RW2 NEG @RW1 NEG @RW0 NEG R7 NEG R6 NEG R5 NEG R4 NEG R3 NEG R2 NEG R1 NEG R0 60 AND AND R1, A AND A AND AND AND AND AND AND AND AND AND AND AND NEG addr16 AND @RW3+, A A @PC+disp16 @RW2+, NEG A @RW1+RW7 @RW1+, NEG A @RW0+RW7 @RW0+, NEG A @RW3+disp16 @RW3, NEG A @RW2+disp16 @RW2, NEG A @RW1+disp16 @RW1, NEG A @RW0+disp16 @RW0, NEG A @RW7+disp8 R7, NEG A @RW6+disp8 R6, NEG A @RW5+disp8 R5, NEG A @RW4+disp8 R4, NEG A @RW3+disp8 R3, NEG 80 AND R0, A @RW2+disp8 R2, NEG @RW1+disp8 NEG @RW0+disp8 NEG 70 OR OR A OR A OR A OR A OR A OR A OR A OR A A0 OR A OR A OR A OR A OR A OR A AND addr16, A A OR @RW3+, A A @PC+disp16, @RW2+, AND A @RW1+RW7, @RW1+, AND A @RW0+RW7, @RW0+, AND A @RW3+disp16, @RW3, AND A @RW2+disp16, @RW2, AND A @RW1+disp16, @RW1, AND A @RW0+disp16, @RW0, AND A @RW7+disp8, R7, AND A @RW6+disp8, R6, AND A @RW5+disp8, R5, AND A @RW4+disp8, R4, AND A @RW3+disp8, R3, AND A @RW2+disp8, R2, AND A @RW1+disp8, R1, AND A @RW0+disp8, R0, AND 90 XOR A XOR A XOR A XOR A XOR A XOR A XOR A XOR A XOR A XOR A XOR A XOR A XOR A XOR A OR addr16, A A XOR @RW3+, A A @PC+disp16, @RW2+, OR A @RW1+RW7, @RW1+, OR A @RW0+RW7, @RW0+, OR A @RW3+disp16, @RW3, OR A @RW2+disp16, @RW2, OR A @RW1+disp16, @RW1, OR A @RW0+disp16, @RW0, OR A @RW7+disp8, R7, OR A @RW6+disp8, R6, OR A @RW5+disp8, R5, OR A @RW4+disp8, R4, OR A @RW3+disp8, R3, OR A @RW2+disp8, R2, OR A @RW1+disp8, R1, OR A C0 XOR @RW0+disp8, R0, OR B0 NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT XOR addr16, A A NOT @RW3+ @PC+disp16, @RW2+ XOR A @RW1+RW7, @RW1+ XOR A @RW0+RW7, @RW0+ XOR A @RW3+disp16, @RW3 XOR A @RW2+disp16, @RW2 XOR A @RW1+disp16, @RW1 XOR A @RW0+disp16, @RW0 XOR A @RW7+disp8, R7 XOR A @RW6+disp8, R6 XOR A @RW5+disp8, R5 XOR A @RW4+disp8, R4 XOR A @RW3+disp8, R3 XOR A @RW2+disp8, R2 XOR A @RW1+disp8, R1 XOR A E0 NOT @RW0+disp8, R0 XOR D0 NOT addr16 @PC+disp16 NOT @RW1+RW7 NOT @RW0+RW7 NOT @RW3+disp16 NOT @RW2+disp16 NOT @RW1+disp16 NOT @RW0+disp16 NOT @RW7+disp8 NOT @RW6+disp8 NOT @RW5+disp8 NOT @RW4+disp8 NOT @RW3+disp8 NOT @RW2+disp8 NOT @RW1+disp8 NOT @RW0+disp8 NOT F0 F MC-16FX Family A +A @RW2, ADD A +9 @RW1, ADD A +8 @RW0, ADD A SUBC @RW7+disp8, A, SUB @RW7+disp8, R7, SUB ADD ADD +7 R7, R6 A A A A SUBC @RW6+disp8, A, SUB @RW6+disp8, R6, SUB ADD ADD +6 R6, R5 A A A A SUBC @RW5+disp8, A, SUB @RW5+disp8, R5, SUB ADD R4 ADD +5 R5, A A SUBC A SUB A SUB @RW4+disp8, A, ADD R3 A A A @RW4+disp8, R4, +4 R4, ADD A SUBC @RW3+disp8, A, SUB @RW3+disp8, R3, SUB ADD ADD +3 R3, R2 A A A A SUBC @RW2+disp8, A, SUB @RW2+disp8, R2, SUB ADD ADD +2 R2, R1 A A A A SUBC @RW1+disp8, A, SUB @RW1+disp8, R1, SUB ADD ADD +1 R1, R0 A A 40 SUBC A SUB 30 A SUB 20 @RW0+disp8, A, ADD 10 @RW0+disp8, R0, +0 R0, ADD 00 2 APPENDIX APPENDIX C Instruction Maps Table C.6-6 ea-type Instruction (6) (First Byte = 75H) 353 354 RW0 ADDW A, SUBW A, @RW2+disp8 RW2 ADDW A, SUBW A, @RW3+disp8 RW3 ADDW A, SUBW A, @RW4+disp8 RW4 ADDW A, SUBW A, @RW5+disp8 RW5 ADDW A, SUBW A, @RW6+disp8 RW6 ADDW A, SUBW A, @RW7+disp8 RW7 ADDW A, ADDW A, ADDW +2 A, RW2 ADDW +3 A, RW3 ADDW +4 A, RW4 ADDW +5 A, RW5 ADDW +6 A, RW6 ADDW +7 A, RW7 ADDW +8 A, @RW0 ADDW FUJITSU MICROELECTRONICS LIMITED SUBW A, @RW2+disp16 @RW2 ADDW A, SUBW A, @RW3+disp16 @RW3 ADDW A, ADDW +B A, @RW3 ADDW +C A, @RW0+ SUBW A, @RW1+RW7 @RW1+ ADDW A, SUBW A, @PC+disp16 @RW2+ ADDW A, addr16 ADDW +E A, @RW2+ ADDW +F A, @RW3+ SUBW A, @RW3+ ADDW A, ADDW +D A, @RW1+ SUBW A, @RW0+RW7 @RW0+ ADDW A, SUBW A, @RW1+disp16 @RW1 ADDW +A A, @RW2 @RW1 +9 A, SUBW A, @RW1+disp8 RW1 SUBW A, @RW0+disp16 @RW0 ADDW A, ADDW +1 A, RW1 SUBW A, ADDW A, @RW0+disp8 RW0 +0 A, ADDW 20 10 00 ADDCW A, 40 SUBW A, addr16 ADDCW A, @RW3+ ADDCW A, @PC+disp16 @RW2+ SUBW A, ADDCW A, @RW1+RW7 @RW1+ SUBW A, ADDCW A, @RW0+RW7 @RW0+ SUBW A, ADDCW A, @RW3+disp16 @RW3 SUBW A, ADDCW A, @RW2+disp16 @RW2 SUBW A, ADDCW A, @RW1+disp16 @RW1 SUBW A, ADDCW A, @RW0+disp16 @RW0 SUBW A, ADDCW A, @RW7+disp8 RW7 SUBW A, ADDCW A, @RW6+disp8 RW6 SUBW A, ADDCW A, @RW5+disp8 RW5 SUBW A, ADDCW A, @RW4+disp8 RW4 SUBW A, ADDCW A, @RW3+disp8 RW3 SUBW A, ADDCW A, @RW2+disp8 RW2 SUBW A, ADDCW A, @RW1+disp8 RW1 SUBW A, @RW0+disp8 RW0 SUBW A, 30 CMPW A, 60 ADDCW A, addr16 CMPW A, @RW3+ CMPW A, @PC+disp16 @RW2+ ADDCW A, CMPW A, @RW1+RW7 @RW1+ ADDCW A, CMPW A, @RW0+RW7 @RW0+ ADDCW A, CMPW A, @RW3+disp16 @RW3 ADDCW A, CMPW A, @RW2+disp16 @RW2 ADDCW A, CMPW A, @RW1+disp16 @RW1 ADDCW A, CMPW A, @RW0+disp16 @RW0 ADDCW A, CMPW A, @RW7+disp8 RW7 ADDCW A, CMPW A, @RW6+disp8 RW6 ADDCW A, CMPW A, @RW5+disp8 RW5 ADDCW A, CMPW A, @RW4+disp8 RW4 ADDCW A, CMPW A, @RW3+disp8 RW3 ADDCW A, CMPW A, @RW2+disp8 RW2 ADDCW A, CMPW A, @RW1+disp8 RW1 ADDCW A, @RW0+disp8 RW0 ADDCW A, 50 ANDW A, 80 CMPW A, addr16 ANDW A, @RW3+ ANDW A, @PC+disp16 @RW2+ CMPW A, ANDW A, @RW1+RW7 @RW1+ CMPW A, ANDW A, @RW0+RW7 @RW0+ CMPW A, ANDW A, @RW3+disp16 @RW3 CMPW A, ANDW A, @RW2+disp16 @RW2 CMPW A, ANDW A, @RW1+disp16 @RW1 CMPW A, ANDW A, @RW0+disp16 @RW0 CMPW A, ANDW A, @RW7+disp8 RW7 CMPW A, ANDW A, @RW6+disp8 RW6 CMPW A, ANDW A, @RW5+disp8 RW5 CMPW A, ANDW A, @RW4+disp8 RW4 CMPW A, ANDW A, @RW3+disp8 RW3 CMPW A, ANDW A, @RW2+disp8 RW2 CMPW A, ANDW A, @RW1+disp8 RW1 CMPW A, @RW0+disp8 RW0 CMPW A, 70 ORW A, A0 ANDW A, addr16 ORW A, @RW3+ ORW A, @PC+disp16 @RW2+ ANDW A, ORW A, @RW1+RW7 @RW1+ ANDW A, ORW A, @RW0+RW7 @RW0+ ANDW A, ORW A, @RW3+disp16 @RW3 ANDW A, ORW A, @RW2+disp16 @RW2 ANDW A, ORW A, @RW1+disp16 @RW1 ANDW A, ORW A, @RW0+disp16 @RW0 ANDW A, ORW A, @RW7+disp8 RW7 ANDW A, ORW A, @RW6+disp8 RW6 ANDW A, ORW A, @RW5+disp8 RW5 ANDW A, ORW A, @RW4+disp8 RW4 ANDW A, ORW A, @RW3+disp8 RW3 ANDW A, ORW A, @RW2+disp8 RW2 ANDW A, ORW A, @RW1+disp8 RW1 ANDW A, @RW0+disp8 RW0 ANDW A, 90 XORW A, C0 ORW A, addr16 XORW A, @RW3+ XORW A, @PC+disp16 @RW2+ ORW A, XORW A, @RW1+RW7 @RW1+ ORW A, XORW A, @RW0+RW7 @RW0+ ORW A, XORW A, @RW3+disp16 @RW3 ORW A, XORW A, @RW2+disp16 @RW2 ORW A, XORW A, @RW1+disp16 @RW1 ORW A, XORW A, @RW0+disp16 @RW0 ORW A, XORW A, @RW7+disp8 RW7 ORW A, XORW A, @RW6+disp8 RW6 ORW A, XORW A, @RW5+disp8 RW5 ORW A, XORW A, @RW4+disp8 RW4 ORW A, XORW A, @RW3+disp8 RW3 ORW A, XORW A, @RW2+disp8 RW2 ORW A, XORW A, @RW1+disp8 RW1 ORW A, @RW0+disp8 RW0 ORW A, B0 XORW A, addr16 DWBNZ @RW3+, rel DWBNZ @RW2+, @PC+disp16 rel XORW A, DWBNZ @RW1+, @RW1+RW7 rel XORW A, DWBNZ @RW0+, @RW0+RW7 rel XORW A, DWBNZ @RW3, @RW3+disp16 rel XORW A, DWBNZ @RW2, @RW2+disp16 rel XORW A, DWBNZ @RW1, @RW1+disp16 rel XORW A, DWBNZ @RW0, @RW0+disp16 rel XORW A, DWBNZ RW7, @RW7+disp8 rel XORW A, DWBNZ RW6, @RW6+disp8 rel XORW A, DWBNZ RW5, @RW5+disp8 rel XORW A, DWBNZ RW4, @RW4+disp8 rel XORW A, DWBNZ RW3, @RW3+disp8 rel XORW A, DWBNZ RW2, @RW2+disp8 rel XORW A, DWBNZ RW1, @RW1+disp8 rel XORW A, E0 DWBNZ RW0, @RW0+disp8 rel XORW A, D0 DWBNZ addr16, rel rel @PC+disp16, DWBNZ rel @RW1+RW7, DWBNZ rel @RW0+RW7, DWBNZ rel @RW3+disp16, DWBNZ rel @RW2+disp16, DWBNZ rel @RW1+disp16, DWBNZ @RW0+disp16, rel DWBNZ rel @RW7+disp8, DWBNZ rel @RW6+disp8, DWBNZ rel @RW5+disp8, DWBNZ rel @RW4+disp8, DWBNZ rel @RW3+disp8, DWBNZ rel @RW2+disp8, DWBNZ rel @RW1+disp8, DWBNZ rel @RW0+disp8, DWBNZ F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.6-7 ea-type Instruction (7) (First Byte = 76H) CM44-00203-3E ADDW ADDW CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 355 A +F @RW3+, ADDW A +E @RW2+, ADDW A +D @RW1+, ADDW A +C @RW0+, ADDW A +B @RW3, ADDW A SUBW ADDW ADDW ADDW addr16, A A @PC+disp16, ADDW A @RW1+RW7, SUBW @RW3+, A SUBW @RW2+, A SUBW @RW1+, A SUBW addr16, A A @PC+disp16, SUBW A @RW1+RW7, SUBW A @RW0+RW7, SUBW SUBW @RW0+, A ADDW A @RW0+RW7, SUBCW A, @RW3+ SUBCW A, @RW2+ SUBCW A, @RW1+ SUBCW A, @RW0+ @RW3 A A A SUBCW @RW3+disp16, A, @RW3+disp16, @RW3, SUBW SUBW ADDW @RW2 A A A SUBCW @RW2+disp16, A, @RW2+disp16, @RW2, SUBW SUBW ADDW @RW1 A A A SUBCW @RW1+disp16, A, @RW1+disp16, @RW1, SUBW A @RW0 A A SUBCW @RW0+disp16, A, @RW0+disp16, @RW0, SUBW SUBW ADDW RW7 A A A SUBCW A, addr16 @PC+disp16 SUBCW A, @RW1+RW7 SUBCW A, @RW0+RW7 SUBCW A, @RW3+disp16 SUBCW A, @RW2+disp16 SUBCW A, @RW1+disp16 SUBCW A, @RW0+disp16 SUBCW A, @RW7+disp8 SUBCW A, @RW6+disp8 SUBCW A, @RW5+disp8 SUBCW A, @RW4+disp8 SUBCW A, @RW3+disp8 SUBCW A, @RW2+disp8 SUBCW A, @RW1+disp8 SUBCW A, @RW0+disp8 SUBCW A, 50 NEGW @RW3+ NEGW @RW2+ NEGW @RW1+ NEGW @RW0+ NEGW @RW3 NEGW @RW2 NEGW @RW1 NEGW @RW0 NEGW RW7 NEGW RW6 NEGW RW5 NEGW RW4 NEGW RW3 NEGW RW2 NEGW RW1 NEGW RW0 60 ANDW ANDW RW7, A ANDW RW6, A ANDW RW5, A ANDW RW4, A ANDW RW3, A ANDW RW2, A ANDW RW1, A ANDW RW0, A 80 ANDW ANDW ANDW NEGW addr16 @PC+disp16 NEGW @RW1+RW7 NEGW @RW0+RW7 NEGW ANDW @RW3+, A ANDW @RW2+, A ANDW @RW1+, A ANDW @RW0+, A A @RW3+disp16 @RW3, NEGW A @RW2+disp16 @RW2, NEGW A @RW1+disp16 @RW1, NEGW A @RW0+disp16 @RW0, NEGW @RW7+disp8 NEGW @RW6+disp8 NEGW @RW5+disp8 NEGW @RW4+disp8 NEGW @RW3+disp8 NEGW @RW2+disp8 NEGW @RW1+disp8 NEGW @RW0+disp8 NEGW 70 ORW A0 ORW A ORW A ORW A ORW A ORW A ORW A ORW A ORW A ORW A ORW A ORW A ANDW addr16, A A @PC+disp16, ANDW A @RW1+RW7, ANDW A @RW0+RW7, ANDW A ORW @RW3+, A ORW @RW2+, A ORW @RW1+, A ORW @RW0+, A A @RW3+disp16, @RW3, ANDW A @RW2+disp16, @RW2, ANDW A @RW1+disp16, @RW1, ANDW A @RW0+disp16, @RW0, ANDW A @RW7+disp8, RW7, ANDW A @RW6+disp8, RW6, ANDW A @RW5+disp8, RW5, ANDW A @RW4+disp8, RW4, ANDW A @RW3+disp8, RW3, ANDW A @RW2+disp8, RW2, ANDW A @RW1+disp8, RW1, ANDW A @RW0+disp8, RW0, ANDW 90 XORW C0 XORW A XORW A XORW A XORW A XORW A XORW A XORW A XORW A XORW A XORW A XORW A ORW addr16, A A @PC+disp16, ORW A @RW1+RW7, ORW A @RW0+RW7, ORW A XORW @RW3+, A XORW @RW2+, A XORW @RW1+, A XORW @RW0+, A A @RW3+disp16, @RW3, ORW A @RW2+disp16, @RW2, ORW A @RW1+disp16, @RW1, ORW A @RW0+disp16, @RW0, ORW A @RW7+disp8, RW7, ORW A @RW6+disp8, RW6, ORW A @RW5+disp8, RW5, ORW A @RW4+disp8, RW4, ORW A @RW3+disp8, RW3, ORW A @RW2+disp8, RW2, ORW A @RW1+disp8, RW1, ORW A @RW0+disp8, RW0, ORW B0 NOTW E0 NOTW NOTW NOTW NOTW NOTW NOTW NOTW NOTW NOTW NOTW NOTW XORW addr16, A A @PC+disp16, XORW A @RW1+RW7, XORW A @RW0+RW7, XORW A NOTW @RW3+ NOTW @RW2+ NOTW @RW1+ NOTW @RW0+ @RW3+disp16, @RW3 XORW A @RW2+disp16, @RW2 XORW A @RW1+disp16, @RW1 XORW A @RW0+disp16, @RW0 XORW A @RW7+disp8, RW7 XORW A @RW6+disp8, RW6 XORW A @RW5+disp8, RW5 XORW A @RW4+disp8, RW4 XORW A @RW3+disp8, RW3 XORW A @RW2+disp8, RW2 XORW A @RW1+disp8, RW1 XORW A @RW0+disp8, RW0 XORW D0 NOTW addr16 @PC+disp16 NOTW @RW1+RW7 NOTW @RW0+RW7 NOTW @RW3+disp16 NOTW @RW2+disp16 NOTW @RW1+disp16 NOTW @RW0+disp16 NOTW @RW7+disp8 NOTW @RW6+disp8 NOTW @RW5+disp8 NOTW @RW4+disp8 NOTW @RW3+disp8 NOTW @RW2+disp8 NOTW @RW1+disp8 NOTW @RW0+disp8 NOTW F0 F MC-16FX Family +A @RW2, ADDW A +9 @RW1, ADDW A +8 @RW0, ADDW A SUBCW @RW7+disp8, A, SUBW @RW7+disp8, RW7, SUBW ADDW ADDW +7 RW7, RW6 A A A A SUBCW @RW6+disp8, A, SUBW @RW6+disp8, RW6, SUBW ADDW ADDW +6 RW6, RW5 A A A A SUBCW @RW5+disp8, A, SUBW @RW5+disp8, RW5, SUBW ADDW ADDW +5 RW5, RW4 A A A SUBCW @RW4+disp8, A, A SUBW @RW4+disp8, RW4, SUBW ADDW ADDW +4 RW4, RW3 A A A A SUBCW @RW3+disp8, A, SUBW @RW3+disp8, RW3, SUBW ADDW ADDW +3 RW3, RW2 A A A A SUBCW @RW2+disp8, A, SUBW @RW2+disp8, RW2, SUBW ADDW ADDW +2 RW2, RW1 A A A A SUBCW @RW1+disp8, A, SUBW @RW1+disp8, RW1, SUBW ADDW ADDW +1 RW1, A RW0 A A 40 SUBCW @RW0+disp8, A, SUBW 30 A SUBW 20 @RW0+disp8, RW0, +0 RW0, 10 00 2 APPENDIX APPENDIX C Instruction Maps Table C.6-8 ea-type Instruction (8) (First Byte = 77H) 356 MULU A, R0 MULU MULU A, MULUW A, @RW3+disp8 RW3 MULU A, MULU A, MULU +3 A, R3 MULU +4 A, R4 MULU MULU A, MULUW A, @RW7+disp8 RW7 MULU A, MULU A, MULU +7 A, R7 MULU +8 A, @RW0 MULU FUJITSU MICROELECTRONICS LIMITED MULU A, MULUW A, @RW3+disp16 @RW3 MULU A, MULU +B A, @RW3 MULU +C A, @RW0+ @RW1+RW7 @RW1+ @PC+disp16 MULU A, addr16 MULU +E A, @RW2+ MULU +F A, @RW3+ MULU A, MULU A, +D A, MULU @RW0+RW7 MULUW A, @RW2+disp16 @RW2 MULUW A, @RW3+ MULUW A, @RW2+ MULUW A, @RW1+ MULUW A, @RW0+ MULU A, MULUW A, @RW1+disp16 @RW1 MULU +A A, @RW2 @RW1 +9 A, MULUW A, @RW6+disp8 RW6 MULUW A, @RW0+disp16 @RW0 MULU A, MULUW A, @RW5+disp8 RW5 MULU +6 A, R6 R5 +5 A, MULUW A, @RW2+disp8 RW2 MULUW A, @RW4+disp8 RW4 MULU A, MULU +2 A, R2 R1 +1 A, MULUW A, RW0 20 MULUW A, @RW1+disp8 RW1 MULU A, @RW0+disp8 +0 A, MULU 10 00 MUL A, R0 40 MULUW A, addr16 @PC+disp16 MULUW A, @RW1+RW7 MULUW A, @RW0+RW7 MULUW A, MUL A, @RW3+ MUL A, @RW2+ MUL A, @RW1+ MUL A, @RW0+ MUL A, @RW3+disp16 @RW3 MULUW A, MUL A, @RW2+disp16 @RW2 MULUW A, MUL A, @RW1+disp16 @RW1 MULUW A, MUL A, @RW0+disp16 @RW0 MULUW A, MUL A, @RW7+disp8 R7 MULUW A, MUL A, @RW6+disp8 R6 MULUW A, MUL A, @RW5+disp8 R5 MULUW A, MUL A, @RW4+disp8 R4 MULUW A, MUL A, @RW3+disp8 R3 MULUW A, MUL A, @RW2+disp8 R2 MULUW A, MUL A, @RW1+disp8 R1 MULUW A, @RW0+disp8 MULUW A, 30 MULW A, RW0 60 MUL A, addr16 @PC+disp16 MUL A, @RW1+RW7 MUL A, @RW0+RW7 MUL A, MULW A, @RW3+ MULW A, @RW2+ MULW A, @RW1+ MULW A, @RW0+ MULW A, @RW3+disp16 @RW3 MUL A, MULW A, @RW2+disp16 @RW2 MUL A, MULW A, @RW1+disp16 @RW1 MUL A, MULW A, @RW0+disp16 @RW0 MUL A, MULW A, @RW7+disp8 RW7 MUL A, MULW A, @RW6+disp8 RW6 MUL A, MULW A, @RW5+disp8 RW5 MUL A, MULW A, @RW4+disp8 RW4 MUL A, MULW A, @RW3+disp8 RW3 MUL A, MULW A, @RW2+disp8 RW2 MUL A, MULW A, @RW1+disp8 RW1 MUL A, @RW0+disp8 MUL A, 50 DIVU A, R0 80 MULW A, addr16 @PC+disp16 MULW A, @RW1+RW7 MULW A, @RW0+RW7 MULW A, DIVU A, @RW3+ DIVU A, @RW2+ DIVU A, @RW1+ DIVU A, @RW0+ DIVU A, @RW3+disp16 @RW3 MULW A, DIVU A, @RW2+disp16 @RW2 MULW A, DIVU A, @RW1+disp16 @RW1 MULW A, DIVU A, @RW0+disp16 @RW0 MULW A, DIVU A, @RW7+disp8 R7 MULW A, DIVU A, @RW6+disp8 R6 MULW A, DIVU A, @RW5+disp8 R5 MULW A, DIVU A, @RW4+disp8 R4 MULW A, DIVU A, @RW3+disp8 R3 MULW A, DIVU A, @RW2+disp8 R2 MULW A, DIVU A, @RW1+disp8 R1 MULW A, @RW0+disp8 MULW A, 70 DIVUW A, RW0 A0 DIVU A, addr16 @PC+disp16 DIVU A, @RW1+RW7 DIVU A, @RW0+RW7 DIVU A, DIVUW A, @RW3+ DIVUW A, @RW2+ DIVUW A, @RW1+ DIVUW A, @RW0+ DIVUW A, @RW3+disp16 @RW3 DIVU A, DIVUW A, @RW2+disp16 @RW2 DIVU A, DIVUW A, @RW1+disp16 @RW1 DIVU A, DIVUW A, @RW0+disp16 @RW0 DIVU A, DIVUW A, @RW7+disp8 RW7 DIVU A, DIVUW A, @RW6+disp8 RW6 DIVU A, DIVUW A, @RW5+disp8 RW5 DIVU A, DIVUW A, @RW4+disp8 RW4 DIVU A, DIVUW A, @RW3+disp8 RW3 DIVU A, DIVUW A, @RW2+disp8 RW2 DIVU A, DIVUW A, @RW1+disp8 RW1 DIVU A, @RW0+disp8 DIVU A, 90 DIV A, R0 C0 DIVUW A, addr16 @PC+disp16 DIVUW A, @RW1+RW7 DIVUW A, @RW0+RW7 DIVUW A, DIV A, @RW3+ DIV A, @RW2+ DIV A, @RW1+ DIV A, @RW0+ DIV A, @RW3+disp16 @RW3 DIVUW A, DIV A, @RW2+disp16 @RW2 DIVUW A, DIV A, @RW1+disp16 @RW1 DIVUW A, DIV A, @RW0+disp16 @RW0 DIVUW A, DIV A, @RW7+disp8 R7 DIVUW A, DIV A, @RW6+disp8 R6 DIVUW A, DIV A, @RW5+disp8 R5 DIVUW A, DIV A, @RW4+disp8 R4 DIVUW A, DIV A, @RW3+disp8 R3 DIVUW A, DIV A, @RW2+disp8 R2 DIVUW A, DIV A, @RW1+disp8 R1 DIVUW A, @RW0+disp8 DIVUW A, B0 DIV A, DIVW A, RW0 E0 DIV A, addr16 @PC+disp16 DIV A, @RW1+RW7 DIV A, @RW0+RW7 DIV A, DIVW A, @RW3+ DIVW A, @RW2+ DIVW A, @RW1+ DIVW A, @RW0+ DIVW A, @RW3+disp16 @RW3 DIV A, DIVW A, @RW2+disp16 @RW2 DIV A, DIVW A, @RW1+disp16 @RW1 DIV A, DIVW A, @RW0+disp16 @RW0 DIV A, DIVW A, @RW7+disp8 RW7 DIV A, DIVW A, @RW6+disp8 RW6 DIV A, DIVW A, @RW5+disp8 RW5 DIV A, DIVW A, @RW4+disp8 RW4 DIV A, DIVW A, @RW3+disp8 RW3 DIV A, DIVW A, @RW2+disp8 RW2 DIV A, DIVW A, @RW1+disp8 RW1 DIV A, @RW0+disp8 D0 DIVW A, addr16 @PC+disp16 DIVW A, @RW1+RW7 DIVW A, @RW0+RW7 DIVW A, @RW3+disp16 DIVW A, @RW2+disp16 DIVW A, @RW1+disp16 DIVW A, @RW0+disp16 DIVW A, @RW7+disp8 DIVW A, @RW6+disp8 DIVW A, @RW5+disp8 DIVW A, @RW4+disp8 DIVW A, @RW3+disp8 DIVW A, @RW2+disp8 DIVW A, @RW1+disp8 DIVW A, @RW0+disp8 DIVW A, F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.6-9 ea-type Instruction (9) (First Byte = 78H) CM44-00203-3E 2 F MC-16FX Family C.7 MOVEA RWi, ea Instruction Map APPENDIX APPENDIX C Instruction Maps Table C.7-1 lists MOVEA RWi, ea instruction map. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 357 358 MOVEA RW0, RW0 MOVEA MOVEA RW0, MOVEA RW1, @RW3+disp8 RW3 MOVEA RW0, MOVEA RW0, MOVEA +3 RW0, RW3 MOVEA +4 RW0, RW4 MOVEA MOVEA RW0, MOVEA RW1, @RW7+disp8 RW7 MOVEA RW0, MOVEA RW0, MOVEA +7 RW0, RW7 MOVEA +8 RW0, @RW0 MOVEA FUJITSU MICROELECTRONICS LIMITED MOVEA RW0, MOVEA RW1, @RW3+disp16 @RW3 MOVEA RW0, MOVEA +B RW0, @RW3 MOVEA +C RW0, @RW0+ @RW1+RW7 @RW1+ @PC+disp16 MOVEA RW0, addr16 MOVEA +E RW0, @RW2+ MOVEA +F RW0, @RW3+ MOVEA RW0, MOVEA RW0, +D RW0, MOVEA @RW0+RW7 MOVEA RW1, @RW2+disp16 @RW2 MOVEA RW1, @RW3+ MOVEA RW1, @RW2+ MOVEA RW1, @RW1+ MOVEA RW1, @RW0+ MOVEA RW0, MOVEA RW1, @RW1+disp16 @RW1 MOVEA +A RW0, @RW2 @RW1 +9 RW0, MOVEA RW1, @RW6+disp8 RW6 MOVEA RW1, @RW0+disp16 @RW0 MOVEA RW0, MOVEA RW1, @RW5+disp8 RW5 MOVEA +6 RW0, RW6 RW5 +5 RW0, MOVEA RW1, @RW2+disp8 RW2 MOVEA RW1, @RW4+disp8 RW4 MOVEA RW0, MOVEA +2 RW0, RW2 RW1 +1 RW0, MOVEA RW1, RW0 20 MOVEA RW1, @RW1+disp8 RW1 MOVEA RW0, @RW0+disp8 +0 RW0, MOVEA 10 00 MOVEA RW2, RW0 40 MOVEA RW1, addr16 @PC+disp16 MOVEA RW1, @RW1+RW7 MOVEA RW1, @RW0+RW7 MOVEA RW1, MOVEA RW2, @RW3+ MOVEA RW2, @RW2+ MOVEA RW2, @RW1+ MOVEA RW2, @RW0+ MOVEA RW2, @RW3+disp16 @RW3 MOVEA RW1, MOVEA RW2, @RW2+disp16 @RW2 MOVEA RW1, MOVEA RW2, @RW1+disp16 @RW1 MOVEA RW1, MOVEA RW2, @RW0+disp16 @RW0 MOVEA RW1, MOVEA RW2, @RW7+disp8 RW7 MOVEA RW1, MOVEA RW2, @RW6+disp8 RW6 MOVEA RW1, MOVEA RW2, @RW5+disp8 RW5 MOVEA RW1, MOVEA RW2, @RW4+disp8 RW4 MOVEA RW1, MOVEA RW2, @RW3+disp8 RW3 MOVEA RW1, MOVEA RW2, @RW2+disp8 RW2 MOVEA RW1, MOVEA RW2, @RW1+disp8 RW1 MOVEA RW1, @RW0+disp8 MOVEA RW1, 30 MOVEA RW3, RW0 60 MOVEA RW2, addr16 @PC+disp16 MOVEA RW2, @RW1+RW7 MOVEA RW2, @RW0+RW7 MOVEA RW2, MOVEA RW3, @RW3+ MOVEA RW3, @RW2+ MOVEA RW3, @RW1+ MOVEA RW3, @RW0+ MOVEA RW3, @RW3+disp16 @RW3 MOVEA RW2, MOVEA RW3, @RW2+disp16 @RW2 MOVEA RW2, MOVEA RW3, @RW1+disp16 @RW1 MOVEA RW2, MOVEA RW3, @RW0+disp16 @RW0 MOVEA RW2, MOVEA RW3, @RW7+disp8 RW7 MOVEA RW2, MOVEA RW3, @RW6+disp8 RW6 MOVEA RW2, MOVEA RW3, @RW5+disp8 RW5 MOVEA RW2, MOVEA RW3, @RW4+disp8 RW4 MOVEA RW2, MOVEA RW3, @RW3+disp8 RW3 MOVEA RW2, MOVEA RW3, @RW2+disp8 RW2 MOVEA RW2, MOVEA RW3, @RW1+disp8 RW1 MOVEA RW2, @RW0+disp8 MOVEA RW2, 50 MOVEA RW4, RW0 80 MOVEA RW3, addr16 @PC+disp16 MOVEA RW3, @RW1+RW7 MOVEA RW3, @RW0+RW7 MOVEA RW3, MOVEA RW4, @RW3+ MOVEA RW4, @RW2+ MOVEA RW4, @RW1+ MOVEA RW4, @RW0+ MOVEA RW4, @RW3+disp16 @RW3 MOVEA RW3, MOVEA RW4, @RW2+disp16 @RW2 MOVEA RW3, MOVEA RW4, @RW1+disp16 @RW1 MOVEA RW3, MOVEA RW4, @RW0+disp16 @RW0 MOVEA RW3, MOVEA RW4, @RW7+disp8 RW7 MOVEA RW3, MOVEA RW4, @RW6+disp8 RW6 MOVEA RW3, MOVEA RW4, @RW5+disp8 RW5 MOVEA RW3, MOVEA RW4, @RW4+disp8 RW4 MOVEA RW3, MOVEA RW4, @RW3+disp8 RW3 MOVEA RW3, MOVEA RW4, @RW2+disp8 RW2 MOVEA RW3, MOVEA RW4, @RW1+disp8 RW1 MOVEA RW3, @RW0+disp8 MOVEA RW3, 70 MOVEA RW5, RW0 A0 MOVEA RW4, addr16 @PC+disp16 MOVEA RW4, @RW1+RW7 MOVEA RW4, @RW0+RW7 MOVEA RW4, MOVEA RW5, @RW3+ MOVEA RW5, @RW2+ MOVEA RW5, @RW1+ MOVEA RW5, @RW0+ MOVEA RW5, @RW3+disp16 @RW3 MOVEA RW4, MOVEA RW5, @RW2+disp16 @RW2 MOVEA RW4, MOVEA RW5, @RW1+disp16 @RW1 MOVEA RW4, MOVEA RW5, @RW0+disp16 @RW0 MOVEA RW4, MOVEA RW5, @RW7+disp8 RW7 MOVEA RW4, MOVEA RW5, @RW6+disp8 RW6 MOVEA RW4, MOVEA RW5, @RW5+disp8 RW5 MOVEA RW4, MOVEA RW5, @RW4+disp8 RW4 MOVEA RW4, MOVEA RW5, @RW3+disp8 RW3 MOVEA RW4, MOVEA RW5, @RW2+disp8 RW2 MOVEA RW4, MOVEA RW5, @RW1+disp8 RW1 MOVEA RW4, @RW0+disp8 MOVEA RW4, 90 MOVEA RW6, RW0 C0 MOVEA RW5, addr16 @PC+disp16 MOVEA RW5, @RW1+RW7 MOVEA RW5, @RW0+RW7 MOVEA RW5, MOVEA RW6, @RW3+ MOVEA RW6, @RW2+ MOVEA RW6, @RW1+ MOVEA RW6, @RW0+ MOVEA RW6, @RW3+disp16 @RW3 MOVEA RW5, MOVEA RW6, @RW2+disp16 @RW2 MOVEA RW5, MOVEA RW6, @RW1+disp16 @RW1 MOVEA RW5, MOVEA RW6, @RW0+disp16 @RW0 MOVEA RW5, MOVEA RW6, @RW7+disp8 RW7 MOVEA RW5, MOVEA RW6, @RW6+disp8 RW6 MOVEA RW5, MOVEA RW6, @RW5+disp8 RW5 MOVEA RW5, MOVEA RW6, @RW4+disp8 RW4 MOVEA RW5, MOVEA RW6, @RW3+disp8 RW3 MOVEA RW5, MOVEA RW6, @RW2+disp8 RW2 MOVEA RW5, MOVEA RW6, @RW1+disp8 RW1 MOVEA RW5, @RW0+disp8 MOVEA RW5, B0 MOVEA RW7, RW0 E0 MOVEA RW6, addr16 @PC+disp16 MOVEA RW6, @RW1+RW7 MOVEA RW6, @RW0+RW7 MOVEA RW6, MOVEA RW7, @RW3+ MOVEA RW7, @RW2+ MOVEA RW7, @RW1+ MOVEA RW7, @RW0+ MOVEA RW7, @RW3+disp16 @RW3 MOVEA RW6, MOVEA RW7, @RW2+disp16 @RW2 MOVEA RW6, MOVEA RW7, @RW1+disp16 @RW1 MOVEA RW6, MOVEA RW7, @RW0+disp16 @RW0 MOVEA RW6, MOVEA RW7, @RW7+disp8 RW7 MOVEA RW6, MOVEA RW7, @RW6+disp8 RW6 MOVEA RW6, MOVEA RW7, @RW5+disp8 RW5 MOVEA RW6, MOVEA RW7, @RW4+disp8 RW4 MOVEA RW6, MOVEA RW7, @RW3+disp8 RW3 MOVEA RW6, MOVEA RW7, @RW2+disp8 RW2 MOVEA RW6, MOVEA RW7, @RW1+disp8 RW1 MOVEA RW6, @RW0+disp8 MOVEA RW6, D0 MOVEA RW7, addr16 @PC+disp16 MOVEA RW7, @RW1+RW7 MOVEA RW7, @RW0+RW7 MOVEA RW7, @RW3+disp16 MOVEA RW7, @RW2+disp16 MOVEA RW7, @RW1+disp16 MOVEA RW7, @RW0+disp16 MOVEA RW7, @RW7+disp8 MOVEA RW7, @RW6+disp8 MOVEA RW7, @RW5+disp8 MOVEA RW7, @RW4+disp8 MOVEA RW7, @RW3+disp8 MOVEA RW7, @RW2+disp8 MOVEA RW7, @RW1+disp8 MOVEA RW7, @RW0+disp8 MOVEA RW7, F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.7-1 MOVEA RWi, ea Instruction (First Byte = 79H) CM44-00203-3E 2 F MC-16FX Family C.8 MOV Ri, ea Instruction Map APPENDIX APPENDIX C Instruction Maps Table C.8-1 lists MOV Ri, ea instruction map. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 359 360 MOV R0, R0 MOV MOV R0, MOV R1, @RW3+disp8 R3 MOV R0, MOV R0, MOV +3 R0, R3 MOV +4 R0, R4 MOV MOV R0, MOV R1, @RW7+disp8 R7 MOV R0, MOV +7 R0, R7 MOV +8 R0, @RW0 FUJITSU MICROELECTRONICS LIMITED MOV R0, MOV R1, @RW3+disp16 @RW3 MOV R0, MOV +B R0, @RW3 MOV +C R0, @RW0+ @RW1+RW7 @RW1+ @PC+disp16 MOV R0, addr16 MOV +E R0, @RW2+ MOV +F R0, @RW3+ MOV R0, MOV R0, +D R0, MOV @RW0+RW7 MOV R1, @RW2+disp16 @RW2 MOV R1, @RW3+ MOV R1, @RW2+ MOV R1, @RW1+ MOV R1, @RW0+ MOV R0, MOV R1, @RW1+disp16 @RW1 MOV R0, MOV +A R0, @RW2 @RW1 +9 R0, MOV MOV R1, @RW6+disp8 R6 MOV R1, @RW0+disp16 @RW0 MOV R0, MOV R1, @RW5+disp8 R5 MOV +6 R0, R6 R5 +5 R0, MOV R1, @RW2+disp8 R2 MOV R1, @RW4+disp8 R4 MOV R0, MOV +2 R0, R2 R1 +1 R0, MOV R1, R0 20 MOV R1, @RW1+disp8 R1 MOV R0, +0 R0, @RW0+disp8 10 MOV 00 MOV R2, R0 40 MOV R1, addr16 @PC+disp16 MOV R1, @RW1+RW7 MOV R1, @RW0+RW7 MOV R1, MOV R2, @RW3+ MOV R2, @RW2+ MOV R2, @RW1+ MOV R2, @RW0+ MOV R2, @RW3+disp16 @RW3 MOV R1, MOV R2, @RW2+disp16 @RW2 MOV R1, MOV R2, @RW1+disp16 @RW1 MOV R1, MOV R2, @RW0+disp16 @RW0 MOV R1, MOV R2, @RW7+disp8 R7 MOV R1, MOV R2, @RW6+disp8 R6 MOV R1, MOV R2, @RW5+disp8 R5 MOV R1, MOV R2, @RW4+disp8 R4 MOV R1, MOV R2, @RW3+disp8 R3 MOV R1, MOV R2, @RW2+disp8 R2 MOV R1, MOV R2, @RW1+disp8 R1 MOV R1, @RW0+disp8 MOV R1, 30 MOV R3, R0 60 MOV R2, addr16 @PC+disp16 MOV R2, @RW1+RW7 MOV R2, @RW0+RW7 MOV R2, MOV R3, @RW3+ MOV R3, @RW2+ MOV R3, @RW1+ MOV R3, @RW0+ MOV R3, @RW3+disp16 @RW3 MOV R2, MOV R3, @RW2+disp16 @RW2 MOV R2, MOV R3, @RW1+disp16 @RW1 MOV R2, MOV R3, @RW0+disp16 @RW0 MOV R2, MOV R3, @RW7+disp8 R7 MOV R2, MOV R3, @RW6+disp8 R6 MOV R2, MOV R3, @RW5+disp8 R5 MOV R2, MOV R3, @RW4+disp8 R4 MOV R2, MOV R3, @RW3+disp8 R3 MOV R2, MOV R3, @RW2+disp8 R2 MOV R2, MOV R3, @RW1+disp8 R1 MOV R2, @RW0+disp8 MOV R2, 50 MOV R4, R0 80 MOV R3, addr16 @PC+disp16 MOV R3, @RW1+RW7 MOV R3, @RW0+RW7 MOV R3, MOV R4, @RW3+ MOV R4, @RW2+ MOV R4, @RW1+ MOV R4, @RW0+ MOV R4, @RW3+disp16 @RW3 MOV R3, MOV R4, @RW2+disp16 @RW2 MOV R3, MOV R4, @RW1+disp16 @RW1 MOV R3, MOV R4, @RW0+disp16 @RW0 MOV R3, MOV R4, @RW7+disp8 R7 MOV R3, MOV R4, @RW6+disp8 R6 MOV R3, MOV R4, @RW5+disp8 R5 MOV R3, MOV R4, @RW4+disp8 R4 MOV R3, MOV R4, @RW3+disp8 R3 MOV R3, MOV R4, @RW2+disp8 R2 MOV R3, MOV R4, @RW1+disp8 R1 MOV R3, @RW0+disp8 MOV R3, 70 MOV R5, R0 A0 MOV R4, addr16 @PC+disp16 MOV R4, @RW1+RW7 MOV R4, @RW0+RW7 MOV R4, MOV R5, @RW3+ MOV R5, @RW2+ MOV R5, @RW1+ MOV R5, @RW0+ MOV R5, @RW3+disp16 @RW3 MOV R4, MOV R5, @RW2+disp16 @RW2 MOV R4, MOV R5, @RW1+disp16 @RW1 MOV R4, MOV R5, @RW0+disp16 @RW0 MOV R4, MOV R5, @RW7+disp8 R7 MOV R4, MOV R5, @RW6+disp8 R6 MOV R4, MOV R5, @RW5+disp8 R5 MOV R4, MOV R5, @RW4+disp8 R4 MOV R4, MOV R5, @RW3+disp8 R3 MOV R4, MOV R5, @RW2+disp8 R2 MOV R4, MOV R5, @RW1+disp8 R1 MOV R4, @RW0+disp8 MOV R4, 90 MOV R6, R0 C0 MOV R5, addr16 @PC+disp16 MOV R5, @RW1+RW7 MOV R5, @RW0+RW7 MOV R5, MOV R6, @RW3+ MOV R6, @RW2+ MOV R6, @RW1+ MOV R6, @RW0+ MOV R6, @RW3+disp16 @RW3 MOV R5, MOV R6, @RW2+disp16 @RW2 MOV R5, MOV R6, @RW1+disp16 @RW1 MOV R5, MOV R6, @RW0+disp16 @RW0 MOV R5, MOV R6, @RW7+disp8 R7 MOV R5, MOV R6, @RW6+disp8 R6 MOV R5, MOV R6, @RW5+disp8 R5 MOV R5, MOV R6, @RW4+disp8 R4 MOV R5, MOV R6, @RW3+disp8 R3 MOV R5, MOV R6, @RW2+disp8 R2 MOV R5, MOV R6, @RW1+disp8 R1 MOV R5, @RW0+disp8 MOV R5, B0 MOV R7, R0 E0 MOV R6, addr16 @PC+disp16 MOV R6, @RW1+RW7 MOV R6, @RW0+RW7 MOV R6, MOV R7, @RW3+ MOV R7, @RW2+ MOV R7, @RW1+ MOV R7, @RW0+ MOV R7, @RW3+disp16 @RW3 MOV R6, MOV R7, @RW2+disp16 @RW2 MOV R6, MOV R7, @RW1+disp16 @RW1 MOV R6, MOV R7, @RW0+disp16 @RW0 MOV R6, MOV R7, @RW7+disp8 R7 MOV R6, MOV R7, @RW6+disp8 R6 MOV R6, MOV R7, @RW5+disp8 R5 MOV R6, MOV R7, @RW4+disp8 R4 MOV R6, MOV R7, @RW3+disp8 R3 MOV R6, MOV R7, @RW2+disp8 R2 MOV R6, MOV R7, @RW1+disp8 R1 MOV R6, @RW0+disp8 MOV R6, D0 MOV R7, addr16 @PC+disp16 MOV R7, @RW1+RW7 MOV R7, @RW0+RW7 MOV R7, @RW3+disp16 MOV R7, @RW2+disp16 MOV R7, @RW1+disp16 MOV R7, @RW0+disp16 MOV R7, @RW7+disp8 MOV R7, @RW6+disp8 MOV R7, @RW5+disp8 MOV R7, @RW4+disp8 MOV R7, @RW3+disp8 MOV R7, @RW2+disp8 MOV R7, @RW1+disp8 MOV R7, @RW0+disp8 MOV R7, F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.8-1 MOV Ri, ea Instruction (First Byte = 7AH) CM44-00203-3E 2 F MC-16FX Family C.9 MOVW RWi, ea Instruction Map APPENDIX APPENDIX C Instruction Maps Table C.9-1 lists MOVW RWi, ea instruction map. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 361 362 MOVW RW0, RW0 MOVW MOVW RW0, MOVW RW1, @RW3+disp8 RW3 MOVW RW0, MOVW RW0, MOVW +3 RW0, RW3 MOVW +4 RW0, RW4 MOVW MOVW RW0, MOVW RW1, @RW7+disp8 RW7 MOVW RW0, MOVW RW0, MOVW +7 RW0, RW7 MOVW +8 RW0, @RW0 MOVW FUJITSU MICROELECTRONICS LIMITED MOVW RW0, MOVW RW1, @RW3+disp16 @RW3 MOVW RW0, MOVW +B RW0, @RW3 MOVW +C RW0, @RW0+ @RW1+RW7 @RW1+ @PC+disp16 MOVW RW0, addr16 MOVW +E RW0, @RW2+ MOVW +F RW0, @RW3+ MOVW RW0, MOVW RW0, +D RW0, MOVW @RW0+RW7 MOVW RW1, @RW2+disp16 @RW2 MOVW RW1, @RW3+ MOVW RW1, @RW2+ MOVW RW1, @RW1+ MOVW RW1, @RW0+ MOVW RW0, MOVW RW1, @RW1+disp16 @RW1 MOVW +A RW0, @RW2 @RW1 +9 RW0, MOVW RW1, @RW6+disp8 RW6 MOVW RW1, @RW0+disp16 @RW0 MOVW RW0, MOVW RW1, @RW5+disp8 RW5 MOVW +6 RW0, RW6 RW5 +5 RW0, MOVW RW1, @RW2+disp8 RW2 MOVW RW1, @RW4+disp8 RW4 MOVW RW0, MOVW +2 RW0, RW2 RW1 +1 RW0, MOVW RW1, RW0 20 MOVW RW1, @RW1+disp8 RW1 MOVW RW0, @RW0+disp8 +0 RW0, MOVW 10 00 MOVW RW2, RW0 40 MOVW RW1, addr16 @PC+disp16 MOVW RW1, @RW1+RW7 MOVW RW1, @RW0+RW7 MOVW RW1, MOVW RW2, @RW3+ MOVW RW2, @RW2+ MOVW RW2, @RW1+ MOVW RW2, @RW0+ MOVW RW2, @RW3+disp16 @RW3 MOVW RW1, MOVW RW2, @RW2+disp16 @RW2 MOVW RW1, MOVW RW2, @RW1+disp16 @RW1 MOVW RW1, MOVW RW2, @RW0+disp16 @RW0 MOVW RW1, MOVW RW2, @RW7+disp8 RW7 MOVW RW1, MOVW RW2, @RW6+disp8 RW6 MOVW RW1, MOVW RW2, @RW5+disp8 RW5 MOVW RW1, MOVW RW2, @RW4+disp8 RW4 MOVW RW1, MOVW RW2, @RW3+disp8 RW3 MOVW RW1, MOVW RW2, @RW2+disp8 RW2 MOVW RW1, MOVW RW2, @RW1+disp8 RW1 MOVW RW1, @RW0+disp8 MOVW RW1, 30 MOVW RW3, RW0 60 MOVW RW2, addr16 @PC+disp16 MOVW RW2, @RW1+RW7 MOVW RW2, @RW0+RW7 MOVW RW2, MOVW RW3, @RW3+ MOVW RW3, @RW2+ MOVW RW3, @RW1+ MOVW RW3, @RW0+ MOVW RW3, @RW3+disp16 @RW3 MOVW RW2, MOVW RW3, @RW2+disp16 @RW2 MOVW RW2, MOVW RW3, @RW1+disp16 @RW1 MOVW RW2, MOVW RW3, @RW0+disp16 @RW0 MOVW RW2, MOVW RW3, @RW7+disp8 RW7 MOVW RW2, MOVW RW3, @RW6+disp8 RW6 MOVW RW2, MOVW RW3, @RW5+disp8 RW5 MOVW RW2, MOVW RW3, @RW4+disp8 RW4 MOVW RW2, MOVW RW3, @RW3+disp8 RW3 MOVW RW2, MOVW RW3, @RW2+disp8 RW2 MOVW RW2, MOVW RW3, @RW1+disp8 RW1 MOVW RW2, @RW0+disp8 MOVW RW2, 50 MOVW RW4, RW0 80 MOVW RW3, addr16 @PC+disp16 MOVW RW3, @RW1+RW7 MOVW RW3, @RW0+RW7 MOVW RW3, MOVW RW4, @RW3+ MOVW RW4, @RW2+ MOVW RW4, @RW1+ MOVW RW4, @RW0+ MOVW RW4, @RW3+disp16 @RW3 MOVW RW3, MOVW RW4, @RW2+disp16 @RW2 MOVW RW3, MOVW RW4, @RW1+disp16 @RW1 MOVW RW3, MOVW RW4, @RW0+disp16 @RW0 MOVW RW3, MOVW RW4, @RW7+disp8 RW7 MOVW RW3, MOVW RW4, @RW6+disp8 RW6 MOVW RW3, MOVW RW4, @RW5+disp8 RW5 MOVW RW3, MOVW RW4, @RW4+disp8 RW4 MOVW RW3, MOVW RW4, @RW3+disp8 RW3 MOVW RW3, MOVW RW4, @RW2+disp8 RW2 MOVW RW3, MOVW RW4, @RW1+disp8 RW1 MOVW RW3, @RW0+disp8 MOVW RW3, 70 MOVW RW5, RW0 A0 MOVW RW4, addr16 @PC+disp16 MOVW RW4, @RW1+RW7 MOVW RW4, @RW0+RW7 MOVW RW4, MOVW RW5, @RW3+ MOVW RW5, @RW2+ MOVW RW5, @RW1+ MOVW RW5, @RW0+ MOVW RW5, @RW3+disp16 @RW3 MOVW RW4, MOVW RW5, @RW2+disp16 @RW2 MOVW RW4, MOVW RW5, @RW1+disp16 @RW1 MOVW RW4, MOVW RW5, @RW0+disp16 @RW0 MOVW RW4, MOVW RW5, @RW7+disp8 RW7 MOVW RW4, MOVW RW5, @RW6+disp8 RW6 MOVW RW4, MOVW RW5, @RW5+disp8 RW5 MOVW RW4, MOVW RW5, @RW4+disp8 RW4 MOVW RW4, MOVW RW5, @RW3+disp8 RW3 MOVW RW4, MOVW RW5, @RW2+disp8 RW2 MOVW RW4, MOVW RW5, @RW1+disp8 RW1 MOVW RW4, @RW0+disp8 MOVW RW4, 90 MOVW RW6, RW0 C0 MOVW RW5, addr16 @PC+disp16 MOVW RW5, @RW1+RW7 MOVW RW5, @RW0+RW7 MOVW RW5, MOVW RW6, @RW3+ MOVW RW6, @RW2+ MOVW RW6, @RW1+ MOVW RW6, @RW0+ MOVW RW6, @RW3+disp16 @RW3 MOVW RW5, MOVW RW6, @RW2+disp16 @RW2 MOVW RW5, MOVW RW6, @RW1+disp16 @RW1 MOVW RW5, MOVW RW6, @RW0+disp16 @RW0 MOVW RW5, MOVW RW6, @RW7+disp8 RW7 MOVW RW5, MOVW RW6, @RW6+disp8 RW6 MOVW RW5, MOVW RW6, @RW5+disp8 RW5 MOVW RW5, MOVW RW6, @RW4+disp8 RW4 MOVW RW5, MOVW RW6, @RW3+disp8 RW3 MOVW RW5, MOVW RW6, @RW2+disp8 RW2 MOVW RW5, MOVW RW6, @RW1+disp8 RW1 MOVW RW5, @RW0+disp8 MOVW RW5, B0 MOVW RW7, RW0 E0 MOVW RW6, addr16 @PC+disp16 MOVW RW6, @RW1+RW7 MOVW RW6, @RW0+RW7 MOVW RW6, MOVW RW7, @RW3+ MOVW RW7, @RW2+ MOVW RW7, @RW1+ MOVW RW7, @RW0+ MOVW RW7, @RW3+disp16 @RW3 MOVW RW6, MOVW RW7, @RW2+disp16 @RW2 MOVW RW6, MOVW RW7, @RW1+disp16 @RW1 MOVW RW6, MOVW RW7, @RW0+disp16 @RW0 MOVW RW6, MOVW RW7, @RW7+disp8 RW7 MOVW RW6, MOVW RW7, @RW6+disp8 RW6 MOVW RW6, MOVW RW7, @RW5+disp8 RW5 MOVW RW6, MOVW RW7, @RW4+disp8 RW4 MOVW RW6, MOVW RW7, @RW3+disp8 RW3 MOVW RW6, MOVW RW7, @RW2+disp8 RW2 MOVW RW6, MOVW RW7, @RW1+disp8 RW1 MOVW RW6, @RW0+disp8 MOVW RW6, D0 MOVW RW7, addr16 @PC+disp16 MOVW RW7, @RW1+RW7 MOVW RW7, @RW0+RW7 MOVW RW7, @RW3+disp16 MOVW RW7, @RW2+disp16 MOVW RW7, @RW1+disp16 MOVW RW7, @RW0+disp16 MOVW RW7, @RW7+disp8 MOVW RW7, @RW6+disp8 MOVW RW7, @RW5+disp8 MOVW RW7, @RW4+disp8 MOVW RW7, @RW3+disp8 MOVW RW7, @RW2+disp8 MOVW RW7, @RW1+disp8 MOVW RW7, @RW0+disp8 MOVW RW7, F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.9-1 MOVW RWi, ea Instruction (First Byte = 7BH) CM44-00203-3E 2 F MC-16FX Family C.10 MOV ea, Ri Instruction Map APPENDIX APPENDIX C Instruction Maps Table C.10-1 lists MOV ea, Ri instruction map. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 363 364 FUJITSU MICROELECTRONICS LIMITED MOV @RW1+disp8, R1, R0 R1 MOV MOV @RW2+disp8, R2, R0 R1 MOV MOV @RW3+disp8, R3, R0 R1 MOV MOV @RW4+disp8, R4, R0 R1 MOV MOV @RW5+disp8, R5, R0 R1 MOV MOV @RW6+disp8, R6, R0 R1 MOV MOV @RW7+disp8, R7, R0 R1 MOV MOV @RW0+disp16, @RW0, R0 R1 MOV MOV @RW1+disp16, @RW1, R0 R1 MOV MOV @RW2+disp16, @RW2, R0 R1 MOV MOV @RW3+disp16, @RW3, R0 R1 MOV MOV +2 R2, R0 MOV +3 R3, R0 MOV +4 R4, R0 MOV +5 R5, R0 MOV +6 R6, R0 MOV +7 R7, R0 MOV +8 @RW0, R0 MOV +9 @RW1, R0 MOV +A @RW2, R0 MOV +B @RW3, R0 MOV +C @RW0+, R0 MOV @RW1+RW7, @RW1+, R0 R1 MOV MOV @PC+disp16, @RW2+, R0 R1 MOV addr16, R0 MOV +E @RW2+, R0 MOV +F @RW3+, R0 MOV @RW3+, R1 MOV MOV +D @RW1+, R0 MOV @RW0+RW7, @RW0+, R0 R1 MOV MOV addr16, R1 MOV @RW3+, R2 MOV @PC+disp16, @RW2+, R1 R2 MOV MOV @RW1+RW7, @RW1+, R1 R2 MOV MOV @RW0+RW7, @RW0+, R1 R2 MOV MOV @RW3+disp16, @RW3, R1 R2 MOV MOV @RW2+disp16, @RW2, R1 R2 MOV MOV @RW1+disp16, @RW1, R1 R2 MOV MOV @RW0+disp16, @RW0, R1 R2 MOV MOV @RW7+disp8, R7, R1 R2 MOV MOV @RW6+disp8, R6, R1 R2 MOV MOV @RW5+disp8, R5, R1 R2 MOV MOV @RW4+disp8, R4, R1 R2 MOV MOV @RW3+disp8, R3, R1 R2 MOV MOV @RW2+disp8, R2, R1 R2 MOV MOV @RW1+disp8, R1, R1 R2 MOV R2 R1 R1 40 MOV @RW0+disp8, R0, MOV 30 R0 MOV 20 @RW0+disp8, R0, MOV 10 MOV +1 R1, R0 R0 +0 R0, MOV 00 MOV 60 R3 MOV addr16, R2 MOV @RW3+, R3 MOV @PC+disp16, @RW2+, R2 R3 MOV MOV @RW1+RW7, @RW1+, R2 R3 MOV MOV @RW0+RW7, @RW0+, R2 R3 MOV MOV @RW3+disp16, @RW3, R2 R3 MOV MOV @RW2+disp16, @RW2, R2 R3 MOV MOV @RW1+disp16, @RW1, R2 R3 MOV MOV @RW0+disp16, @RW0, R2 R3 MOV MOV @RW7+disp8, R7, R2 R3 MOV MOV @RW6+disp8, R6, R2 R3 MOV MOV @RW5+disp8, R5, R2 R3 MOV MOV @RW4+disp8, R4, R2 R3 MOV MOV @RW3+disp8, R3, R2 R3 MOV MOV @RW2+disp8, R2, R2 R3 MOV MOV @RW1+disp8, R1, R2 R3 MOV R2 @RW0+disp8, R0, MOV 50 MOV 80 R4 MOV addr16, R3 MOV @RW3+, R4 MOV @PC+disp16, @RW2+, R3 R4 MOV MOV @RW1+RW7, @RW1+, R3 R4 MOV MOV @RW0+RW7, @RW0+, R3 R4 MOV MOV @RW3+disp16, @RW3, R3 R4 MOV MOV @RW2+disp16, @RW2, R3 R4 MOV MOV @RW1+disp16, @RW1, R3 R4 MOV MOV @RW0+disp16, @RW0, R3 R4 MOV MOV @RW7+disp8, R7, R3 R4 MOV MOV @RW6+disp8, R6, R3 R4 MOV MOV @RW5+disp8, R5, R3 R4 MOV MOV @RW4+disp8, R4, R3 R4 MOV MOV @RW3+disp8, R3, R3 R4 MOV MOV @RW2+disp8, R2, R3 R4 MOV MOV @RW1+disp8, R1, R3 R4 MOV R3 @RW0+disp8, R0, MOV 70 MOV A0 R5 MOV addr16, R4 MOV @RW3+, R5 MOV @PC+disp16, @RW2+, R4 R5 MOV MOV @RW1+RW7, @RW1+, R4 R5 MOV MOV @RW0+RW7, @RW0+, R4 R5 MOV MOV @RW3+disp16, @RW3, R4 R5 MOV MOV @RW2+disp16, @RW2, R4 R5 MOV MOV @RW1+disp16, @RW1, R4 R5 MOV MOV @RW0+disp16, @RW0, R4 R5 MOV MOV @RW7+disp8, R7, R4 R5 MOV MOV @RW6+disp8, R6, R4 R5 MOV MOV @RW5+disp8, R5, R4 R5 MOV MOV @RW4+disp8, R4, R4 R5 MOV MOV @RW3+disp8, R3, R4 R5 MOV MOV @RW2+disp8, R2, R4 R5 MOV MOV @RW1+disp8, R1, R4 R5 MOV R4 @RW0+disp8, R0, MOV 90 MOV C0 R6 MOV addr16, R5 MOV @RW3+, R6 MOV @PC+disp16, @RW2+, R5 R6 MOV MOV @RW1+RW7, @RW1+, R5 R6 MOV MOV @RW0+RW7, @RW0+, R5 R6 MOV MOV @RW3+disp16, @RW3, R5 R6 MOV MOV @RW2+disp16, @RW2, R5 R6 MOV MOV @RW1+disp16, @RW1, R5 R6 MOV MOV @RW0+disp16, @RW0, R5 R6 MOV MOV @RW7+disp8, R7, R5 R6 MOV MOV @RW6+disp8, R6, R5 R6 MOV MOV @RW5+disp8, R5, R5 R6 MOV MOV @RW4+disp8, R4, R5 R6 MOV MOV @RW3+disp8, R3, R5 R6 MOV MOV @RW2+disp8, R2, R5 R6 MOV MOV @RW1+disp8, R1, R5 R6 MOV R5 @RW0+disp8, R0, MOV B0 MOV E0 R7 MOV addr16, R6 MOV @RW3+, R7 MOV @PC+disp16, @RW2+, R6 R7 MOV MOV @RW1+RW7, @RW1+, R6 R7 MOV MOV @RW0+RW7, @RW0+, R6 R7 MOV MOV @RW3+disp16, @RW3, R6 R7 MOV MOV @RW2+disp16, @RW2, R6 R7 MOV MOV @RW1+disp16, @RW1, R6 R7 MOV MOV @RW0+disp16, @RW0, R6 R7 MOV MOV @RW7+disp8, R7, R6 R7 MOV MOV @RW6+disp8, R6, R6 R7 MOV MOV @RW5+disp8, R5, R6 R7 MOV MOV @RW4+disp8, R4, R6 R7 MOV MOV @RW3+disp8, R3, R6 R7 MOV MOV @RW2+disp8, R2, R6 R7 MOV MOV @RW1+disp8, R1, R6 R7 MOV R6 @RW0+disp8, R0, MOV D0 MOV addr16, R7 R7 @PC+disp16, MOV R7 @RW1+RW7, MOV R7 @RW0+RW7, MOV R7 @RW3+disp16, MOV R7 @RW2+disp16, MOV R7 @RW1+disp16, MOV R7 @RW0+disp16, MOV R7 @RW7+disp8, MOV R7 @RW6+disp8, MOV R7 @RW5+disp8, MOV R7 @RW4+disp8, MOV R7 @RW3+disp8, MOV R7 @RW2+disp8, MOV R7 @RW1+disp8, MOV R7 @RW0+disp8, MOV F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.10-1 MOV ea, Ri Instruction (First Byte = 7CH) CM44-00203-3E 2 F MC-16FX Family C.11 MOVW ea, RWi Instruction Map APPENDIX APPENDIX C Instruction Maps Table C.11-1 lists MOVW ea, RWi instruction map. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 365 366 FUJITSU MICROELECTRONICS LIMITED MOVW @RW1+disp8, RW1, RW0 RW1 MOVW MOVW @RW2+disp8, RW2, RW0 RW1 MOVW MOVW @RW3+disp8, RW3, RW0 RW1 MOVW MOVW @RW4+disp8, RW4, RW0 RW1 MOVW MOVW @RW5+disp8, RW5, RW0 RW1 MOVW MOVW @RW6+disp8, RW6, RW0 RW1 MOVW MOVW @RW7+disp8, RW7, RW0 RW1 MOVW MOVW @RW0+disp16, @RW0, RW0 RW1 MOVW MOVW @RW1+disp16, @RW1, RW0 RW1 MOVW MOVW @RW2+disp16, @RW2, RW0 RW1 MOVW MOVW @RW3+disp16, @RW3, RW0 RW1 MOVW MOVW +2 RW2, RW0 MOVW +3 RW3, RW0 MOVW +4 RW4, RW0 MOVW +5 RW5, RW0 MOVW +6 RW6, RW0 MOVW +7 RW7, RW0 MOVW +8 @RW0, RW0 MOVW +9 @RW1, RW0 MOVW +A @RW2, RW0 MOVW +B @RW3, RW0 MOVW +C @RW0+, RW0 MOVW @RW1+RW7, @RW1+, RW0 RW1 MOVW MOVW @PC+disp16, @RW2+, RW0 RW1 MOVW addr16, RW0 MOVW +E @RW2+, RW0 MOVW +F @RW3+, RW0 MOVW @RW3+, RW1 MOVW MOVW +D @RW1+, RW0 MOVW @RW0+RW7, @RW0+, RW0 RW1 MOVW RW1 MOVW +1 RW1, RW0 RW0 MOVW MOVW addr16, RW1 MOVW @RW3+, RW2 MOVW @PC+disp16, @RW2+, RW1 RW2 MOVW MOVW @RW1+RW7, @RW1+, RW1 RW2 MOVW MOVW @RW0+RW7, @RW0+, RW1 RW2 MOVW MOVW @RW3+disp16, @RW3, RW1 RW2 MOVW MOVW @RW2+disp16, @RW2, RW1 RW2 MOVW MOVW @RW1+disp16, @RW1, RW1 RW2 MOVW MOVW @RW0+disp16, @RW0, RW1 RW2 MOVW MOVW @RW7+disp8, RW7, RW1 RW2 MOVW MOVW @RW6+disp8, RW6, RW1 RW2 MOVW MOVW @RW5+disp8, RW5, RW1 RW2 MOVW MOVW @RW4+disp8, RW4, RW1 RW2 MOVW MOVW @RW3+disp8, RW3, RW1 RW2 MOVW MOVW @RW2+disp8, RW2, RW1 RW2 MOVW MOVW @RW1+disp8, RW1, RW1 RW2 MOVW RW2 RW1 MOVW 40 @RW0+disp8, RW0, MOVW 30 RW0 MOVW 20 @RW0+disp8, RW0, MOVW +0 RW0, 10 00 MOVW 60 RW3 MOVW addr16, RW2 MOVW @RW3+, RW3 MOVW @PC+disp16, @RW2+, RW2 RW3 MOVW MOVW @RW1+RW7, @RW1+, RW2 RW3 MOVW MOVW @RW0+RW7, @RW0+, RW2 RW3 MOVW MOVW @RW3+disp16, @RW3, RW2 RW3 MOVW MOVW @RW2+disp16, @RW2, RW2 RW3 MOVW MOVW @RW1+disp16, @RW1, RW2 RW3 MOVW MOVW @RW0+disp16, @RW0, RW2 RW3 MOVW MOVW @RW7+disp8, RW7, RW2 RW3 MOVW MOVW @RW6+disp8, RW6, RW2 RW3 MOVW MOVW @RW5+disp8, RW5, RW2 RW3 MOVW MOVW @RW4+disp8, RW4, RW2 RW3 MOVW MOVW @RW3+disp8, RW3, RW2 RW3 MOVW MOVW @RW2+disp8, RW2, RW2 RW3 MOVW MOVW @RW1+disp8, RW1, RW2 RW3 MOVW RW2 @RW0+disp8, RW0, MOVW 50 MOVW 80 RW4 MOVW addr16, RW3 MOVW @RW3+, RW4 MOVW @PC+disp16, @RW2+, RW3 RW4 MOVW MOVW @RW1+RW7, @RW1+, RW3 RW4 MOVW MOVW @RW0+RW7, @RW0+, RW3 RW4 MOVW MOVW @RW3+disp16, @RW3, RW3 RW4 MOVW MOVW @RW2+disp16, @RW2, RW3 RW4 MOVW MOVW @RW1+disp16, @RW1, RW3 RW4 MOVW MOVW @RW0+disp16, @RW0, RW3 RW4 MOVW MOVW @RW7+disp8, RW7, RW3 RW4 MOVW MOVW @RW6+disp8, RW6, RW3 RW4 MOVW MOVW @RW5+disp8, RW5, RW3 RW4 MOVW MOVW @RW4+disp8, RW4, RW3 RW4 MOVW MOVW @RW3+disp8, RW3, RW3 RW4 MOVW MOVW @RW2+disp8, RW2, RW3 RW4 MOVW MOVW @RW1+disp8, RW1, RW3 RW4 MOVW RW3 @RW0+disp8, RW0, MOVW 70 MOVW A0 RW5 MOVW addr16, RW4 MOVW @RW3+, RW5 MOVW @PC+disp16, @RW2+, RW4 RW5 MOVW MOVW @RW1+RW7, @RW1+, RW4 RW5 MOVW MOVW @RW0+RW7, @RW0+, RW4 RW5 MOVW MOVW @RW3+disp16, @RW3, RW4 RW5 MOVW MOVW @RW2+disp16, @RW2, RW4 RW5 MOVW MOVW @RW1+disp16, @RW1, RW4 RW5 MOVW MOVW @RW0+disp16, @RW0, RW4 RW5 MOVW MOVW @RW7+disp8, RW7, RW4 RW5 MOVW MOVW @RW6+disp8, RW6, RW4 RW5 MOVW MOVW @RW5+disp8, RW5, RW4 RW5 MOVW MOVW @RW4+disp8, RW4, RW4 RW5 MOVW MOVW @RW3+disp8, RW3, RW4 RW5 MOVW MOVW @RW2+disp8, RW2, RW4 RW5 MOVW MOVW @RW1+disp8, RW1, RW4 RW5 MOVW RW4 @RW0+disp8, RW0, MOVW 90 MOVW C0 RW6 MOVW addr16, RW5 MOVW @RW3+, RW6 MOVW @PC+disp16, @RW2+, RW5 RW6 MOVW MOVW @RW1+RW7, @RW1+, RW5 RW6 MOVW MOVW @RW0+RW7, @RW0+, RW5 RW6 MOVW MOVW @RW3+disp16, @RW3, RW5 RW6 MOVW MOVW @RW2+disp16, @RW2, RW5 RW6 MOVW MOVW @RW1+disp16, @RW1, RW5 RW6 MOVW MOVW @RW0+disp16, @RW0, RW5 RW6 MOVW MOVW @RW7+disp8, RW7, RW5 RW6 MOVW MOVW @RW6+disp8, RW6, RW5 RW6 MOVW MOVW @RW5+disp8, RW5, RW5 RW6 MOVW MOVW @RW4+disp8, RW4, RW5 RW6 MOVW MOVW @RW3+disp8, RW3, RW5 RW6 MOVW MOVW @RW2+disp8, RW2, RW5 RW6 MOVW MOVW @RW1+disp8, RW1, RW5 RW6 MOVW RW5 @RW0+disp8, RW0, MOVW B0 MOVW E0 RW7 MOVW addr16, RW6 MOVW @RW3+, RW7 MOVW @PC+disp16, @RW2+, RW6 RW7 MOVW MOVW @RW1+RW7, @RW1+, RW6 RW7 MOVW MOVW @RW0+RW7, @RW0+, RW6 RW7 MOVW MOVW @RW3+disp16, @RW3, RW6 RW7 MOVW MOVW @RW2+disp16, @RW2, RW6 RW7 MOVW MOVW @RW1+disp16, @RW1, RW6 RW7 MOVW MOVW @RW0+disp16, @RW0, RW6 RW7 MOVW MOVW @RW7+disp8, RW7, RW6 RW7 MOVW MOVW @RW6+disp8, RW6, RW6 RW7 MOVW MOVW @RW5+disp8, RW5, RW6 RW7 MOVW MOVW @RW4+disp8, RW4, RW6 RW7 MOVW MOVW @RW3+disp8, RW3, RW6 RW7 MOVW MOVW @RW2+disp8, RW2, RW6 RW7 MOVW MOVW @RW1+disp8, RW1, RW6 RW7 MOVW RW6 @RW0+disp8, RW0, MOVW D0 MOVW addr16, RW7 RW7 @PC+disp16, MOVW RW7 @RW1+RW7, MOVW RW7 @RW0+RW7, MOVW RW7 @RW3+disp16, MOVW RW7 @RW2+disp16, MOVW RW7 @RW1+disp16, MOVW RW7 @RW0+disp16, MOVW RW7 @RW7+disp8, MOVW RW7 @RW6+disp8, MOVW RW7 @RW5+disp8, MOVW RW7 @RW4+disp8, MOVW RW7 @RW3+disp8, MOVW RW7 @RW2+disp8, MOVW RW7 @RW1+disp8, MOVW RW7 @RW0+disp8, MOVW F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.11-1 MOVW ea, RWi Instruction (First Byte = 7DH) CM44-00203-3E 2 F MC-16FX Family C.12 XCH Ri, ea Instruction Map APPENDIX APPENDIX C Instruction Maps Table C.12-1 lists XCH Ri, ea instruction map. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 367 368 XCH XCH R0, XCH R1, @RW3+disp8 R3 XCH R0, XCH R0, XCH +3 R0, R3 XCH +4 R0, R4 XCH XCH R0, XCH R1, @RW7+disp8 R7 XCH R0, XCH +7 R0, R7 XCH +8 R0, @RW0 FUJITSU MICROELECTRONICS LIMITED XCH R0, XCH R1, @RW3+disp16 @RW3 XCH R0, XCH +B R0, @RW3 XCH +C R0, @RW0+ XCH R1, @PC+disp16 @RW2+ XCH R0, addr16 XCH +F R0, @RW3+ XCH R1, @RW3+ XCH R0, XCH R1, @RW1+RW7 @RW1+ XCH R0, XCH +E R0, @RW2+ @RW1+ +D R0, XCH XCH R1, @RW2+disp16 @RW2 XCH R1, @RW0+RW7 @RW0+ XCH R0, XCH R1, @RW1+disp16 @RW1 XCH R0, XCH +A R0, @RW2 @RW1 +9 R0, XCH XCH R1, @RW6+disp8 R6 XCH R1, @RW0+disp16 @RW0 XCH R0, XCH R1, @RW5+disp8 R5 XCH +6 R0, R6 R5 +5 R0, XCH R1, @RW2+disp8 R2 XCH R1, @RW4+disp8 R4 XCH R0, XCH +2 R0, R2 R1 +1 R0, XCH R1, @RW1+disp8 R1 XCH R0, R0 20 XCH R1, XCH R0, +0 R0, @RW0+disp8 R0 10 XCH 00 XCH R1, addr16 XCH R2, @RW3+ XCH R2, @PC+disp16 @RW2+ XCH R1, XCH R2, @RW1+RW7 @RW1+ XCH R1, XCH R2, @RW0+RW7 @RW0+ XCH R1, XCH R2, @RW3+disp16 @RW3 XCH R1, XCH R2, @RW2+disp16 @RW2 XCH R1, XCH R2, @RW1+disp16 @RW1 XCH R1, XCH R2, @RW0+disp16 @RW0 XCH R1, XCH R2, @RW7+disp8 R7 XCH R1, XCH R2, @RW6+disp8 R6 XCH R1, XCH R2, @RW5+disp8 R5 XCH R1, XCH R2, @RW4+disp8 R4 XCH R1, XCH R2, @RW3+disp8 R3 XCH R1, XCH R2, @RW2+disp8 R2 XCH R1, XCH R2, @RW1+disp8 R1 XCH R1, 40 XCH R2, @RW0+disp8 R0 XCH R1, 30 XCH R2, addr16 XCH R3, @RW3+ XCH R3, @PC+disp16 @RW2+ XCH R2, XCH R3, @RW1+RW7 @RW1+ XCH R2, XCH R3, @RW0+RW7 @RW0+ XCH R2, XCH R3, @RW3+disp16 @RW3 XCH R2, XCH R3, @RW2+disp16 @RW2 XCH R2, XCH R3, @RW1+disp16 @RW1 XCH R2, XCH R3, @RW0+disp16 @RW0 XCH R2, XCH R3, @RW7+disp8 R7 XCH R2, XCH R3, @RW6+disp8 R6 XCH R2, XCH R3, @RW5+disp8 R5 XCH R2, XCH R3, @RW4+disp8 R4 XCH R2, XCH R3, @RW3+disp8 R3 XCH R2, XCH R3, @RW2+disp8 R2 XCH R2, XCH R3, @RW1+disp8 R1 XCH R2, 60 XCH R3, @RW0+disp8 R0 XCH R2, 50 XCH R3, addr16 XCH R4, @RW3+ XCH R4, @PC+disp16 @RW2+ XCH R3, XCH R4, @RW1+RW7 @RW1+ XCH R3, XCH R4, @RW0+RW7 @RW0+ XCH R3, XCH R4, @RW3+disp16 @RW3 XCH R3, XCH R4, @RW2+disp16 @RW2 XCH R3, XCH R4, @RW1+disp16 @RW1 XCH R3, XCH R4, @RW0+disp16 @RW0 XCH R3, XCH R4, @RW7+disp8 R7 XCH R3, XCH R4, @RW6+disp8 R6 XCH R3, XCH R4, @RW5+disp8 R5 XCH R3, XCH R4, @RW4+disp8 R4 XCH R3, XCH R4, @RW3+disp8 R3 XCH R3, XCH R4, @RW2+disp8 R2 XCH R3, XCH R4, @RW1+disp8 R1 XCH R3, 80 XCH R4, @RW0+disp8 R0 XCH R3, 70 XCH R4, addr16 XCH R5, @RW3+ XCH R5, @PC+disp16 @RW2+ XCH R4, XCH R5, @RW1+RW7 @RW1+ XCH R4, XCH R5, @RW0+RW7 @RW0+ XCH R4, XCH R5, @RW3+disp16 @RW3 XCH R4, XCH R5, @RW2+disp16 @RW2 XCH R4, XCH R5, @RW1+disp16 @RW1 XCH R4, XCH R5, @RW0+disp16 @RW0 XCH R4, XCH R5, @RW7+disp8 R7 XCH R4, XCH R5, @RW6+disp8 R6 XCH R4, XCH R5, @RW5+disp8 R5 XCH R4, XCH R5, @RW4+disp8 R4 XCH R4, XCH R5, @RW3+disp8 R3 XCH R4, XCH R5, @RW2+disp8 R2 XCH R4, XCH R5, @RW1+disp8 R1 XCH R4, A0 XCH R5, @RW0+disp8 R0 XCH R4, 90 XCH R5, addr16 XCH R6, @RW3+ XCH R6, @PC+disp16 @RW2+ XCH R5, XCH R6, @RW1+RW7 @RW1+ XCH R5, XCH R6, @RW0+RW7 @RW0+ XCH R5, XCH R6, @RW3+disp16 @RW3 XCH R5, XCH R6, @RW2+disp16 @RW2 XCH R5, XCH R6, @RW1+disp16 @RW1 XCH R5, XCH R6, @RW0+disp16 @RW0 XCH R5, XCH R6, @RW7+disp8 R7 XCH R5, XCH R6, @RW6+disp8 R6 XCH R5, XCH R6, @RW5+disp8 R5 XCH R5, XCH R6, @RW4+disp8 R4 XCH R5, XCH R6, @RW3+disp8 R3 XCH R5, XCH R6, @RW2+disp8 R2 XCH R5, XCH R6, @RW1+disp8 R1 XCH R5, C0 XCH R6, @RW0+disp8 R0 XCH R5, B0 XCH R6, addr16 XCH R7, @RW3+ XCH R7, @PC+disp16 @RW2+ XCH R6, XCH R7, @RW1+RW7 @RW1+ XCH R6, XCH R7, @RW0+RW7 @RW0+ XCH R6, XCH R7, @RW3+disp16 @RW3 XCH R6, XCH R7, @RW2+disp16 @RW2 XCH R6, XCH R7, @RW1+disp16 @RW1 XCH R6, XCH R7, @RW0+disp16 @RW0 XCH R6, XCH R7, @RW7+disp8 R7 XCH R6, XCH R7, @RW6+disp8 R6 XCH R6, XCH R7, @RW5+disp8 R5 XCH R6, XCH R7, @RW4+disp8 R4 XCH R6, XCH R7, @RW3+disp8 R3 XCH R6, XCH R7, @RW2+disp8 R2 XCH R6, XCH R7, @RW1+disp8 R1 XCH R6, E0 XCH R7, @RW0+disp8 R0 XCH R6, D0 XCH R7, addr16 @PC+disp16 XCH R7, @RW1+RW7 XCH R7, @RW0+RW7 XCH R7, @RW3+disp16 XCH R7, @RW2+disp16 XCH R7, @RW1+disp16 XCH R7, @RW0+disp16 XCH R7, @RW7+disp8 XCH R7, @RW6+disp8 XCH R7, @RW5+disp8 XCH R7, @RW4+disp8 XCH R7, @RW3+disp8 XCH R7, @RW2+disp8 XCH R7, @RW1+disp8 XCH R7, @RW0+disp8 XCH R7, F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.12-1 XCH Ri, ea Instruction (First Byte = 7EH) CM44-00203-3E 2 F MC-16FX Family C.13 XCHW RWi, ea Instruction Map APPENDIX APPENDIX C Instruction Maps Table C.13-1 lists XCHW RWi, ea instruction map. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 369 370 XCHW RW0, RW0 XCHW XCHW RW0, XCHW RW1, @RW3+disp8 RW3 XCHW RW0, XCHW RW0, XCHW +3 RW0, RW3 XCHW +4 RW0, RW4 XCHW XCHW RW0, XCHW RW1, @RW7+disp8 RW7 XCHW RW0, XCHW RW0, XCHW +7 RW0, RW7 XCHW +8 RW0, @RW0 XCHW FUJITSU MICROELECTRONICS LIMITED XCHW RW0, XCHW RW1, @RW3+disp16 @RW3 XCHW RW0, XCHW +B RW0, @RW3 XCHW +C RW0, @RW0+ @RW1+RW7 @RW1+ @PC+disp16 XCHW RW0, addr16 XCHW +E RW0, @RW2+ XCHW +F RW0, @RW3+ XCHW RW0, XCHW RW0, +D RW0, XCHW @RW0+RW7 XCHW RW1, @RW2+disp16 @RW2 XCHW RW1, @RW3+ XCHW RW1, @RW2+ XCHW RW1, @RW1+ XCHW RW1, @RW0+ XCHW RW0, XCHW RW1, @RW1+disp16 @RW1 XCHW +A RW0, @RW2 @RW1 +9 RW0, XCHW RW1, @RW6+disp8 RW6 XCHW RW1, @RW0+disp16 @RW0 XCHW RW0, XCHW RW1, @RW5+disp8 RW5 XCHW +6 RW0, RW6 RW5 +5 RW0, XCHW RW1, @RW2+disp8 RW2 XCHW RW1, @RW4+disp8 RW4 XCHW RW0, XCHW +2 RW0, RW2 RW1 +1 RW0, XCHW RW1, RW0 20 XCHW RW1, @RW1+disp8 RW1 XCHW RW0, @RW0+disp8 +0 RW0, XCHW 10 00 XCHW RW2, RW0 40 XCHW RW1, addr16 @PC+disp16 XCHW RW1, @RW1+RW7 XCHW RW1, @RW0+RW7 XCHW RW1, XCHW RW2, @RW3+ XCHW RW2, @RW2+ XCHW RW2, @RW1+ XCHW RW2, @RW0+ XCHW RW2, @RW3+disp16 @RW3 XCHW RW1, XCHW RW2, @RW2+disp16 @RW2 XCHW RW1, XCHW RW2, @RW1+disp16 @RW1 XCHW RW1, XCHW RW2, @RW0+disp16 @RW0 XCHW RW1, XCHW RW2, @RW7+disp8 RW7 XCHW RW1, XCHW RW2, @RW6+disp8 RW6 XCHW RW1, XCHW RW2, @RW5+disp8 RW5 XCHW RW1, XCHW RW2, @RW4+disp8 RW4 XCHW RW1, XCHW RW2, @RW3+disp8 RW3 XCHW RW1, XCHW RW2, @RW2+disp8 RW2 XCHW RW1, XCHW RW2, @RW1+disp8 RW1 XCHW RW1, @RW0+disp8 XCHW RW1, 30 XCHW RW3, RW0 60 XCHW RW2, addr16 @PC+disp16 XCHW RW2, @RW1+RW7 XCHW RW2, @RW0+RW7 XCHW RW2, XCHW RW3, @RW3+ XCHW RW3, @RW2+ XCHW RW3, @RW1+ XCHW RW3, @RW0+ XCHW RW3, @RW3+disp16 @RW3 XCHW RW2, XCHW RW3, @RW2+disp16 @RW2 XCHW RW2, XCHW RW3, @RW1+disp16 @RW1 XCHW RW2, XCHW RW3, @RW0+disp16 @RW0 XCHW RW2, XCHW RW3, @RW7+disp8 RW7 XCHW RW2, XCHW RW3, @RW6+disp8 RW6 XCHW RW2, XCHW RW3, @RW5+disp8 RW5 XCHW RW2, XCHW RW3, @RW4+disp8 RW4 XCHW RW2, XCHW RW3, @RW3+disp8 RW3 XCHW RW2, XCHW RW3, @RW2+disp8 RW2 XCHW RW2, XCHW RW3, @RW1+disp8 RW1 XCHW RW2, @RW0+disp8 XCHW RW2, 50 XCHW RW4, RW0 80 XCHW RW3, addr16 @PC+disp16 XCHW RW3, @RW1+RW7 XCHW RW3, @RW0+RW7 XCHW RW3, XCHW RW4, @RW3+ XCHW RW4, @RW2+ XCHW RW4, @RW1+ XCHW RW4, @RW0+ XCHW RW4, @RW3+disp16 @RW3 XCHW RW3, XCHW RW4, @RW2+disp16 @RW2 XCHW RW3, XCHW RW4, @RW1+disp16 @RW1 XCHW RW3, XCHW RW4, @RW0+disp16 @RW0 XCHW RW3, XCHW RW4, @RW7+disp8 RW7 XCHW RW3, XCHW RW4, @RW6+disp8 RW6 XCHW RW3, XCHW RW4, @RW5+disp8 RW5 XCHW RW3, XCHW RW4, @RW4+disp8 RW4 XCHW RW3, XCHW RW4, @RW3+disp8 RW3 XCHW RW3, XCHW RW4, @RW2+disp8 RW2 XCHW RW3, XCHW RW4, @RW1+disp8 RW1 XCHW RW3, @RW0+disp8 XCHW RW3, 70 XCHW RW5, RW0 A0 XCHW RW4, addr16 @PC+disp16 XCHW RW4, @RW1+RW7 XCHW RW4, @RW0+RW7 XCHW RW4, XCHW RW5, @RW3+ XCHW RW5, @RW2+ XCHW RW5, @RW1+ XCHW RW5, @RW0+ XCHW RW5, @RW3+disp16 @RW3 XCHW RW4, XCHW RW5, @RW2+disp16 @RW2 XCHW RW4, XCHW RW5, @RW1+disp16 @RW1 XCHW RW4, XCHW RW5, @RW0+disp16 @RW0 XCHW RW4, XCHW RW5, @RW7+disp8 RW7 XCHW RW4, XCHW RW5, @RW6+disp8 RW6 XCHW RW4, XCHW RW5, @RW5+disp8 RW5 XCHW RW4, XCHW RW5, @RW4+disp8 RW4 XCHW RW4, XCHW RW5, @RW3+disp8 RW3 XCHW RW4, XCHW RW5, @RW2+disp8 RW2 XCHW RW4, XCHW RW5, @RW1+disp8 RW1 XCHW RW4, @RW0+disp8 XCHW RW4, 90 XCHW RW6, RW0 C0 XCHW RW5, addr16 @PC+disp16 XCHW RW5, @RW1+RW7 XCHW RW5, @RW0+RW7 XCHW RW5, XCHW RW6, @RW3+ XCHW RW6, @RW2+ XCHW RW6, @RW1+ XCHW RW6, @RW0+ XCHW RW6, @RW3+disp16 @RW3 XCHW RW5, XCHW RW6, @RW2+disp16 @RW2 XCHW RW5, XCHW RW6, @RW1+disp16 @RW1 XCHW RW5, XCHW RW6, @RW0+disp16 @RW0 XCHW RW5, XCHW RW6, @RW7+disp8 RW7 XCHW RW5, XCHW RW6, @RW6+disp8 RW6 XCHW RW5, XCHW RW6, @RW5+disp8 RW5 XCHW RW5, XCHW RW6, @RW4+disp8 RW4 XCHW RW5, XCHW RW6, @RW3+disp8 RW3 XCHW RW5, XCHW RW6, @RW2+disp8 RW2 XCHW RW5, XCHW RW6, @RW1+disp8 RW1 XCHW RW5, @RW0+disp8 XCHW RW5, B0 XCHW RW7, RW0 E0 XCHW RW6, addr16 @PC+disp16 XCHW RW6, @RW1+RW7 XCHW RW6, @RW0+RW7 XCHW RW6, XCHW RW7, @RW3+ XCHW RW7, @RW2+ XCHW RW7, @RW1+ XCHW RW7, @RW0+ XCHW RW7, @RW3+disp16 @RW3 XCHW RW6, XCHW RW7, @RW2+disp16 @RW2 XCHW RW6, XCHW RW7, @RW1+disp16 @RW1 XCHW RW6, XCHW RW7, @RW0+disp16 @RW0 XCHW RW6, XCHW RW7, @RW7+disp8 RW7 XCHW RW6, XCHW RW7, @RW6+disp8 RW6 XCHW RW6, XCHW RW7, @RW5+disp8 RW5 XCHW RW6, XCHW RW7, @RW4+disp8 RW4 XCHW RW6, XCHW RW7, @RW3+disp8 RW3 XCHW RW6, XCHW RW7, @RW2+disp8 RW2 XCHW RW6, XCHW RW7, @RW1+disp8 RW1 XCHW RW6, @RW0+disp8 XCHW RW6, D0 XCHW RW7, addr16 @PC+disp16 XCHW RW7, @RW1+RW7 XCHW RW7, @RW0+RW7 XCHW RW7, @RW3+disp16 XCHW RW7, @RW2+disp16 XCHW RW7, @RW1+disp16 XCHW RW7, @RW0+disp16 XCHW RW7, @RW7+disp8 XCHW RW7, @RW6+disp8 XCHW RW7, @RW5+disp8 XCHW RW7, @RW4+disp8 XCHW RW7, @RW3+disp8 XCHW RW7, @RW2+disp8 XCHW RW7, @RW1+disp8 XCHW RW7, @RW0+disp8 XCHW RW7, F0 APPENDIX APPENDIX C Instruction Maps F2MC-16FX Family Table C.13-1 XCHW RWi, ea Instruction (First Byte = 7FH) CM44-00203-3E INDEX INDEX The index follows on the next page. This is listed in alphabetic order. CM44-00203-3E FUJITSU MICROELECTRONICS LIMITED 371 INDEX Index A B A B Accumulator (A).........................................20 ADD (Add Byte Data of Destination and Source to Destination) ...............................83 ADDC (Add Byte Data of Accumulator and Effective Address with Carry to Accumulator).................................86 ADDC (Add Byte Data of AL and AH with Carry to AL) ...........................................85 ADDCW (Add Word Data of Accumulator and Effective Address with Carry to Accumulator).................................88 ADDDC (Add Decimal Data of AL and AH with Carry to AL)..................................90 ADDL (Add Long Word Data of Destination and Source to Destination) ....................91 ADDSP (Add Word Data of Stack Pointer and Immediate Data to Stack Pointer) .........................................93 ADDW (Add Word Data of AL and AH to AL).....................................94 ADDW (Add Word Data of Destination and Source to Destination) ....................95 AND (And Byte Data of Destination and Source to Destination) ...............................97 AND (And Byte Data of Immediate Data and Condition Code Register)................99 ANDL (And Long Word Data of Destination and Source to Destination) ..................101 ANDW (And Word Data of AH and AL to AL) ...................................103 ANDW (And Word Data of Destination and Source to Destination) ..................104 ASR (Arithmetic Shift Byte Data of Accumulator to Right) ..................106 ASRL (Arithmetic Shift Long Word Data of Accumulator to Right) ......................108 ASRW (Arithmetic Shift Word Data of Accumulator to Right) ..........110, 112 Accumulator Accumulator (A).........................................20 Addressing Bank Addressing Mode ...............................12 Direct Addressing .......................................73 Indirect Addressing .....................................75 Linear Addressing Mode..............................11 BBcc (Branch if Bit Condition satisfied)..................................... 114 Bcc (Branch relative if Condition satisfied)..................................... 116 Bank Addressing Bank Addressing Mode............................... 12 Bank Select Prefix Bank Select Prefix...................................... 38 Banks Memory Space Divided into Banks and Values in Each Register Bank ....................... 14 372 C C CALL (Call Subroutine) ........................... 118 CALLP (Call Physical Address) ................ 120 CALLV (Call Vectored Subroutine)........... 122 CBNE (Compare Byte Data and Branch if not Equal) ........................................ 124 CLRB (Clear Bit) ..................................... 126 CMP (Compare Byte Data of Destination and Source)....................................... 127 CMPL (Compare Long Word Data of Destination and Source) ............... 129 CMPW (Compare Word Data of Destination and Source)....................................... 131 CWBNE (Compare Word Data and Branch if not Equal) ........................................ 133 CCR Condition Code Register (CCR)................... 25 CMR Common Register Bank Prefix (CMR) ......... 40 Common Register Bank Prefix Common Register Bank Prefix (CMR) ......... 40 Condition Code Register Condition Code Register (CCR)................... 25 Correction Address Odd Address Correction.............................. 82 CPU CPU Memory Space ................................... 10 Hardware Configuration of the F2MC-16FX CPU............................................... 4 Overview of CPU......................................... 2 Cycle Execution Cycles........................................ 82 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E INDEX D G D General-purpose Registers Calling General-purpose Registers in RAM............................................ 36 DBNZ (Decrement Byte Data and Branch if not Zero)...........................................135 DEC (Decrement Byte Data) ......................137 DECL (Decrement Long Word Data)..........138 DECW (Decrement Word Data) .................139 DIV (Divide Word Data by Byte Data) .......141 DIVU (Divide unsigned Word Data by unsigned Byte Data) ...................................145 DIVUW (Divide unsigned Long Word Data by unsigned Word Data)....................147 DIVW (Divide Long Word Data by Word Data)...........................................143 DWBNZ (Decrement Word Data and Branch if not Zero) .....................................149 Direct Addressing Direct Addressing .......................................73 Direct Memory Access Direct Memory Access (DMA) ....................47 Direct Page Register Direct Page Register (DPR) .........................30 DMA Direct Memory Access (DMA) ....................47 DPR Direct Page Register (DPR) .........................30 H Hardware Hardware Configuration of the F2MC-16FX CPU............................................... 4 Hardware Exceptions (Non Maskable Interrupts)..................................... 67 Hardware Interrupt Operation...................... 59 Hardware Interrupt Processing Time ............ 60 Hardware Interrupts.............................. 46, 57 Multiple Hardware Interrupts ...................... 63 Sample Hardware configuration of F2MC-16FX Family MCU................................... 6 Structure of the Hardware Interrupt System ......................................... 57 I I INC (Increment Byte Data (Address Specification)) ............................ 157 INCL (Increment Long Word Data) ........... 158 INCW (Increment Word Data)................... 159 INT (Software Interrupt (Vector Specification)) ............................ 163 INT (Software Interrupt) ........................... 161 INT9 (Software Interrupt) ......................... 165 INTP (Software Interrupt) ......................... 167 E E EXT (Sign Extend from Byte Data to Word Data) .................................151 EXTW (Sign Extend from Word Data to Long Word Data) .................................152 Effective Address Effective Address Field ...............................72 Exception Exceptions..................................................47 Hardware Exceptions (Non Maskable Interrupts) .....................................67 Software Exceptions (Op-Code) ...................66 Execution cycle Execution cycle count................................316 F F FILS, FILSI (Fill String Byte) ....................153 FILSW, FILSWI (Fill String Word)............155 2 F MC-16FX Hardware Configuration of the F2MC-16FX CPU................................................4 Sample Hardware configuration of F2MC-16FX Family MCU ...................................6 Flag Change Inhibit Prefix Code Flag Change Inhibit Prefix Code (NCC) ........41 CM44-00203-3E ICR Interrupt Control Register (ICR) .................. 51 ILM Interrupt Level Mask (ILM) ........................ 27 Indirect Addressing Indirect Addressing .................................... 75 Instruction Explanation of the Symbols Used in the Instruction Lists .......................... 317 Instruction Overview .................................. 80 MOV Ri, ea Instruction Map (First Byte = 7AH)....................... 360 Relationships between Instructions Rejecting Interrupt Requests and Prefix Codes ........................................... 42 Structure of the Instruction Map ................ 337 Symbols (Abbreviations) Used in Detailed Instructions................................... 81 Instruction Map Structure of the Instruction Map ................ 337 Interrupt Hardware Interrupt Operation...................... 59 Hardware Interrupt Processing Time ............ 60 Hardware Interrupts.............................. 46, 57 FUJITSU MICROELECTRONICS LIMITED 373 INDEX Interrupt Acceptance Priority .......................64 Interrupt Flow.............................................55 Interrupt Vector ..........................................48 Multiple Hardware Interrupts .......................63 Multiple Software Interrupts ........................63 Relationships between Instructions Rejecting Interrupt Requests and Prefix Codes............................................42 Software Interrupt Operation........................62 Software Interrupts................................47, 61 Structure of the Hardware Interrupt System ..........................................57 Structure of the Software Interrupt System ..........................................61 Interrupt Control Register Interrupt Control Register (ICR) ...................51 Interrupt Level Mask Interrupt Level Mask (ILM) .........................27 J J JCTX (Jump Context)................................169 JMP (Jump Destination Address)................171 JMPP (Jump Destination Physical Address)......................................172 L L LINK (Link and Create New Stack Frame) ........................................173 LSL (Logical Shift Byte Data of Accumulator to Left) ...........................................174 LSLL (Logical Shift Long Word Data of Accumulator to Left) ....................176 LSLW (Logical Shift Word Data of Accumulator to Left)................................178, 179 LSR (Logical Shift Byte Data of Accumulator to Right) .........................................181 LSRL (Logical Shift Long Word Data of Accumulator to Right) ..................183 LSRW (Logical Shift Word Data of Accumulator to Right)..............................185, 187 Linear Addressing Linear Addressing Mode..............................11 Linear Addressing Mode Linear Addressing Mode..............................11 M M MOV (Move Byte Data from Accumulator to Destination).................................191 MOV (Move Byte Data from AH to Memory) .....................................197 MOV (Move Byte Data from Source to Accumulator)...............................189 374 MOV (Move Byte Data from Source to Destination) ................................ 195 MOV (Move Byte Immediate Data to Destination) ................................ 193 MOVB (Move Bit Data from Accumulator to Bit Address)..................................... 200 MOVB (Move Bit Data from Bit Address to Accumulator).............................. 198 MOVEA (Move Effective Address to Destination) ................................ 202 MOVL (Move Long Word Data from Accumulator to Destination)......... 206 MOVL (Move Long Word Data from Source to Accumulator).............................. 204 MOVN (Move Immediate Nibble Data to Accumulator).............................. 208 MOVS, MOVSI (Move String Byte with Increment) .................................. 209 MOVSD (Move String Byte with Decrement)................................. 211 MOVSW, MOVSWI (Move String Word with Increment) .................................. 212 MOVSWI (Move String Word with Decrement)................................. 214 MOVW (Move Immediate Word Data to Destination) ................................ 219 MOVW (Move Immediate Word Data to io) .............................................. 223 MOVW (Move Word Data from Accumulator to Destination) ................................ 217 MOVW (Move Word Data from AH to Memory) .................................... 224 MOVW (Move Word Data from Source to Accumulator).............................. 215 MOVW (Move Word Data from Source to Destination) ................................ 221 MOVX (Move Byte Data with Sign Extension from Source to Accumulator) ....... 225 MUL (Multiply Byte Data of Accumulator and Effective Address)....................... 228 MUL (Multiply Byte Data of Accumulator) 227 MULU (Multiply Unsigned Byte Data of Accumulator and Effective Address)..................................... 232 MULU (Multiply Unsigned Byte Data of Accumulator).............................. 231 MULUW (Multiply Unsigned Word Data of Accumulator and Effective Address)..................................... 234 MULUW (Multiply Unsigned Word Data of Accumulator).............................. 233 MULW (Multiply Word Data of Accumulator and Effective Address)................. 230 MULW (Multiply Word Data of Accumulator).............................. 229 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E INDEX MCU Sample Hardware configuration of F2MC-16FX Family MCU ...................................6 Memory Access Direct Memory Access (DMA) ....................47 Memory Space CPU Memory Space....................................10 Memory Space Divided into Banks and Values in Each Register Bank ........................14 Multi-byte Data Layout in a Memory Space ............................................15 Mode Bank Addressing Mode ...............................12 Linear Addressing Mode..............................11 MOV MOV Ri, ea Instruction Map (First Byte = 7AH)........................360 Multi-byte Data Access to Multi-byte Data............................16 Multi-byte Data Layout in a Memory Space ............................................15 Multiple Multiple Hardware Interrupts .......................63 Multiple Software Interrupts ........................63 N N NEG (Negate Byte Data of Destination) ......235 NEGW (Negate Word Data of Destination).................................236 NOP (No Operation) .................................237 NOT (Not Byte Data of Destination)...........238 NOTW (Not Word Data of Destination) ......240 NRML (NORMALIZE Long Word) ...........241 NCC Flag Change Inhibit Prefix Code (NCC) ........41 NMI NMI Control Status Register (NMI)..............53 Non Maskable Interrupt Hardware Exceptions (Non Maskable Interrupts) .....................................67 O O OR (Or Byte Data of Destination and Source to Destination).................................242 OR (Or Byte Data of Immediate Data and Condition Code Register to Condition Code Register) .............................244 ORL (Or Long Word Data of Destination and Source to Destination) ..................246 ORW (Or Word Data of AH and AL to AL) ...................................248 ORW (Or Word Data of Destination and Source to Destination) .............................249 CM44-00203-3E Odd Address Odd Address Correction.............................. 82 Op-Code Software Exceptions (Op-Code) .................. 66 P P POPW (Pop Registers from Stack Memory) .................................... 256 POPW (Pop Word Data of Accumulator from Stack Memory) ........................... 251 POPW (Pop Word Data of AH from Stack Memory) .................................... 253 POPW (Pop Word Data of Program Status from Stack Memory) ........................... 254 PUSHW (Push Registers to Stack Memory) .................................... 260 PUSHW (Push Word Data of Inherent Register to Stack Memory)........................ 258 PC Program Counter (PC) ................................ 29 Prefix Bank Select Prefix...................................... 38 Common Register Bank Prefix (CMR) ......... 40 Flag Change Inhibit Prefix Code (NCC) ....... 41 If Two or More Prefix Codes Appear in Succession .................................... 43 Relationships between Instructions Rejecting Interrupt Requests and Prefix Codes ........................................... 42 Priority Interrupt Acceptance Priority....................... 64 Processor Status Processor Status (PS).................................. 24 Program Counter Program Counter (PC) ................................ 29 PS Processor Status (PS).................................. 24 R R RET (Return from Subroutine) .................. 262 RETI (Return from Interrupt) .................... 263 RETP (Return from Physical Address) ....... 265 ROLC (Rotate Byte Data of Accumulator with Carry to Left) .............................. 267 RORC (Rotate Byte Data of Accumulator with Carry to Right) ............................ 269 RAM Calling General-purpose Registers in RAM............................................ 36 Register Banks in RAM .............................. 34 Register Bank Register ............................................ 31 Register Bank FUJITSU MICROELECTRONICS LIMITED 375 INDEX Memory Space Divided into Banks and Values in Each Register Bank ........................14 Register Bank Pointer Register Bank Pointer (RP) ..........................26 Register Banks Register Banks in RAM...............................34 RP Register Bank Pointer (RP) ..........................26 S S SBBS (Set Bit and Branch if Bit Set) ..........271 SCEQ, SCEQI (Scan String Byte until equal with Increment)...................................272 SCEQD (Scan String Byte until equal with Decrement)..................................274 SCWEQ, SCWEQI (Scan String Word until equal with Increment)...................276 SCWEQD (Scan String Word until Equal with Decrement)..................................278 SETB (Set Bit)..........................................280 SUB (Subtract Byte Data of Source from Destination to Destination)............281 SUBC (Subtract Byte Data of AL from AH with Carry to AL)................................283 SUBC (Subtract Byte Data of Effective Address from Accumulator with Carry to Accumulator)...............................284 SUBCW (Subtract Word Data of Effective Address from Accumulator with Carry to Accumulator) ...........................286 SUBDC (Subtract Decimal Data of AL from AH with Carry to AL) ........................288 SUBL (Subtract Long Word Data of Source from Destination to Destination)............289 SUBW (Subtract Word Data of AL from AH to AL).............................................293 SUBW (Subtract Word Data of Source from Destination to Destination)............291 SWAP (Swap Byte Data of Accumulator)...............................294 SWAPW (Swap Word Data of Accumulator)...............................295 Software Multiple Software Interrupts ........................63 Software Exceptions (Op-Code) ...................66 Software Interrupt Operation........................62 Software Interrupts................................47, 61 Structure of the Software Interrupt System ..........................................61 SSP User Stack Pointer (USP) and System Stack Pointer (SSP) .................................22 Symbol Explanation of the Symbols Used in the Instruction Lists ...........................317 376 Symbols (Abbreviations) Used in Detailed Instructions................................... 81 System Stack Pointer User Stack Pointer (USP) and System Stack Pointer (SSP) ................................ 22 U U UNLINK (Unlink and Create New Stack Frame) ....................................... 296 User Stack Pointer User Stack Pointer (USP) and System Stack Pointer (SSP) ................................ 22 USP User Stack Pointer (USP) and System Stack Pointer (SSP) ................................ 22 V Vector Interrupt Vector.......................................... 48 W W WBTc (Wait until Bit Condition Satisfied) .................................... 297 X X XCH (Exchange Byte Data of Source to Destination) ................................ 299 XCHW (Exchange Word Data of Source to Destination) ................................ 301 XOR (Exclusive Or Byte Data of Destination and Source to Destination) ................. 303 XORL (Exclusive Or Long Word Data of Destination and Source to Destination) ................................ 305 XORW (Exclusive Or Word Data of AH and AL to AL) ........................................ 307 XORW (Exclusive Or Word Data of Destination and Source to Destination) ........... 308 Z Z ZEXT (Zero Extend from Byte Data to Word Data) .......................................... 310 ZEXTW (Zero Extend from Word Data to Long Word Data)................................. 311 FUJITSU MICROELECTRONICS LIMITED CM44-00203-3E CM44-00203-3E FUJITSU MICROELECTRONICS • CONTROLLER MANUAL F2MC-16FX 16-BIT MICROCONTROLLER PROGRAMMING MANUAL March 2010 the third edition Published FUJITSU MICROELECTRONICS LIMITED Edited Sales Promotion Dept.