ORG 0000H
LJMP START
ORG 100H
START: MOV R0, #80H ; (R0) ← 80H
MOV R6, #00H ; (R6) ← 00H
MOV R7, #0BH ; (R7) ← 0Bh
BASLA: ACALL ART ; ART alt programına dallan
ACALL AZAL ; AZAL alt programına dallan
SETB C ;(C) ← 1
ANL C, P1.0 ; (C) ← (C) ^ (P1.0)
JC TEST2 ; (C)=1 ise TEST2 ‘ye dallan
MOV A, R7 ; (A) ← (R7)
XRL A, #10H ;(A) ile 10H arasında Exor işlemini yap, sonucu A ‘ya at
JZ BASLA ; Exor işleminin sonucu “0” ise BASLA’ya git
MOV A, R7 ; (A) ← (R7)
ADD A, #01H ; (A) ← (A)+01H
MOV R7, A ; (A) ← (R7)
TEST2: SETB C ; (C) ← 1
ANL C, P1.1 ; (C) ← (C) ^ (P1.1)
JC BASLA ;(C)=1 ise BASLA’ ya git
MOV A, R7 ; (A) ← (R7)
XRL A, #05H ;(A) ile 05H arasında Exor işlemini yap
JZ BASLA ;(A) ile 10H arasında Exor işlemini yap, sonucu A ya at
MOV A, R7 ; (A) ← (R7)
CLR C ;(C) ← 0
SUBB A, #01H ;(A) ←(A) - (C) - #01H
MOV R7, A ;(A) ← (R7)
SJMP BASLA ; İkisi de Değilse BASLA'ya git
ART: MOV P0, R0 ;(P0) ←(R0)
MOV A, R6 ;(A) ←(R6)
MOV R3, A ;(R3) ←(A)