3. Workshop 1
Write program to processing the mathematic below:
128-bits Additional Program
First number store in 40h (MSB) to 4Fh (LSB)
Second number store in 50h (MSB) to 5Fh (LSB)
Write result in Carry flag and 60h (MSB) to 6Fh (LSB)
Program limited at 30 Bytes
3
12. Workshop 4
Write program to suppress the byte which is less
than 7FH in every byte the memory area
address 30h to 4Fh
Program limited at 40 Bytes
12
18. After this page are using for production
only, please ignore them.
END of SLIDE18
19. 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
19
20. 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
20
24. 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
24
25. AJMP adr11
Jump to any specific location
Long distance. (211 = 2kByte long)
No condition.
Sample
AJMP Loop3
Jump to label name is Loop3
25
26. 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
26
27. 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”
27
28. 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
28
29. 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).
29
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
30. Bit
30
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
31. JB bit, rel
Condition: Jump if addressed bit is set
Jump to specific destination
Short Jump
4 Machine cycles
Sample
JB 00h, EasyTask
If bit address 00h is set, Jump to label EasyTask:
JB P0.4, PressedS4
If bit P0.4 = set. Jump to label PressedS4
31
32. JNB bit, rel
Condition: Jump if addressed bit is clear
Jump to specific destination
Short Jump
4 Machine cycles
Sample
JNB 00h, EasyTask
If bit address 00h is clear, Jump to label EasyTask:
32
33. 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
33
34. 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:
34
35. 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:
35
36. 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:
36
37. 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:
37
38. 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:
38
39. 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, #E0h, Loop5
If register which is addressed by R0 ≠ #E0h, Jump to
label Loop5:
39
40. CJNE (Homework)
Write program to fill the memory area address 30h to 6Fh
with Decimal (BCD) counting number start from 1H
The code must less than 15 line of assembly code
40
41. CJNE (Sample)
Write program to fill the memory area
address 30h to 4Fh with counting number
start from 1H
41
42. CJNE (Sample)
Write program to
fill the memory
area address 30h
to 4Fh with
counting number
start from 1H
42
43. 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:
43
44. 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:
44
45. 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
45
Start
R5 =10D
Process
End
Loop:
DJNZ R5, Loop