Jeu d'instructions du 68HC11

IMM. DIR. EXT. IND,X. IND,Y. 18 CE. 18 DE. 18 FE. 1A EE. 18 EE jj kk dd hh ll ..... 7-4. - - - - ¤ ¤ 0 0. TSTA. A – 0. A INH. 4D. 1. 2. 2-1. - - - - ¤ ¤ 0 0. TSTB. B – 0.
394KB taille 1 téléchargements 212 vues
ABA ABX ABY ADCA (opr)

Operation

Add Accumulators Add B to X Add B to Y Add with Carry to A

ADCB (opr) Add with Carry to B

ADDA (opr) Add Memory to A

ADDB (opr) Add Memory to B

ADDD (opr) Add 16-Bit to D

ANDA (opr) AND A with Memory

ANDB (opr) AND B with Memory

ASL (opr)

Boolean Expression

A+B→A IX + 00:B → IX IY + 00:B → IY A+M+C→A

Addressing Mode for Operand INH INH INH A IMM A DIR A EXT A IND,X A IND,Y

B+M+C→B

A+M→A

B+M→B

D + M:M + 1 → D

A•M → A

B•M → B

Arithmetic Shift Left C

ASLD

b7

C9 ii D9 dd F9 hh E9 ff 18 E9 ff

A IMM A DIR A EXT A IND,X A IND,Y

8B ii 9B dd BB hh AB ff 18 AB ff

B IMM B DIR B EXT B IND,X B IND,Y

CB ii DB dd FB hh EB ff 18 EB ff

IMM DIR EXT IND,X IND,Y

C3 jj D3 dd F3 hh E3 ff 18 E3 ff

A IMM A DIR A EXT A IND,X A IND,Y

84 ii 94 dd B4 hh A4 ff 18 A4 ff

B IMM B DIR B EXT B IND,X B IND,Y

C4 ii D4 dd F4 hh E4 ff 18 E4 ff

EXT

78 hh 68 ff 18 68 ff 48 58

IND,Y A INH B INH

b0

Arithmetic Shift Left Double

89 ii 99 dd B9 hh A9 ff 18 A9 ff

B IMM B DIR B EXT B IND,X B IND,Y

0 IND,X

ASLA ASLB

Machine Coding (Hexadecimal) Opcode Operand(s) 1B 1 3A 1 18 3A 2

Bytes

Source Form(s)

INH

05

EXT IND,X C IND,Y A INH B INH

77 hh 67 ff 18 67 ff 47 57

REL DIR IND,X IND,Y REL REL REL REL REL REL

24 rr 15 dd 1D ff 18 1D ff 25 rr 27 rr 2C rr 2E rr 22 rr 24 rr

Cycle

Jeu d'instructions du 68HC11

2 3 4

Cycle Condition Codes by Cycle* S X H I N Z V C 2-1 - - ↕ - ↕ ↕ ↕ ↕ 2-2 - - - - - - - 2-4 - - - - - - - -

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

--↕-↕↕↕↕

ll

2 2 3 2 3

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

--↕-↕↕↕↕

ll

2 2 3 2 3

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

--↕-↕↕↕↕

ll

2 2 3 2 3

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

--↕-↕↕↕↕

ll

2 2 3 2 3

4 5 6 6 7

3-3 4-7 5-10 6-10 7-8

----↕↕↕↕

ll

3 2 3 2 3

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

----↕↕0-

ll

2 2 3 2 3

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

----↕↕0-

ll

2 2 3 2 3 3 2 3 1 1

6 6 7 2 2

5-8 6-3 7-3 2-1 2-1

----↕↕↕↕

1

3

2-2

----↕↕↕↕

3 2 3 1 1

6 6 7 2 2

5-8 6-3 7-3 2-1 2-1

----↕↕↕↕

2 3 3 4 2 2 2 2 2 2

3 6 7 8 3 3 3 3 3 3

8-1 4-10 6-13 7-10 8-1 8-1 8-1 8-1 8-1 8-1

-----------↕↕0-

kk

ll

0 C

ASR (opr)

b15

b0

Arithmetic Shift Right b7

ASRA ASRB

b0

BCC (rel) Branch if Carry Clear BCLR (opr) Clear Bit(s) (msk)

?C=0

BCS (rel) BEQ (rel) BGE (rel) BGT (rel) BHI (rel) BHS (rel)

?C=1 ?Z=1 ?N⊕V=0 ? Z + (N ⊕ V) = 0 ?C+Z=0 ?C=0

Branch if Carry Set Branch if = Zero Branch if ≥ Zero Branch if > Zero Branch if Higher Branch if Higher or Same

M•(mm) → M

ll

mm mm mm

-------------------------------------------

*Cycle-by-cycle number provides a reference to Tables 10-2 through 10-8 which detail cycle-by-cycle operation. Example: Table 10-1 Cycle-by-Cycle column reference number 2-4 equals Table 10-2 line item 2-4.

Page 1

Boolean Expression

Addressing Mode for Operand

Machine Coding (Hexadecimal)

2 2 3 2 3

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

----↕↕0-

2 2 3 2 3

2 3 4 4 5

----↕↕0-

2F rr 25 rr 23 rr 2D rr 2B rr 26 rr 2A rr 20 rr 13 dd mm rr 1F ff mm rr 18 1F ff mm rr 21 rr 12 dd mm rr 1E ff mm rr 18 1E ff mm rr 14 dd mm 1C ff mm 18 1C ff mm 8D rr 28 rr 29 rr 11 0C 0E 7F hh ll 6F ff 18 6F ff 4F 5F 0A

2 2 2 2 2 2 2 2 4 4 5 2 4 4 5 3 3 4 2 2 2 1 1 1 3 2 3 1 1 1

3 3 3 3 3 3 3 3 6 7 8 3 6 7 8 6 7 8 6 3 3 2 2 2 6 6 7 2 2 2

3-1 4-1 5-2 6-2 7-2 8-1 8-1 8-1 8-1 8-1 8-1 8-1 8-1 4-11 6-14 7-11 8-1 4-11 6-14 711 4-10 6-13 7-10 8-2 8-1 8-1 2-1 2-1 2-1 5-8 6-3 7-3 2-1 2-1 2-1

81 ii 91 dd B1 hh A1 ff 18 A1 ff

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

----↕↕↕↕

ll

2 2 3 2 3

2 3 4 4 5

3 2 3 1 1

6 6 7 2 2

3-1 4-1 5-2 6-2 7-2 5-8 6-3 7-3 2-1 2-1

----↕↕↕↕

ll

2 2 3 2 3

4 3 4 3 3

5 6 7 7 7

3-5 4-9 5-11 6-11 7-8

----↕↕↕↕

Opcode Operand(s) 85 ii 95 dd B5 hh ll A5 ff 18 A5 ff

BITA (opr)

Bit(s) Test A with Memory

A•M

A IMM A DIR A EXT A IND,X A IND,Y

BITB (opr)

Bit(s) Test B with Memory

B•M

B IMM B DIR B EXT B IND,X B IND,Y

C5 ii D5 dd F5 hh E5 ff 18 E5 ff

REL REL REL REL REL REL REL REL DIR IND,X IND,Y REL DIR IND,X IND,Y DIR IND,X IND,Y REL REL REL INH INH INH EXT IND,X IND,Y A INH B INH INH A IMM A DIR A EXT A IND,X A IND,Y B IMM B DIR B EXT B IND,X B IND,Y

C1 ii D1 dd F1 hh E1 ff 18 E1 ff

EXT IND,X IND,Y A INH B INH IMM DIR EXT IND,X IND,Y

73 hh 63 ff 18 63 ff 43 53

BLE (rel) Branch if ≤ Zero BLO (rel) Branch if Lower BLS (rel) Branch if Lower or Same BLT (rel) Branch If < Zero BMI (rel) Branch if Minus BNE (rel) Branch if Not = Zero BPL (rel) Branch if Plus BRA (rel) Branch Always BRCLR(opr) Branch if Bit(s) Clear (msk) (rel) BRN (rel) Branch Never BRSET(opr) Branch if Bit(s) Set (msk) (rel) BSET(opr) Set Bit(s) (msk)

? Z + (N ⊕ V) = 1 ?C=1 ?C+Z=1 ?N⊕V=1 ?N=1 ?Z=0 ?N=0 ?1=1 ? M • mm = 0

BSR (rel) BVC (rel) BVS (rel) CBA CLC CLI CLR (opr)

Branch to Subroutine Branch if Overflow Clear Branch if Overflow Set Compare A to B Clear Carry Bit Clear Interrupt Mask Clear Memory Byte

See Special Ops ?V=0 ?V=1 A–B 0→C 0→l 0→M

CLRA CLRB CLV CMPA (opr)

Clear Accumulator A Clear Accumulator B CIear Overflow Flag Compare A to Memory

0→A 0→B 0→V A–M

CMPB (opr) Compare B to Memory

?1=0 ? (M) • mm = 0 M + mm → M

B–M

COM (opr)

1’s Complement Memory Byte $FF – M → M

COMA COMB CPD (opr)

1’s Complement A 1’s Complement B Compare D to Memory 16-Bit

$FF – A → A $FF – B → B D – M:M + 1

Cycle Condition Codes by Cycle* S X H I N Z V C

Cycle

Operation

Bytes

Source Form(s)

ll

ll

1A 83 jj kk 1A 93 dd 1A B3 hh ll 1A A3 ff CD A3 ff

----------------------------------------------------------------

---------------

----↕↕0-

-------------------------↕↕↕↕ -------0 ---0-------0100

----0100 ----0100 ------0-

----↕↕01

----↕↕01 ----↕↕01

*Cycle-by-cycle number provides a reference to Tables 10-2 through 10-8 which detail cycle-by-cycle operation. Example: Table 10-1 Cycle-by-Cycle column reference number 2-4 equals Table 10-2 line item 2-4.

Page 2

Boolean Expression

Addressing Mode for Operand

4 5 6 6 7

3-3 4-7 5-10 6-10 7-8

----↕↕↕↕

18 8C jj kk 18 9C dd 18 BC hh ll 1A AC ff 18 AC ff

4 3 4 3 3

5 6 7 7 7

----↕↕↕↕

INH EXT IND,X IND,Y

19 7A hh 6A ff 18 6A ff

1 3 2 3

2 6 6 7

A–1→A B–1→B SP – 1 → SP IX – 1 → IX

A INH B INH INH INH

4A 5A 34 09

1 1 1 1

2 2 3 3

3-5 4-9 5-11 6-11 7-8 2-1 5-8 6-3 7-3 2-1 2-1 2-3 2-2

IY – 1 → IY A⊕M→A

INH A IMM A DIR A EXT A IND,X A IND,Y

18 09

2

4

2-4

-----↕ --

88 ii 98 dd 88 hh A8 ff 18 A8 ff

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

----↕↕0-

ll

2 2 3 2 3

B IMM B DIR B EXT B IND,X B IND,Y

C8 ii D8 dd F8 hh E8 ff 18 E8 ff

2 3 4 4 5

INH INH EXT IND,X IND,Y A INH B INH INH INH INH EXT IND,X IND,Y DIR EXT IND,X IND,Y A IMM A DIR A EXT A IND,X A IND,Y

03 02 7C hh 6C ff 18 6C ff 4C 5C 31 08 18 08 7E hh 6E ff 18 6E ff 9D dd BD hh AD ff 18 AD ff

1 1 3 2 3 1 1 1 1 2 3 2 3 2 3 2 3

41 41 6 6 7 2 2 3 3 4 3 3 4 5 6 6 7

3-1 4-1 5-2 6-2 7-2 2-17 2-17 5-8 6-3 7-3 2-1 2-1 2-3 2-2 2-4 5-1 6-1 7-1 4-8 5-12 6-12 7-9

----↕↕0-

ll

2 2 3 2 3

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

----↕↕0-

ll

2 2 3 2 3

B IMM B DIR B EXT B IND,X B IND,Y

C6 ii D6 dd F6 hh E6 ff 18 E6 ff

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

----↕↕0-

ll

2 2 3 2 3

IMM DIR EXT IND,X IND,Y

CC jj DC dd FC hh EC ff 18 EC ff

3 2 3 2 3

3 4 5 5 6

3-2 4-3 5-4 6-6 7-6

----↕↕0-

Compare X to Memory 16-Bit

IX – M:M + 1

IMM DIR EXT IND,X IND,Y

CPY (opr)

Compare Y to Memory 16-Bit

IY – M:M + 1

IMM DIR EXT IND,X IND,Y

DAA DEC (opr)

Decimal Adjust A Decrement Memory Byte

Adjust Sum to BCD M–1→M

DECA DECB DES DEX

Decrement Accumulator A Decrement Accumulator B Decrement Stack Pointer Decrement Index Register X

EORB (opr) Exclusive OR B with Memory

B⊕M→B

FDIV IDIV INC (opr)

Fractional Divide 16 by 16 Integer Divide 16 by 16 Increment Memory Byte

D/IX → IX; r → D D/IX → IX; r → D M+1→M

INCA INCB INS INX INY JMP (opr)

Increment Accumulator A Increment Accumulator B Increment Stack Pointer Increment Index Register X Increment Index Register Y Jump

A+1→A B+1→B SP + 1 → SP IX + 1 → IX IY + 1 → IY See Special Ops

JSR (opr)

Jump to Subroutine

See Special Ops

LDAA (opr) Load Accumulator A

LDAB (opr) Load Accumulator B

LDD (opr)

Load Double Accumulator D

Cycle Condition Codes by Cycle* S X H I N Z V C

3 2 3 2 3

CPX (opr)

DEY Decrement Index Register Y EORA (opr) Exclusive OR A with Memory

Machine Coding (Hexadecimal)

Cycle

Operation

Bytes

Source Form(s)

M→A

M→B

M → A,M + 1 → B

Opcode Operand(s) 8C jj kk 9C dd BC hh ll AC ff CD AC ff

86 ii 96 dd B6 hh A6 ff 18 A6 ff

ll

ll

ll

ll

kk ll

----↕↕↕↕ ----↕↕↕-

----↕↕↕----↕↕↕------------↕ --

-----↕↕↕ -----↕0↕ ----↕↕↕-

----↕↕↕----↕↕↕------------↕ ------↕ ---------

--------

*Cycle-by-cycle number provides a reference to Tables 10-2 through 10-8 which detail cycle-by-cycle operation. Example: Table 10-1 Cycle-by-Cycle column reference number 2-4 equals Table 10-2 line item 2-4.

Page 3

Boolean Expression

Addressing Mode for Operand

3 4 5 5 6

3-2 4-3 5-4 6-6 7-6

----↕↕0-

CE jj kk DE dd FE hh ll EE ff CD EE ff

3 2 3 2 3

3 4 5 5 6

3-2 4-3 5-4 6-6 7-6

----↕↕0-

IMM DIR EXT IND,X IND,Y

18 CE jj 18 DE dd 18 FE hh 1A EE ff 18 EE ff

kk

4 3 4 3 3

4 5 6 6 6

3-4 4-5 5-6 6-7 7-6

----↕↕0-

EXT IND,X 0 IND,Y A INH B INH

78 hh 68 ff 18 68 ff 48 58

ll

3 2 3 1 1

6 6 7 2 2

5-8 6-3 3-7 2-1 2-1

----↕↕↕↕

INH

05

1

3

2-2

----↕↕↕↕

EXT IND,X IND,Y C A INH B INH

74 hh 64 ff 18 64 ff 44 54

3 2 3 1 1

6 6 7 2 2

5-8 6-3 7-3 2-1 2-1

----↕↕↕↕

INH

04

1

3

2-2

----0↕↕↕

INH

3D

1

10

2-13

-------↕ ----↕↕↕↕

Load Stack Pointer

M:M + 1 → SP

IMM DIR EXT IND,X IND,Y

LDX (opr)

Load Index Register X

M:M + 1 → IX

IMM DIR EXT IND,X IND,Y

LDY (opr)

Load Index Register Y

M:M + 1 → IY

Logical Shift Left

LSLA LSLB LSLD

C

b7

b0

Cycle Condition Codes by Cycle* S X H I N Z V C

3 2 3 2 3

LDS (opr)

LSL (opr)

Machine Coding (Hexadecimal)

Cycle

Operation

Bytes

Source Form(s)

Logical Shift Left Double

Opcode Operand(s) 8E jj kk 9E dd BE hh ll AE ff 18 AE ff

ll

0 C

LSR (opr)

b0

Logical Shift Right

LSRA LSRB LSRD

b15

0 b7

b0

Logical Shift Right Double

ll

0 b15

b0

C

AxB → D

MUL

Multiply 8 by 8

NEG (opr)

2’s Complement Memory Byte 0 – M → M

NEGA NEGB NOP ORAA (opr)

2’s Complement A 2’s Complement B No Operation OR Accumulator A (Inclusive)

0–A→A 0–B→B No Operation A+M→A

ORAB (opr) OR Accumulator B (Inclusive) B + M → B

PSHA PSHB PSHX PSHY PULA PULB PULX PULY ROL (opr) ROLA ROLB

Push A onto Stack Push B onto Stack Push X onto Stack (Lo First) Push Y onto Stack (Lo First) Pull A from Stack Pull B from Stack Pull X from Stack (Hi First) Pull Y from Stack (Hi First) Rotate Left

A → Stk, SP = SP–1 B → Stk, SP = SP–1 IX → Stk, SP = SP–2 IY → Stk, SP = SP–2 SP = SP + 1, A←Stk SP = SP + 1, B←Stk SP = SP + 2, IX←Stk SP = SP + 2, IY←Stk

C

b7

b0

EXT IND,X IND,Y A INH B INH INH A IMM A DIR A EXT A IND,X A IND,Y

70 hh ll 60 ff 18 60 ff 40 50 01

3 2 3 1 1 1

6 6 7 2 2 2

5-8 6-3 7-3 2-1 2-1 2-1

8A ii 9A dd BA hh AA ff 18 AA ff

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

----↕↕0-

ll

2 2 3 2 3

B IMM B DIR B EXT B IND,X B IND,Y

CA ii DA dd FA hh EA ff 18 EA ff

2 3 4 4 5

1 1 1 2 1 1 1 2

3 3 4 5 4 4 5 6

3-1 4-1 5-2 6-2 7-2 2-6 2-6 2-7 2-8 2-9 2-9 2-10 2-11

----↕↕0-

ll

2 2 3 2 3

3 2 3 1 1

6 6 7 2 2

5-8 6-3 7-3 2-1 2-1

A INH B INH INH INH A INH B INH INH INH EXT IND,X IND,Y C A INH B INH

36 37 3C 18 3C 32 33 38 18 38 79 hh 69 ff 18 69 ff 49 59

ll

----↕↕↕↕ ----↕↕↕↕ --------

------------------------------------------------------------↕↕↕↕

*Cycle-by-cycle number provides a reference to Tables 10-2 through 10-8 which detail cycle-by-cycle operation. Example: Table 10-1 Cycle-by-Cycle column reference number 2-4 equals Table 10-2 line item 2-4.

Page 4

Rotate Right

RORA RORB RTI RTS SBA SBCA (opr)

C

Return from Interrupt Return from Subroutine Subtract B from A Subtract with Carry from A

SBCB (opr) Subtract with Carry from B

SEC SEI SEV STAA (opr)

Set Carry Set Interrupt Mask Set Overflow Flag Store Accumulator A

STAB (opr) Store Accumulator B

STD (opr)

STOP STS (opr)

STX (opr)

STY (opr)

Store Accumulator D

Stop Internal Clocks Store Stack Pointer

Store Index Register X

Store Index Register Y

SUBA (opr) Subtract Memory from A

SUBB (opr) Subtract Memory from B

SUBD (opr) Subtract Memory from D

SWI TAB TAP TBA

Boolean Expression

Software Interrupt Transfer A to B Transfer A to CC Register Transfer B to A

b7

b0

See Special Ops See Special Ops A–B→A A–M–C→A

B–M–C→B

1→C 1→I 1→V A→M

B→M

A → M, B → M + 1

SP → M:M + 1

IX → M:M + 1

IY → M:M + 1

A–M→A

B–M→B

D – M:M + 1→ D

See Special Ops A→B A → CCR B→A

Addressing Mode for Operand

EXT IND,X IND,Y C A INH B INH

Machine Coding (Hexadecimal) Opcode Operand(s) 76 hh ll 66 ff 18 66 ff 46 56

Cycle Condition Codes by Cycle* S X H I N Z V C

Cycle

ROR (opr)

Operation

Bytes

Source Form(s)

3 2 3 1 1

6 6 7 2 2

5-8 6-3 7-3 2-1 2-1

----↕↕↕↕

INH INH INH A IMM A DIR A EXT A IND,X A IND,Y

3B 39 10

1 1 1

12 5 2

2-14 2-12 2-1

↕↓↕↕↕↕↕↕ -----------↕↕↕↕

82 ii 92 dd B2 hh A2 ff 18 A2 ff

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

----↕↕↕↕

ll

2 2 3 2 3

B IMM B DIR B EXT B IND,X B IND,Y

C2 ii D2 dd F2 hh E2 ff 18 E2 ff

2 3 4 4 5

INH INH INH A DIR A EXT A IND,X A IND,Y

OD OF OB

1 1 1

2 2 2

3-1 4-1 5-2 6-2 7-2 2-1 2-1 2-1

----↕↕↕↕

ll

2 2 3 2 3

2 3 2 3 2 3 2 3 2 3 2 3 1 2 3 2 3 2 3 2 3 3 4 3 3

3 4 4 5 3 4 4 5 4 5 5 6 2 4 5 5 6 4 5 5 6 5 6 6 6

4-2 5-3 6-5 7-5 4-2 5-3 6-5 7-5 4-4 5-5 6-8 7-7 2-1 4-4 5-5 6-8 7-7 4-4 5-5 6-8 7-7 4-6 5-7 6-9 7-7

----↕↕0-

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

----↕↕↕↕

lI

2 2 3 2 3

2 3 4 4 5

3-1 4-1 5-2 6-2 7-2

----↕↕↕↕

ll

2 2 3 2 3 3 2 3 2 3

4 5 6 6 7

----↕↕↕↕

1 1 1 1

14 2 2 2

3-3 4-7 5-10 6-10 7-8 2-15 2-1 2-1 2-1

97 dd B7 hh A7 ff 18 A7 ff

B DIR B EXT B IND,X B IND,Y DIR EXT IND,X IND,Y INH DIR EXT IND,X IND,Y DIR EXT IND,X IND,Y DIR EXT IND,X IND,Y A IMM A DIR A EXT A IND,X A IND,Y

D7 dd F7 hh E7 ff 18 E7 ff DD dd FD hh ED ff 18 ED ff CF 9F dd BF hh AF ff 18 AF ff DF dd FF hh EF ff CD EF ff 18 DF dd 18 FF hh 1A EF ff 18 EF ff

B IMM B DIR B EXT B IND,X B IND,Y

C0 ii D0 dd F0 hh E0 ff 18 E0 ff

IMM DlR EXT IND,X IND,Y

83 jj 93 dd B3 hh A3 ff 18 A3 ff

INH INH INH INH

80 ii 90 dd B0 hh A0 ff 18 A0 ff

3F 16 06 17

ll

ll

ll

ll

ll

ll

kk ll

-------1 ---1---------1-

----↕↕0-

----↕↕0-

-----------↕↕0-

----↕↕0-

----↕↕0-

- - - 1- - - ----↕↕0↕↓↕↕↕↕↕↕ ----↕↕0-

*Cycle-by-cycle number provides a reference to Tables 10-2 through 10-8 which detail cycle-by-cycle operation. Example: Table 10-1 Cycle-by-Cycle column reference number 2-4 equals Table 10-2 line item 2-4.

Page 5

Boolean Expression

Addressing Mode for Operand

TEST (Only in Test Modes) Transfer CC Register to A Test for Zero or Minus

Address Bus Counts CCR → A M–0

TSTA TSTB TSX TSY TXS TYS WAI

Transfer Stack Pointer to X Transfer Stack Pointer to Y Transfer X to Stack Pointer Transfer Y to Stack Pointer Wait for Interrupt

A–0 B–0 SP + 1 → IX SP + 1 → IY IX – 1 → SP IY – 1 → SP Stack Regs & WAlT

INH INH EXT IND,X IND,Y A INH B INH INH INH INH INH INH

XGDX XGDY

Exchange D with X Exchange D with Y

IX → D, D → IX IY → D, D → IY

INH INH

Machine Coding (Hexadecimal) Opcode Operand(s) 00 07 7D hh ll 6D ff 18 6D ff 4D 5D 30 18 30 35 18 35 3E 8F 18 8F

Cycle

TEST TPA TST (opr)

Operation

Bytes

Source Form(s)

1 1 3 2 3 1 1 1 2 1 2 1

** 2 6 6 7 2 2 3 4 3 4 ***

1 2

3 4

Cycle Condition Codes by Cycle* S X H I N Z V C 2-20 - - - - - - - 2-1 - - - - - - - 5-9 - - - - ↕ ↕ 0 0 6-4 7-4 2-1 - - - - ↕ ↕ 0 0 2-1 - - - - ↕ ↕ 0 0 2-3 - - - - - - - 2-5 - - - - - - - 2-2 - - - - - - - 2-4 - - - - - - - 2-16 - - - - - - - 2-2 2-4

---------------

*Cycle-by-cycle number provides a reference to Tables 10-2 through 10-8 which detail cycle-by-cycle operation. Example: Table 10-1 Cycle-by-Cycle column reference number 2-4 equals Table 10-2 line item 2-4. **Infinity or Until Reset Occurs ***12 Cycles are used beginning with the opcode fetch. A wait state is entered which remains in effect for an integer number of MPU E-clock cycles (n) until an interrupt is recognized. Finally, two additional cycles are used to fetch the appropriate interrupt vector (14 + n total). dd = 8-Bit Direct Address ($0000 –$00FF) (High Byte Assumed to be $00) ff = 8-Bit Positive Offset $00 (0) to $FF (255) (Is Added to Index) hh = High Order Byte of 16-Bit Extended Address ii = One Byte of Immediate Data jj = High Order Byte of 16-Bit Immediate Data kk = Low Order Byte of 16-Bit Immediate Data ll = Low Order Byte of 16-Bit Extended Address mm = 8-Bit Bit Mask (Set Bits to be Affected) rr = Signed Relative Offset $80 (– 128) to $7F (+ 127) (Offset Relative to the Address Following the Machine Code Offset Byte)

Page 6

JSR, JUMP TO SUBROUTINE

WAI, WAIT FOR INTERRUPT

MAIN PROGRAM PC

DIRECT

$9D = JSR dd RTN NEXT MAIN INSTR. MAIN PROGRAM PC

INDEXED, X

$AD = JSR ff RTN NEXT MAIN INSTR. MAIN PROGRAM PC

INDEXED, Y

$18 = PRE $AD = JSR RTN ff NEXT MAIN INSTR.

7

STACK

PC

SP SP+1 SP+2 SP+3 SP+4 SP+5 SP+6 SP+7 SP+8

➩ SP+9

INTERRUPT ROUTINE

0

7

SP+2 SP+3 SP+4 SP+5 SP+6 SP+7 SP+8

➩ SP+9 SWI, SOFTWARE INTERRUPT MAIN PROGRAM PC

$3F = SWI

7

JMP, JUMP

SP–7 SP–6 SP–5

WAI, WAIT FOR INTERRUPT

SP–4

MAIN PROGRAM

SP–3

$3E = WAI

SP–2 SP–1

MAIN PROGRAM PC

$6E = JMP ff

SP

BSR, BRANCH TO SUBROUTINE

INDEXED, X

MAIN PROGRAM X + ff NEXT MAIN INSTR.

PC

$8D = BSR

INDEXED, Y

$18 = PRE $6E = JMP ff

RTS, RETURN FROM SUBROUTINE MAIN PROGRAM $39 = RTS

X + ff NEXT MAIN INSTR.

EXTENDED

$7E = JMP hh ll

hh ll NEXT MAIN INSTR.

STACK

0

SP SP+1

RTNH RTNL

LEGEND: RTN = ADDRESS OF NEXT INSTRUCTION IN MAIN PROGRAM TO BE EXECUTED UPON RETURN FROM SUBROUTINE RTNH = MOST SIGNIFICANT BYTE OF RETURN ADDRESS RTNL = LEAST SIGNIFICANT BYTE OF RETURN ADDRESS ➩ = STACK POINTER POSITION AFTER OPERATION IS COMPLETE dd = 8-BIT DIRECT ADDRESS ($0000–$00FF) (HIGH BYTE ASSUMED TO BE $00) ff = 8-BIT POSITIVE OFFSET $00 (0) TO $FF (256) IS ADDED TO INDEX hh = HIGH-ORDER BYTE OF 16-BIT EXTENDED ADDRESS ll = LOW-ORDER BYTE OF 16-BIT EXTENDED ADDRESS rr= SIGNED RELATIVE OFFSET $80 (–128) TO $7F (+127) (OFFSET RELATIVE TO THE ADDRESS FOLLOWING THE MACHINE CODE OFFSET BYTE)

Figure 10-2 Special Operations

Page 7

0

RTNH RTNL

7

➩ SP+2

MAIN PROGRAM

STACK

➩ SP–2 SP

PC

PC

7 SP–1

MAIN PROGRAM PC

0

CCR ACCB ACCA IXH IXL IYH IYL RTNH RTNL

SP–8

PC

STACK

➩ SP–9

PC

$BD = PRE hh RTN ll NEXT MAIN INSTR.

CCR ACCB ACCA IXH IXL IYH IYL RTNH RTNL

SP+1

MAIN PROGRAM INDEXED, Y

0

SP

$3E = WAI

CCR ACCB ACCA IXH IXL IYH IYL RTNH RTNL

STACK