Beruflich Dokumente
Kultur Dokumente
3B
Conditional Branches Loop Primitives Jump and Branch Condition Code Interrupt
There is another way that we can load or store values. We can use the stack. The act of storing a value onto the stack is called PUSHING. The act of loading a value from the stack is called PULLING. The PULL and PUSH instructions that can operate on:
Transfer A to B Transfer B to A Transfer Registers Transfer SP to X Transfer SP to Y Transfer X to SP Transfer Y to SP Exchange Registers Exchange D and X Exchange D and Y Exchange B and A
TAB TBA TFR TFR TFR TFR TFR EXG EXG EXG EXG
Source Register, Destination Register S,X S,Y X,S Y,S Register1, Register 2 D,X D,Y B,A
8 bit register
16 bit register
9
8 bit register
16 bit register
9
MSB LSB 16 bit register 8 bit value 8 bit register LSB 16 bit register
Thursday, 2 July 2009
8 bit register
MSB LSB 16 bit register 8 bit value 8 bit register LSB 16 bit register
Thursday, 2 July 2009
MSB LSB 16 bit register 8 bit value 8 bit register LSB 16 bit register
Thursday, 2 July 2009
LSB 8 bit register MSB=0 8 bit value 16 bit register 8 bit value 8 bit register
10
MSB LSB 16 bit register 8 bit value 8 bit register MSB=0 8 bit value 16 bit register
Thursday, 2 July 2009
LSB 8 bit register MSB=0 8 bit value 16 bit register LSB 8 bit register
10
11
MOVB 23
#23, Data
M[Data]
MOVB #$FF, PortA $FF
M[Data]
M[PortA]
Thursday, 2 July 2009
M[$1234]
12
MOVB 23
#23, Data 23
M[Data]
MOVB #$FF, PortA $FF
M[Data]
M[PortA]
Thursday, 2 July 2009
M[$1234]
12
MOVB 23
#23, Data 23
M[Data]
MOVB #$FF, PortA $FF
M[PortA]
Thursday, 2 July 2009
M[$1234]
12
MOVB 23
#23, Data 23
M[Data]
MOVB #$FF, PortA $FF $FF
M[PortA]
Thursday, 2 July 2009
M[$1234]
12
MOVB 23
#23, Data 23
M[Data]
MOVB #$FF, PortA $FF $FF
M[PortA]
Thursday, 2 July 2009
M[$1234]
12
MOVW
#$1423, Data
$14 $23
MOVW PortA, Data
M[Data](MSB) M[Data+1](LSB)
Port A Port B
M[Data](MSB) M[Data+1](LSB)
13
MOVW
#$1423, Data
$14 $23
MOVW PortA, Data
$14 $23
M[Data](MSB) M[Data+1](LSB)
Port A Port B
M[Data](MSB) M[Data+1](LSB)
13
MOVW
#$1423, Data
$14 $23
MOVW PortA, Data
$14 $23
M[Data](MSB) M[Data+1](LSB)
Port A Port B
M[Data](MSB) M[Data+1](LSB)
13
Using the increment and decrement commands it is possible to increase or decrease the value in a register or memory location by 1. We can use this commands on: Accumulator A Accumulator B X index Register Y index Register Stack Pointer Memory Increment INCA INCB INX INY INS INC mem Decrement DECA DECB DEX DEY DES DEC mem
14
Spin: Serial_Base
15
16
17
The operand is a memory location or variable name. The Mask species the bits to be set or cleared. The Mask consists of a binary number, the bit locations were a 1 appear the locations that are cleared (BCLR) or set (BSET).
18
PortA
19
PortA
%10101010
19
PortA
%10101010
19
PortA
%10101010
19
PortA
%11111010
19
PortA
%11111010
19
PortA
%11111010
19
PortA
%01010000
19
PortA
%01010000
19
20
21
22
22
23
23
24
24
25
25
26
26
CCR[C]
0 1 0
CCR[C] 1
27
CCR[C]
0 1 0
CCR[C]
1 1
27
CCR[C]
CCR[C]
28
CCR[C] 0 0
CCR[C] 0 1
28
CCR[C]
CCR[C]
29
CCR[C] 0 0
CCR[C] 0 1
29
30
CCR[C] X 0 1
Rotate Right 0 0 0 0 0 0
CCR[C] X 0 0
Rotate Left 0 0 0 0 0 0
31
CCR[C] 0 0
Rotate Right 1 0 0 0 0 0 0
CCR[C] 0 1 0 0
Rotate Left 0 0 0 0 0
32
CCR[C] 0 0 0
Rotate Right 1 0 0 0 0 0
CCR[C] 1 0 0
Rotate Left 0 0 0 0 0 0
32
CCR[C] 0 0
Rotate Right 0 1 0 0 0 0 0
CCR[C] 1 0 0 0
Rotate Left 0 0 0 0 0
33
CCR[C] 0 0 0
Rotate Right 0 1 0 0 0 0
CCR[C] 0 0 0
Rotate Left 0 0 0 0 0 1
33