Microcontroller Based Design
Muhammad Usman Rafique
Week 4  Assembly Language
Continued
M. Usman Rafique
Air University, Spring 2014
Course Outline
Week 1 2 3 4 5 6 7 8, 9 10 11 12 13 14 15, 16 17 Topic Introduction 8051Microcontroller  Architecture and Hardware       Assembly Language Assembly Language Contd. Timers and Counters Serial Port Interrupt Design and Interface Examples
Midterm Exam PIC 18 F Microcontroller  Introduction, Architecture, I/O Pins     Revision Programming in C Timers / Counters Using Internal ADC of PIC Peripherals of PIC 18F Microcontrollers
M. Usman Rafique
Air University, Spring 2014
Assembly Language
Addressing Modes Types of Instruction
1.
2.
3. 4. 5.
Arithmetic Logical Data Transfer Boolean Variables Program Branching
M. Usman Rafique
Air University, Spring 2014
Addressing Modes
M. Usman Rafique
Air University, Spring 2014
1. Immediate Addressing
Value to be stored in memory immediately follows the operation code in memory Or  The instruction itself dictates the value to be stored in memory  Example MOV A, #20h  Accumulator will be loaded with the value that immediately follows; in this case 20h
M. Usman Rafique
Air University, Spring 2014
1. Immediate Addressing
It is very fast Value to be loaded is included in instruction
The value to be loaded is fixed at compile time  its not very flexible
M. Usman Rafique
Air University, Spring 2014
1. Immediate Addressing
Examples
MOV A,#25H MOV R4,#62H MOV B,#40H
COUNT EQU 30 MOV A,#COUNT MOV P1,#34
8 M. Usman Rafique Air University, Spring 2014
Important
MOV A, #FH
; gives error
MOV A, #0FH ; OKAY
M. Usman Rafique
Air University, Spring 2014
2 . Direct Addressing
Value to be stored in memory is obtained by directly retrieving it from another memory location Example MOV A, 30H
The above instruction will read data from RAM address 30H and put that data in A.
10
M. Usman Rafique
Air University, Spring 2014
2 . Direct Addressing
Generally fast, although the value to be stored is not included in the instruction Its quickly accessible since value is stored in 8051s Internal RAM Much more flexible than immediate addressing. Value to be loaded is whatever it is found at that location  which may be variable Entire 128 bytes of RAM (0 to FF) can be accessed
11 M. Usman Rafique Air University, Spring 2014
2 . Direct Addressing
Examples
MOV R0, 40H
MOV 56H, A MOV R4, 7FH
12
M. Usman Rafique
Air University, Spring 2014
3. Indirect Addressing
Also called indirect register addressing
Very powerful and flexible addressing
Example MOV A, @R0
This instruction analyzes the value of R0. A will be loaded with value from RAM whose address is found in R0 For example if R0 holds value 40H and RAM address 40h holds value of 67H. Then A will have value of 67H
13 M. Usman Rafique Air University, Spring 2014
3. Indirect Addressing
Only R0 and R1 can be used for this purpose
MOV A,@R0 MOV @R1, B Note: @ sign is compulsory in order to use Indirect addressing
14
M. Usman Rafique
Air University, Spring 2014
3. Indirect Addressing
This mode makes data access dynamic instead of static (as in case of direct addressing) Only R0 and R1 can be used
Since these registers are 8 bit, use is restricted to internal RAM only
15
M. Usman Rafique
Air University, Spring 2014
4. Register Addressing
In register addressing mode, we directly use the value stored in register 8051 has 8 working registers (of the currently active register bank) R0 to R7
Examples
MOV A, R7 MOV A, R5 Contents of R7 and R5 will be moved in above instructions
16 M. Usman Rafique Air University, Spring 2014
4. Register Addressing
Easy to use register name instead of address
Source and destination registers should match in size
Move between A and registers is allowed MOV A, R4 ; OKAY Move between registers is not allowed MOV R7, R4 ; gives error
17
M. Usman Rafique
Air University, Spring 2014
5. Relative Addressing mode
Used with certain jump instructions
8 bit signed offset is used, range for jumping is -128 to 127 location SJMP [label]
18
M. Usman Rafique
Air University, Spring 2014
6. Absolute Addressing
Used only with ACALL and AJMP instruction It allows branching within 2K limit (11 bit)
19
M. Usman Rafique
Air University, Spring 2014
7. Long Addressing
Used only with LCALL and LJMP instruction Allows branching within 64K limit (16 bit)
20
M. Usman Rafique
Air University, Spring 2014
8. Index Addressing
 
Used with JMP and MOVC instruction Use base register (either PC or DPTR) and an offset (the accumulator) in forming the effective address MOVC A, @A + DPTR JMP @A + DPTR It is used for look up table
 
Previously we studied how its stored Well cover its usage later on
M. Usman Rafique Air University, Spring 2014
21
Instruction Types
22
M. Usman Rafique
Air University, Spring 2014
Types of Instructions
1.
2.
3. 4.
5.
Arithmetic Logical Data Transfer Boolean Variable Manipulation Program Branching
23
M. Usman Rafique
Air University, Spring 2014
MOV Summary
MOV [Destination],[Source]
Examples
MOV A,#55H ; A will be loaded with 55H
MOV R2, A ; Load value of A in R2
24
M. Usman Rafique
Air University, Spring 2014
1. Arithmetic Instructions
Addition Subtraction Multiplication Division Increment Decrement
25
M. Usman Rafique
Air University, Spring 2014
1. Arithmetic Instructions - Addition
ADD  Addition
Add A, source Add A, #data
; Add source to A ; Add data to A
Destination operand is always register A
Example
  
26
mov a,#5 mov b,#10 Add a,b
; Set a = 5 ; Set b = 10 ; what will be contents of a?
M. Usman Rafique Air University, Spring 2014
1. Arithmetic Instructions - Addition
ADDC Addition with carry  Used in case of adding 16 bit numbers
High byte and Low Byte are added separately using 2 instructions If there is a Carry out from addition of low bytes, it has to be added in sum of high bytes
27
M. Usman Rafique
Air University, Spring 2014
1. Arithmetic Instructions - Addition
ADDC Addition with carry  Example Write a program to add two 16 bit numbers 2CE7H and 558DH
28
M. Usman Rafique
Air University, Spring 2014
1. Arithmetic Instructions - Addition
ADDC Write a program to add two 16 bit numbers 2CE7H and 558DH CLR C MOV A, #0E7H ADD A, #8DH MOV R0,A MOV A, #2CH ADDC A,#55H MOV R1, A
29
;clear carry flag. CY = 0 ; Load lower byte of 1st number ; Add lower byte of 2nd number ; now A = 74H and CY = 1; ; Move lower byte of sum in R0 ; Load higher byte of 1st number ; Add with carry ; 2C + 55 + 1 (carry) = 82 H ; Move higher byte of sum in R1
M. Usman Rafique Air University, Spring 2014
1. Arithmetic Instructions - Subtraction
SUBB SUBtract with Borrow  Subtraction with borrow  Uses carry flag to read if there is any borrow or not  Format SUBB A, Source ; A = A  source  CY
Before the subtraction, Carry flag means Borrow
 If carry = 0, there is no carry If carry = 1, there is a borrow
Note: There is no subtraction instruction without borrow in 8051 (many microprocessors have it)
30 M. Usman Rafique Air University, Spring 2014
1. Arithmetic Instructions - Subtraction
SUBB SUBtract with Borrow
After the operation
Carry = 0 if result is POSITIVE Carry = 1 if result is NEGATIVE
Negative result is stored in format of 2s complement
31
M. Usman Rafique
Air University, Spring 2014
1. Arithmetic Instructions - Subtraction
SUBB SUBtract with Borrow  Example clr C mov a,#25h mov r1,#10h subb a,r1
What will be value of A?
32 M. Usman Rafique Air University, Spring 2014
1. Arithmetic Instructions - Subtraction
SUBB SUBtract with Borrow  Example clr C mov a,#25h mov r1,#10h subb a,r1
; set carry flag = 0 ; A = 25h ; r1 = 10h ; a = a  r1 = 25  10 = 15
What will be value of A?
 15h Carry = 0
M. Usman Rafique Air University, Spring 2014
33
1. Arithmetic Instructions - Subtraction
SUBB SUBtract with Borrow  Example setb C mov a,#25h mov r1,#10h subb a,r1
What will be value of A?
34 M. Usman Rafique Air University, Spring 2014
1. Arithmetic Instructions - Subtraction
SUBB SUBtract with Borrow  Example setb C mov a,#25h mov r1,#10h subb a,r1
; set carry flag = 1 ; A = 25h ; r1 = 10h ; a = a  r1  1 = 25  10  1 = 14
What will be value of A?
 14h Carry = 0
M. Usman Rafique Air University, Spring 2014
35
1. Arithmetic Instructions - Subtraction
SUBB SUBtract with Borrow  Example clr C mov a,#10h mov r1,#20h subb a,r1
What will be value of A?
36 M. Usman Rafique Air University, Spring 2014
1. Arithmetic Instructions - Subtraction
SUBB SUBtract with Borrow  Example clr C mov a,#10h mov r1,#20h subb a,r1
; set carry flag = 0 ; A = 10h ; r1 = 20h ;a = F0h
What will be value of A?
  F0h = 1111 0000. Taking 2s complement (by inverting and adding 1) = 0000 1111 + 1 = 0001 0000 = 10h Carry = 1. Showing it is a negative number
M. Usman Rafique Air University, Spring 2014
37
1. Arithmetic Instructions - Multiplication
MUL  Multiplication Format MUL AB
Multiplies A and B Operands must be in A and B Result
 A has Low byte B has high byte
38
M. Usman Rafique
Air University, Spring 2014
1. Arithmetic Instructions - Multiplication
MUL  Multiplication Example mov a,#16 mov b,#4 mul ab
What will be value of A and B?
39
M. Usman Rafique
Air University, Spring 2014
1. Arithmetic Instructions - Multiplication
MUL  Multiplication Example mov a,#16 mov b,#4 mul ab What will be value of A and B?
A = 40h = 64 B=0
M. Usman Rafique Air University, Spring 2014
40
1. Arithmetic Instructions - Division
DIV  Division Format DIV AB
Divide A by B Operands must be in A and B Result
 A has Quotient B has Remainder
41
M. Usman Rafique
Air University, Spring 2014
1. Arithmetic Instructions - Division
DIV Example mov a,#16 mov b,#4 div ab What will be value of A and B?
42
M. Usman Rafique
Air University, Spring 2014
1. Arithmetic Instructions - Division
DIV Example mov a,#16 mov b,#4 div ab What will be value of A and B? 
A = 4h B=0
M. Usman Rafique Air University, Spring 2014
43
1. Arithmetic Instructions - Increment
INC  Increment Format INC source 
Adds 1 to source Example
  mov r1,#55h inc r1 R1 = 56h
M. Usman Rafique Air University, Spring 2014
44
1. Arithmetic Instructions - Decrement
DEC  Decrement Format 
DEC source Subtracts 1 from source Example
  mov r1,#55h dec r1 R1 = 54h
M. Usman Rafique Air University, Spring 2014
45
1. Arithmetic Instructions  BCD Numbers
BCD Numbers Binary Coded Decimal  Unpacked BCD  
Lower 4 Bits represent decimal number (0 to 9) Remaining bits are zero Example: 9 will be represented as 0000 1001 1 byte can represent 1 number only Each 4 bits represent a decimal number (0 to 9) 1 byte can store more 2 digits Example: 79 will be represented as 0111 1001 Utilizes space more efficiently than unpacked BCD
M. Usman Rafique Air University, Spring 2014
Packed BCD
   
46
1. Arithmetic Instructions  BCD Numbers
BCD Numbers Binary Coded Decimal  Addition of BCD numbers  Consider addition of following BCD numbers mov A,#59h add A,#1h Result is 5Ah Is it a BCD? NO The answer should have been 60 Solution?
47 M. Usman Rafique Air University, Spring 2014
1. Arithmetic Instructions  BCD Numbers
DAA Decimal Adjust mov A,#59h add A,#1h DAA A Result is 60h Is it a BCD? Yes Auxiliary Carry (from 4th to 5th bit) is used to check this condition
48 M. Usman Rafique Air University, Spring 2014
1. Arithmetic Instructions
Important
Play with arithmetic instructions and see the results
Good to revise Binary Arithmetic first
49
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions
AND OR Exclusive OR Clear Complement Rotate
 Left Right
SWAP
50 M. Usman Rafique Air University, Spring 2014
2. Logical Instructions - AND
AND  Format
ANL destination, source
Result destination = destination AND source
The destination is normally Accumulator
51
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - AND
AND  Example mov a,#74h anl a,#0Fh
What will be value of A?
52
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - AND
AND  Example mov a,#74h anl a,#0Fh
What will be value of A? A = 04h
53
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - OR
OR  Format
ORL destination, source
Result destination = destination OR source
The destination is normally Accumulator
54
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - OR
OR  Example mov a,#74h orl a,#0Fh
What will be value of A?
55
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - OR
OR  Example mov a,#74h orl a,#0Fh
What will be value of A? A = 7Fh
56
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - XOR
XOR (Exclusive OR)  Format XRL destination, source  Result destination = destination XOR source
The destination is normally Accumulator
57
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - XOR
XOR  Example mov a,#74h xrl a,#0Fh
What will be value of A?
58
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - XOR
XOR  Example mov a,#74h xrl a,#0Fh
What will be value of A? A = 7bh
59
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - CLEAR
CLEAR  Format
CLR operand
Result operand = 0
The operand may be Accumulator, carry flag (C), any IO Port Bit etc
60
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - CLEAR
CLEAR  Example mov a,#74h clr a What will be value of A? A=0
61
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - COMPLEMENT
CPL  Format
CPL operand
Result All bits of operand inverted
The operand may be Accumulator, carry flag (C), any IO Port Bit etc
62
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - COMPLEMENT
CPL  Example mov a,#74h cpl a
What will be value of A?
63
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions - COMPLEMENT
CPL  Example mov a,#74h cpl a
What will be value of A? A = 8Bh
64
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions  Rotate Left
RL (Rotate Left)  Format
RL A
Result RL: All bits of A shifted to left
LSB is replaced by MSB
MSB LSB
65
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions  Rotate Left
RLC (Rotate Left through Carry)  Format RLC A  Result RL: All bits of A shifted to left
Carry bit is included in rotation
CY
MSB LSB
66
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions  Rotate Right
RR (Rotate Right)  Format
RR A
Result All bits of A shifted to right
MSB is replaced by LSB
MSB LSB
67
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions  Rotate Right
RRC (Rotate Right through Carry)  Format RRC A  Result RL: All bits of A shifted to left
Carry flag is included in rotation
MSB LSB
CY
68
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions  Rotate
Use of Rotate  Used in bit manipulation 
Rotate Left used as Multiplication Rotate Right used as Division Less memory required Much faster
69
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions  SWAP
SWAP  Format
SWAP A
Result Swaps lower and higher nibbles
Works only with accumulator
70
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions  SWAP
SWAP  Example mov a,#74h swap a What will be value of A?
71
M. Usman Rafique
Air University, Spring 2014
2. Logical Instructions  SWAP
SWAP  Example mov a,#74h swap a What will be value of A? A = 47h
72
M. Usman Rafique
Air University, Spring 2014
3. Data Transfer
MOV
Addressing Modes
(Already Covered)
MOVC XCH PUSH POP
73
M. Usman Rafique
Air University, Spring 2014
3. Data Transfer  MOVC
MOVC  Used to read data (look-up tables etc) stored in ROM
How to save data in ROM?
Dbit, DB, DW etc
Format MOVC destination, source Destination is mostly A Source is in ROM
74 M. Usman Rafique Air University, Spring 2014
3. Data Transfer  MOVC
MOVC  Example Write a program which reads a number from port1 and sends its square to p2 continuously
75
M. Usman Rafique
Air University, Spring 2014
3. Data Transfer  MOVC
MOVC Write a program which reads a number from port1 and sends its square to p2 continuously ORG 00h mov dptr,#300h Label: mov a,p1 movc a, @a + dptr mov p2,a jmp Label
; Index Addressing Mode
ORG 300h sq: db 0,1,4,9,16,25,36,49,64,81,100 end
76 M. Usman Rafique Air University, Spring 2014
3. Data Transfer  XCH
XCH  Exchanges the contents of operands  Format XCH A, source
Example Mov a,#15h Mov r1,#0FEh XCH a,r1
; A = 15h ; R1 = FEh ; swaps data of A and R1 ; A = FEh and R1 = 15h
M. Usman Rafique Air University, Spring 2014
77
3. Data Transfer  PUSH
PUSH  Used to Push or store data onto stack 
Stack Pointer (SP) stores the address of current stack location. At power up, SP = 07
First number will be stored at 08 and so on
When data is stored (using PUSH) command, SP is incremented automatically
78 M. Usman Rafique Air University, Spring 2014
3. Data Transfer  PUSH
PUSH
RAM locations 08h to 1Fh can be used for stack RAM locations 20h to 2Fh are bit-addressable locations More space if SP is set to point to 30h to 7Fh i.e. general purpose RAM
79 M. Usman Rafique Air University, Spring 2014
3. Data Transfer  PUSH
PUSH  Format
PUSH expression expression must be
Number of a register
1 for R1 2 for R2 and so on
Address Symbol referring to an address
Note: Accumulator cannot be used with PUSH statement
80 M. Usman Rafique Air University, Spring 2014
3. Data Transfer  PUSH
PUSH  Format
PUSH expression
Example
Push 3 Push 1 Push 55h
; Push contents of R3 ; Push contents of R1 ; Push value stored at memory location 55h
81
M. Usman Rafique
Air University, Spring 2014
3. Data Transfer  POP
POP  Format
POP expression
expression must be
Number of a register
1 for R1 2 for R2 and so on
Address Symbol referring to an address
Retrieves the value the last value stored by PUSH Automatically decrements the SP
82 M. Usman Rafique Air University, Spring 2014
3. Data Transfer  POP
POP  Example
mov r7,#85h mov 80h,#5h
PUSH 7 PUSH 80h POP 1 POP 75h
mov a,75h
What is this program doing?
83 M. Usman Rafique Air University, Spring 2014
3. Data Transfer  POP
POP  Example mov r7,#85h mov 80h,#5h PUSH 7 PUSH 80h POP 1 POP 75h ; R7 = 85h ; Store 5h at memory location 80h ; Store R7 using PUSH ; Store contents of location 80h ; Retrieve last pushed value in R1. R1 = 5h ; Retrieve the current value in stack and save ; it in memory location 75h ; A = contents of location 75h. A = 85h
M. Usman Rafique Air University, Spring 2014
mov a,75h
84
4. Boolean Variable Manipulation
CLR
CLR bit Clears the bit i.e. makes the bit = 0 Examples
 
CLR C CLR P0^3
SETB
  
SETB bit Sets the bit i.e. makes the bit = 1 Examples
 
SETB C SETB P2^0
M. Usman Rafique Air University, Spring 2014
85
4. Boolean Variable Manipulation
ANL
  
ANL bit1,bit2 Takes logical AND of both bits Example
anl c,P1^7
ORL
  
ORL bit1,bit2 Takes logical OR of both bits Example
orl c,P3^5
CPL
  
CPL bit Inverts the value of bit Example
CPL P0^0
M. Usman Rafique Air University, Spring 2014
86
5. Program Branching
 
CALL and RET Unconditional
AJMP SJMP LJMP
CJNE DJNZ JZ JNZ JB JNB JC JNC
M. Usman Rafique Air University, Spring 2014
Conditional
       
87
5. Program Branching  CALL and RET
CALL and RET  Used to Call Subroutines (SR)
Format CALL name ; Calling Subroutine RET ; Return from SR
If SR is Interrupt Subroutine (ISR), return is: RETI
88
; Return from interrupt SR
M. Usman Rafique Air University, Spring 2014
5. Program Branching  CALL and RET
CALL and RET  Example ORG 00h Call fn1 Call fn2 Jmp $ fn1: . . RET   RET
; Calling Subroutine fn1 ; Calling Subroutine fn2 ; Infinite Loop
fn2:
What if infinite loop is omitted?
89
M. Usman Rafique
Air University, Spring 2014
5. Program Branching  CALL and RET
CALL and RET Important
When SR is being executed, PSW can be changed
 Carry Flag Auxiliary Carry Overflow etc
All required registers are stored before calling SR and retrieved after the SR has finished
  
90
PSW A B R0  R7
M. Usman Rafique Air University, Spring 2014
5. Program Branching  CALL and RET
CALL and RET Important  Saving Required registers
1.
2.
PUSH them in stack before calling SR POP them from stack after returning from SR
91
M. Usman Rafique
Air University, Spring 2014
5. Program Branching  Unconditional Jumps
SJMP  Can jump 128 to 127 (8 bit signed) from current address SJMP REL; REL is 8 bit offset AJMP  Can jump to any address represented by 11 bits AJMP Addr11 LJMP  Can jump to any address represented by 16 bits AJMP Addr16 JMP  We can write JMP and assembler will convert it to appropriate jump
92 M. Usman Rafique Air University, Spring 2014
5. Program Branching  Unconditional Jumps
SJMP, AJMP, LJMP  Example Org 00h Main: mov a,#23h mov a,#25h mov a, #27h jmp main ; Automatically decides the appropriate ; Jmp end
93 M. Usman Rafique Air University, Spring 2014
5. Program Branching  Conditional Jumps
CJNE  Compare and Jump if NOT Equal CJNE A, expression, Label DJNZ  Decrement and Jump if NOT Zero DJNZ, register, Label JZ  Jump if Accumulator is Zero JZ Label JNZ  Jump is Accumulator is NOT Zero JNZ Label
94 M. Usman Rafique Air University, Spring 2014
5. Program Branching  Conditional Jumps
JB  Jump if Bit is set
JB bit, Label
JNB  Jump if Bit is Not set JNB bit, label JC  Jump if Carry is set JC Label
JNC  Jump if Carry NOT set
JNC Label
95 M. Usman Rafique Air University, Spring 2014
5. Program Branching  Conditional Jumps
CJNE  Compare and Jump if NOT Equal CJNE expression1, expression2, Label  expression1 may be
A Register (R0  R7) Number Address
expression2 may be
 
96
M. Usman Rafique
Air University, Spring 2014
5. Program Branching  Conditional Jumps
CJNE  Example
mov a,#01h main: INC a CJNE A, #09h, main
Jmp $
What is this program doing?
97 M. Usman Rafique Air University, Spring 2014
5. Program Branching  Conditional Jumps
DJNZ  Decrement and Jump if Not Zero DJNZ register, Label  Register may be any register of the active bank
R0 to R7
First it decrements the value of register and then checks if the value is zero or not
98
M. Usman Rafique
Air University, Spring 2014
5. Program Branching  Conditional Jumps
DJNZ  Example mov r7,#05h
main:
DJNZ r7, main
jmp $
What is this program doing?
99 M. Usman Rafique Air University, Spring 2014
5. Program Branching  Conditional Jumps
JZ
Jump if accumulator is Zero Format JZ expression
expression may be
 
Label 8 bit signed offset address
100
M. Usman Rafique
Air University, Spring 2014
5. Program Branching  Conditional Jumps
JZ
Example
mov a,#1h
main:
jmp $
DEC a JZ main
What is this program doing?
101 M. Usman Rafique Air University, Spring 2014
5. Program Branching  Conditional Jumps
JNZ  Jump if accumulator is Not Zero JNZ expression
Expression may be
Label 8 bit signed offset address
102
M. Usman Rafique
Air University, Spring 2014
5. Program Branching  Conditional Jumps
JNZ  Example mov a,#07h main: DEC a JNZ main
jmp $
What is this program doing?
103 M. Usman Rafique Air University, Spring 2014
5. Program Branching  Conditional Jumps
JB  Jump if Bit is set
JB bit, Label
Example
Mov a,#0Fh Label: DEC A mov p0, a JB P0^3, Label
What is this program doing?
104 M. Usman Rafique Air University, Spring 2014
5. Program Branching  Conditional Jumps
JNB  Jump if Bit is NOT set
JNB bit, Label
Example
Mov a,#01h Label: INC A mov P0,a JNB P0^3, Label
What is this program doing?
105 M. Usman Rafique Air University, Spring 2014
5. Program Branching  Conditional Jumps
JC  Jump if Carry is set
JC Label
JNC  Jump if Carry Not set JNC Label
106
M. Usman Rafique
Air University, Spring 2014
Acknowledgement
Material used with permission of
Dr. Javaid Iqbal
Head of Department, Mechatronics Engineering College of EME, NUST
I am extremely thankful to Dr. Javaid who has been a great teacher and still helps and supports me
107
M. Usman Rafique
Air University, Spring 2014