Jump, Loop and Call Instructions: University of Engineering and Technology Taxila

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 93

University Of Engineering And Technology Taxila

Chapter 3
JUMP, LOOP and CALL
Instructions

REF::NATIONAL TAIWANOCEAN UNIVERSITY國立台灣海洋大學


Outlines
 Loop instructions
 Conditional jump instructions
 Conditions determining conditional jump
 Unconditional long & short jumps
 Calculate target addresses for jumps
 Subroutines
 Using stack in subroutines
 Crystal frequency vs. machine cycle
 Code programs to generate time delay
Looping
Loop inside a Loop (Nested Loop)
8051 Conditional Jump Instructions
Conditional Jump Example
Conditional Jump Example
Unconditional Jump Instructions
 All conditional jumps are short jumps
– Target address within -128 to +127 of PC
 LJMP (long jump): 3-byte instruction
– 2-byte target address: 0000 to FFFFH
– Original 8051 has only 4KB on-chip ROM
 SJMP (short jump): 2-byte instruction
– 1-byte relative address: -128 to +127
Call Instructions
 LCALL (long call): 3-byte instruction
– 2-byte address
– Target address within 64K-byte range
 ACALL (absolute call): 2-byte instruction
– 11-bit address
– Target address within 2K-byte range
LCALL
CALL Instruction & Role of Stack
CALL Instruction & Role of Stack
Calling Subroutines
Calling Subroutines
ACALL (absolute call)
Programming Efficiently
Time Delay Generation & Calculation
 1 instruction = n  machine cycle
 1 machine cycle = 12 clock cycles
Delay Calculation
Delay Calculation Example
Delay Calculation Example
Increasing Delay Using NOP
Large Delay Using Nested Loop
University Of Engineering And Technology Taxila

Chapter 6
Arithmetic Instructions and
Programs

REF::NATIONAL TAIWANOCEAN UNIVERSITY國立台灣海洋大學


Outlines
 Range of numbers in 8051 unsigned data
 Addition & subtraction instructions for unsigned
data
 BCD system of data representation
 Packed and unpacked BCD data
 Addition & subtraction on BCD data
 Range of numbers in 8051 signed data
 Signed data arithmetic instructions
 Carry & overflow problems & corrections
Addition of Unsigned Numbers
 ADD A, source ; A = A + source
ADDC & Addition of 16-bit Numbers
1
3C E7
+ 3B 8D
78 74
BCD Number System
 Unpacked BCD: 1 byte
 Packed BCD: 4 bits
Adding BCD Numbers & DA Instruction
MOV A,#17H
ADD A,#28H

MOV A,#47H ;A=47H first BCD operand


MOV B,#25H ;B=25 second BCD operand
ADD A,B ;hex (binary) addition (A=6CH)
DA A ;adjust for BCD addition (A=72H)

HEX BCD
29 0010 1001
+ 18 + 0001 1000
41 0100 0001 AC=1
+ 6 + 0110
47 0100 0111
Subtraction of Unsigned Numbers
 SUBB A, source ; A = A – source – CY
 SUBB when CY = 0
– Take 2’s complement of subtraend (source)
– Add it to minuend
– Invert carry
Example (Positive Result)
Example (Negative Result)
SUBB When CY = 1
 For multibyte numbers
Multiplication of Unsigned Numbers
 MUL AB ; A  B, place 16-bit result in B and A
MOV A,#25H ;load 25H to reg. A
MOV B,#65H ;load 65H in reg. B
MUL AB ;25H * 65H = E99 where
;B = 0EH and A = 99H

Table 6-1:Unsigned Multiplication Summary (MUL AB)

Multiplication Operand 1 Operand 2 Result

byte  byte A B A=low byte,


B=high byte
Division of Unsigned Numbers
 DIV AB ; divide A by B
MOV A,#95H ;load 95 into A
MOV B,#10H ;load 10 into B
DIV AB ;now A = 09 (quotient) and
;B = 05 (remainder)

Table 6-2:Unsigned Division Summary (DIV AB)


Division Numerator Denominator Quotient Remainder
byte / byte A B A B
Example ( 1 of 2 )
Example ( 2 of 2 )
Signed 8-bit Operands
 Covert to 2’s complement
– Write magnitude of number in 8-bit binary (no
sign)
– Invert each bit
– Add 1 to it
Example
Example
Example
Byte-sized Signed Numbers Ranges
Decimal Binary Hex
-128 1000 0000 80
-127 1000 0001 81
-126 1000 0010 82
…. ………… ..
-2 1111 1110 FE
-1 1111 1111 FF
0 0000 0000 00
+1 0000 0001 01
+2 0000 0010 02
… ………… ...
+127 0111 1111 7F
Overflow in Signed Number Operations
When Is the OV Flag Set?
 Either: there is a carry from D6 to D7 but no
carry out of D7 (CY = 0)
 Or: there is a carry from D7 out (CY = 1)
but no carry from D6 to D7
Example
Example
Example
University Of Engineering And Technology Taxila

Chapter 7
LOGIC INSTRUCTIONS
AND PROGRAMS

REF::NATIONAL TAIWANOCEAN UNIVERSITY國立台灣海洋大學


Outlines
 Define the truth tables for logic functions AND, OR,
XOR
 Code 8051 Assembly language logic function instructions
 Use 8051 logic instructions for bit manipulation
 Use compare and jump instructions for program control
 Code 8051 rotate and swap instructions
 Code 8051 programs for ASCII and BCD data conversion
AND
ANL destination, source ;dest = dest AND source
X Y X AND Y
0 0 0
0 1 0
1 0 0
1 1 1
OR
ORL destination, source ;dest = dest OR source
X Y X AND Y
0 0 0
0 1 1
1 0 1
1 1 1
XOR
XRL destination, source ;dest = dest XOR source
X Y X AND Y
0 0 0
0 1 1
1 0 1
1 1 0

XRL A,#04H ;EX-OR A with 0000 0100


XOR
XOR
CPL (complement accumulator)
MOVA,#55H
CPL A ;now A=AAH
;0101 0101(55H) becomes
;1010 1010 (AAH)
Compare instruction
CJNE destination, source ,relative address
Table 7-1:Carry Flag Setting For CJNE Instruction

Compare Carry Flag


destination > source CY = 0
destination < source CY = 1

CJNE R5,#80,NOT_EQUAL ;check R5 for 80


…. ;R5=80
NOT_EQUAL: JNC NEXT ;jump if R5>80
…. ;R5<80
NEXT: ….
Rotating the bits of A right and left
RR A ;rotate right A

MOV A,#36H ;A=0011 0110


RR A ;A=0001 1011
RR A ;A=1000 1101
RR A ;A=1100 0110
RR A ;A=0110 0011

RL A ;rotate left A
MOV A,#72H ;A=0111 0010
RL A ;A=1110 0100
RL A ;A=1100 1001
Rotating through the carry
RRC A ;rotate right through carry

CLR C ;make CY=0


MOV A,#26H ;A=0010 0110
RRC A ;A=0001 0011 CY=0
RRC A ;A=0000 1001 CY=1
RRC A ;A=1000 0100 CY=1

RLC A ;rotate left through carry


SETB C ;make CY=1
MOV A,#15H ;A=0001 0101
RLC A ;A=0010 1010 CY=0
RLC A ;A=0101 0110 CY=0
RLC A ;A=1010 1100 CY=0
RLC A ;A=0101 1000 CY=1
SWAP A
RRC A ;first bit to carry
MOV P1.3,C ;output carry as data bit
RRC A ;second bit to carry
MOV P1.3,C ;output carry as data bit
RRC A ;third bit to carry
MOV P1.3,C ;output carry as data bit
…..
BCD AND ASCII APPLICATION
PROGRAM
Packed BCD to ASCII conversion

Packed BCD Unpacked BCD ASCII


29H 02H & 09H 32H & 39H
0010 1001 0000 0010 & 0011 0010 &
0000 1001 0011 1001
ASCII to packed BCD conversion
Key ASCII Unpacked BCD Packed BCD
4 34 00000100
7 37 00000111 01000111 or 47H

MOV A,#’4’ ;A=34H, hex for ASCII char 4


MOV R1,#’7’ ;R1=37H, hex for ASCII char 7
ANL A,#0FH ;mask upper nibble (A=04)
ANL R1,#0FH ;mask upper nibble (R1=07)
SWAP A ;A=40H
ORL A,R1 ;A=47H, packed BCD
University Of Engineering And Technology Taxila

Chapter 8
SINGLE-BIT INSTRUCTIONS
AND PROGRAMMING

REF::NATIONAL TAIWANOCEAN UNIVERSITY國立台灣海洋大學


Outlines
 List the 8051 Assembly language instructions for bit
manipulation
 Code 8051 instructions for bit manipulation of ports
 Explain which 8051 registers are bit-addressable
 Describe which portions of the 8051 RAM are bit-addressable
 Discuss bit manipulation of the carry flag
 Describe the carry flag bit-related instructions of the 8051
Single-bit instructions
I/O ports and bit-addressability
The 8051 has four I/O ports, each of which is 8 bits
Checking an input bit
JNB (jump if no bit) ; JB (jump if bit = 1)
Registers and bit-addressability
Figure 8-2. Bits of the PSW Register
Bit-addressable RAM
Single-bit operations with CY
READING INPUT PINS VS. PORT LATCH
In Reading a port:
1.Read the status of the input pin
2.Read the internal latch of the output port

Instructions for reading input port


Reading latch for output port

You might also like