3. Flowchart
A flowchart is a diagrammatic representation that
illustrates the sequence of operations to be
performed to get the solution of a problem.
Flowcharts are generally drawn in the early stages
of formulating computer solutions.
Flowcharts facilitate communication between
programmers and business people.
These flowcharts play a vital role in the
programming of a problem and are quite helpful in
understanding the logic of complicated and
lengthy problems.
3
4. Flowchart Symbols
Terminator
The start or end of program flow
Initial / Preparation
Setting a value at the beginning of the
process or initialize the routine
Process
Any kind of processing function, such as a
variable assignment or mathematical
operation.
Predefined Process
A named process, such as a subroutine, a
module, Procedure or Function.
Start
4
5. Flowchart Symbols
Condition Decision
Select flow direction from condition
Connector
Jumping destination
Flow line
connect the flowchart symbols and
show the sequence of operations
during the program execution.
True
False
5
7. Labels are destination point that program (flowline) able to join.
One program able to contain unlimited number of labels.
Name of Labels follow the standard identifier rule
Start with Letter
Only Letter, Number and Underscore
Case sensitive
All label follow by colons
Labels name, such as
Loop:
Delay:
Multipli4X4Bytes:
CheckOnes:
Label (Relative address)
MainLoop:
7
8. Sample of Branch Instruction
(Unconditional Jump)
ORG 0H
MOV R1,#40H
Loop:
MOV @R1,#22H
INC R1
JMP Loop
END
8
10. JMP rel., SJMP rel.
Jump to specified relative address
-128 to +127 locations (Short Jump)
No condition.
Sample
SJMP NO_Task
Jump to label name is No_Task
10
11. AJMP adr11
Jump to any specific location
Long distance. (211 = 2kByte long)
No condition.
Sample
AJMP Loop3
Jump to label name is Loop3
11
12. LJMP adr16
Jump to any specific location
Long distance. (216 = 64kByte long)
No condition.
3 Bytes instruction
4 Machine cycles
Sample
LJMP Program5
Jump to label name is Program5
12
13. JC rel
Condition: Jump if carry bit is set
Jump to specific destination
Short Jump
3 Machine cycles
Sample
JC Store_It
If Carry bit = Set, Jump to label “Store_It”
13
14. JNC rel
Condition: Jump if carry bit is clear
Jump to specific destination
Short Jump
3 Machine cycles
Sample
JNC EasyTask
If Carry = 0, Jump to EasyTask
14
15. JNC Sample
Example 3: Program to make summation of Timer0 and Timer1 registers.
Store the result in R0 (Highest Byte), R1 and R2 (Lowest Byte).
15
To assign value of
Carry Flag to R0
ORG 00H
MOV R0, #00H
JNC CarryIsZero
MOV R0,#01H
CarryIsZero:
END
Timer0
Timer1
+
TL0TH0
R1 R2R0
16. Bit
16
Any bit in memory
Carry
Acc.0
PSW.4
20h.0
00h
7Fh
P3.3
Addres
s
.7 .6 .5 .4 .3 .2 .1 .0 Name
19h
20h 07 06 05 04 03 02 01 00
21h 0F 0E 0D 0C 0B 0A 09 08
2Fh 7F 7E 7D 7C 7B 7A 79 78
17. JB bit, rel
Condition: Jump if addressed bit is set
Jump to specific destination
Short Jump
2 Machine cycles
Sample
JB 00h, EasyTask
If bit address 00h is set, Jump to label EasyTask:
JB P3.4, NOTPressedS4
If bit P3.4 = set. Jump to label PressedS4
17
18. JNB bit, rel
Condition: Jump if addressed bit is clear
Jump to specific destination
Short Jump
2 Machine cycles
Sample
JNB 00h, EasyTask
If bit address 00h is clear, Jump to label EasyTask:
18
19. JBC bit, rel
Condition: Jump if addressed bit is set
Clear bit
Jump to specific destination
Short Jump
4 Machine cycles
Sample
JBC 00h, EasyTask
If bit address 00h is set, jump to label EasyTask:, Clear bit
00h
JBC PSW.4, EasyTask
If bit address PSW.4 is set, jump to label EasyTask:, Clear
bit PSW.4
19
20. JZ rel
Condition: Jump if Acc equal to zero
Jump to specific destination
Short Jump
3 Machine cycles
Sample
JZ EmptyNow
If ACC = 0, Jump to label EmptyNow:
20
21. JNZ rel
Condition: Jump if Acc not equal zero
Jump to specific destination
Short Jump
3 Machine cycles
Sample
JNZ SomeValue
If ACC > 0, Jump to label Somevalue:
21
22. CJNE A, Rx, rel
Condition: Jump if Acc not equal to Rx
Jump to specific destination
Short Jump
4 Machine cycles
Effect to carry flag
Sample
CJNE A, 30h, Loop2
If ACC ≠ 30h, Jump to label Loop2:
22
23. CJNE A, #X, rel
Condition: Jump if Acc not equal to #X
Jump to specific destination
Short Jump
4 Machine cycles
Sample
CJNE A, #3Eh, Loop3
If ACC ≠ #30h, Jump to label Loop3:
23
24. CJNE Rn, #X, rel
Condition: Jump if Rn not equal to #X
Jump to specific destination
Short Jump
4 Machine cycles
Sample
CJNE R4, #40h, Loop4
If R4 ≠ #40h, Jump to label Loop4:
24
25. CJNE @Ri, #X, rel
Condition: Jump if register addressed by Ri
not equal to #X
Jump to specific destination
Short Jump
4 Machine cycles
Sample
CJNE @R0, #0E0h, Loop5
If register which is addressed by R0 ≠ #E0h, Jump to
label Loop5:
25
26. Comparison Conditional tips
Most of conditional jumps are Not Equal Condition
JZ ( A = 0 ) JNZ
CJNE A, Rx, rel
CJNE A, #X, rel
CJNE Rn, #X, rel
DJNZ Rn, rel
27. Example 1
Write program to fill the memory area
address 30h to 4Fh with counting number
start from 1H
27
28. Example 1: Result needed
Write program to fill the memory area
address 30h to 4Fh with counting number
start from 1H
28
29. Example 1: Solution
Write program to
fill the memory
area address 30h
to 4Fh with
counting number
start from 1H
29
30. CJNE (Homework)
Write program to fill the memory area address 30h to 6Fh
with Decimal (BCD) counting number start from 0H
The code must less than 15 line of assembly code
30
31. DJNZ Rn, rel
Process: Decrease Rn by one, then
Condition: Jump if Rn not equal to zero
Jump to specific destination
Short Jump
3 Machine cycles
Sample
DJNZ R5, Loop6
Decrease R5 then check, If R5 ≠ 0, Jump to label
Loop6:
31
32. DJNZ Rx, rel
Process: Decrease Rx by one, then
Condition: Jump if Rx not equal to zero
Jump to specific destination
Short Jump
4 Machine cycles
Sample
DJNZ R5, Loop6
Decrease R5 then check, If R5 ≠ 0, Jump to label
Loop6:
32
33. DJNZ (Sample)
; DJNZ is very convenion for
; specified number of turn for
some process.
ORG 0H
MOV R5,#10D
Loop:
; Process here
DJNZ R5, Loop
END
33
Start
R5 =10D
Process
End
Loop:
DJNZ R5, Loop