2.DATA Movement - Lecture 2018
2.DATA Movement - Lecture 2018
Status
Mnemonic Description 16-bit instruction word
affect
movff fs,fd move fsource to fdestination 1100 ffff ffff ffff none
2
Data move from any address to WREG
[addr] WREG
MOVF f,d,a 0101 00da ffff ffff
f – file register ( 8 bit address)
F : same address
d – destination d a
W : WREG W =0 A = 0
A access bank ( 0x00 – 0x5F)
a F= 1 BANKED = 1
BANKED
Data move from any address to WREG
[addr1] WREG
Machine code : 0 1 0 1 0 0 d a f f f f f f f f
Initial values for registers
Bank 0 Bank 1 WREG 2F
0x00 2A 0x100 3E
BSR 1
0x01 71 0x101 66
0x02 DC 0x102 40 STATUS N=0 OV=0 Z=0 DC=0 C=1
0x03 99 0x103 C1
Bank 2 Bank 3
0x200 00 0x300 8A
0x201 9F 0x301 55
0x202 0B 0x302 10
0x203 13 0x303 02
Eg. MOVF 0x02,W,A
0101
0x00 2A
00da
Bank 0
0x00 3E
ffff ffff
0x100
Bank 1
0101
0x01
0x02
71
DC
00
0x01
0x02
66
40
0x101
0x102
0x03 99 0x03
0x103 C1
Bank 2 Bank 4
0x200 00 0x300 8A
0x201 9F 0x301 55 Machine code
0x202 0B 0x302 10
0x203 13 0x303 02
Eg. MOVF 0x02,W,A ; [0x 02] WREG
Bank 2 Bank 3
0x200 00 0x300 8A
0x201 9F 0x301 55
0x202 0B 0x302 10
0x203 13 0x303 02
Eg. MOVF 0x02,W,BANKED
0101
0x00 2A
0 0 d3Ea f f f f f f f f
Bank 0
0x00 0x100
Bank 1
0101
0x01
0x02
71
DC
00
0x01
0x02
66
40
0x101
0x102
0x03 99 0x03
0x103 C1
Bank 2 Bank 4
0x200 00 0x300 8A
0x201 9F 0x301 55 Machine code
0x202 0B 0x302 10
0x203 13 0x303 02
Eg. MOVF 0x02,W,BANKED ; [0x 02] WREG
Bank 2 Bank 4
0x200 00 0x300 8A
0x201 9F 0x301 55
0x202 0B 0x302 10
0x203 13 0x303 02
Data move from WREG to any address
WREG [addr]
MOVWF f,a 0110 111a ffff ffff
Machine code : 0 1 1 0 1 1 1 a f f f f f f f f
Eg. MOVWF 0x00,A
0110
0x00 2A
111a3E f f f f f f f f
Bank 0
0x00 0x100
Bank 1
0110
0x01
0x02
71
DC
111
0x01
0x02
66
40
0x101
0x102
0x03 99 0x03
0x103 C1
Bank 2 Bank 4
0x200 00 0x300 8A
0x201 9F 0x301 55 Machine code
0x202 0B 0x302 10
0x203 13 0x303 02
Eg. MOVWF 0x00,A ; WREG [0x 00]
Bank 2 Bank 3
0x200 00 0x300 8A
0x201 9F 0x301 55
0x202 0B 0x302 10
0x203 13 0x303 02
Eg. MOVWF 0x00,BANKED ;
0110
0x00 2A
111a
Bank 0
0x00 3E
ffff ffff
0x100
Bank 1
0110
0x01
0x02
71
DC
111
0x01
0x02
66
40
0x101
0x102
0x03 99 0x03
0x103 C1
Bank 2 Bank 4
0x200 00 0x300 8A
0x201 9F 0x301 55 Machine code
0x202 0B 0x302 10
0x203 13 0x303 02
Eg. MOVWF 0x00,BANKED ; WREG [0x 00]
Bank 2 Bank 3
0x200 00 0x300 8A
0x201 9F 0x301 55
0x202 0B 0x302 10
0x203 13 0x303 02
How to activate the Bank?
MOVLB k; BSR = k
k 4bit binary
0000 0001 0000 kkkk
Bank 2 Bank 3
0x200 00 0x300 8A
0x201 9F 0x301 55
0x202 0B 0x302
10
10
0x203 13 0x303
02
Data move from 1 address to another address
40
0x102
1111
0x03 99
ffff C1ffff ffff
0x03 0x103
fd
1111
0x200
Bank 2
00
Bank 4
8A
0x300
Bank 2 Bank 3
0x200 00 0x300 8A
0x201 9F 0x301 55
0x202 0B 0x302 10
0x203 13 0x303 02
Example
Write a program to transfer the content of data registers located
at 0x20 to 0x30, 0x21 to 0x31, 0x22 to 0x32, 0x23 to 0x33 and
0x24 to 0x34
0x20 A9 0x30 00
0x21 11
11 0x31 08
0x22 22 0x32 09
0x23 33 0x33 05
0x24 44 0x34 04
SOLUTION 1 – using MOVFF fs,fd
MOVFF 0X20,0X30
MOVFF 0X21,0X31 0x20 A9 0x30 00
WREG k 8 bit
MOVLW k ; WREG = k
0000
0x01
0x02
71
DC
1110
0x01
0x02
66
40
0x101
0x102
0x03 99 0x03
0x103 C1
Bank 2 Bank 4
0x200 00 0x300 8A
0x201 9F 0x301 55 Machine code
0x202 0B 0x302 10
0x203 13 0x303 02
Eg. MOVLW 0X3D
3D
WREG 2F
BSR 1
AB
91 0X16 22
MOVLW 0X91 0X17 33
91
SWAPF f,d,a ;swap high nibble with low nibble
EXAMPLE: 0X1A 37
WREG
SWAPF 0X1D,F,A AB 0X1B 20
0X1C 3A
0X1D 62
26
6 2
6 2
SWAPF f,d,a ;swap high nibble with low nibble
EXAMPLE: 0X1A 37
WREG
SWAPF 0X1D,W,A AB
26 0X1B 20
0X1C 3A
0X1D 62
6 2
6 2
LFSR FSRn,k ; FSRn = k(12 bit)
EXAMPLE:
LFSR FSR1, 0 X 2 3 4 1110 1110 00ff k11kkk