Code:
MOVLW 0x58 ; w = 58h
MOVWF 0x35 ; (35h) = 58h
MOVLW 0xDB ; w = DBh
ANDWF 0x35,1 ; (35h) = DBh and 58h = 58h
MOWF 0x35,0 ; w = 58h
SWAPF 0x35,0 ; w = hoán đổi vị trí 4 bit thấp <-> 4 bit cao của 58h -> w = 85h
(W)= 85h (0x35)= 58h
MOVLW 0x39 ; w = 39h
MOVWF 0x20 ; (20h) = 39h
ADDLW 0x15 ; w = 4Eh
XORWF 0x20,1 ; (20h) = 4Eh xor 39h = 77h
COMF 0x20,1 ; (20h) = lấy bù 77h = 88h
(W)= 4Eh (0x20)= 88h (C)= 0
MOVLW 0x49 ; w = 49h
MOVWF 0x30 ; (30h) = 49h
BSF STATUS,0 ; (C) = 1
MOVLW 0x03 ; w = 03h
MOVWF 0x40 ; (40h) = 03h
X1:
RRF 0x30,1 ; (30h) = 49h =
;[01001001]C[1]->1[10100100]C[1]->2[11010010]C[0]->3[01101001]C[0]
; chưa xoay -> xoay lần 1 -> xoay lần 2 -> xoay lần 3
DECFSZ 0x40,1 ; (40h) = [3] -> [2] ->[1] -> **
GOTO X1 ; ** (40h) = 0 -> bỏ qua lệnh goto x1
(W)= 03h (0x30)=69h (0x40)= 0 (C)= 0