chapter 3 jump, loop and call instructions
DESCRIPTION
Chapter 3 JUMP, LOOP and CALL Instructions. 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 - PowerPoint PPT PresentationTRANSCRIPT
REF::NATIONAL TAIWANOCEAN UNIVERSITYREF::NATIONAL TAIWANOCEAN UNIVERSITY國立台灣海洋大學國立台灣海洋大學
University Of Engineering And Technology TaxilaUniversity Of Engineering And Technology Taxila
Chapter 3Chapter 3JUMP, LOOP and CALL JUMP, LOOP and CALL InstructionsInstructions
OutlinesOutlines Loop instructionsLoop instructions Conditional jump instructionsConditional jump instructions Conditions determining conditional jumpConditions determining conditional jump Unconditional long & short jumpsUnconditional long & short jumps Calculate target addresses for jumpsCalculate target addresses for jumps SubroutinesSubroutines Using stack in subroutinesUsing stack in subroutines Crystal frequency vs. machine cycleCrystal frequency vs. machine cycle Code programs to generate time delayCode programs to generate time delay
LoopingLooping
Loop inside a Loop (Nested Loop)Loop inside a Loop (Nested Loop)
8051 Conditional Jump Instructions8051 Conditional Jump Instructions
Conditional Jump ExampleConditional Jump Example
Conditional Jump ExampleConditional Jump Example
Unconditional Jump InstructionsUnconditional Jump Instructions All conditional jumps are short jumpsAll conditional jumps are short jumps
– Target address within -128 to +127 of PCTarget address within -128 to +127 of PC LJMPLJMP (long jump): 3-byte instruction (long jump): 3-byte instruction
– 2-byte target address: 0000 to FFFFH2-byte target address: 0000 to FFFFH– Original 8051 has only 4KB on-chip ROMOriginal 8051 has only 4KB on-chip ROM
SJMPSJMP (short jump): 2-byte instruction (short jump): 2-byte instruction– 1-byte relative address: -128 to +1271-byte relative address: -128 to +127
Call InstructionsCall Instructions LCALLLCALL (long call): 3-byte instruction (long call): 3-byte instruction
– 2-byte address2-byte address– Target address within 64K-byte rangeTarget address within 64K-byte range
ACALLACALL (absolute call): 2-byte instruction (absolute call): 2-byte instruction– 11-bit address11-bit address– Target address within 2K-byte rangeTarget address within 2K-byte range
LCALLLCALL
CALL Instruction & Role of StackCALL Instruction & Role of Stack
CALL Instruction & Role of StackCALL Instruction & Role of Stack
Calling SubroutinesCalling Subroutines
Calling SubroutinesCalling Subroutines
ACALL (absolute call)ACALL (absolute call)
Programming EfficientlyProgramming Efficiently
Time Delay Generation & CalculationTime Delay Generation & Calculation
1 instruction = 1 instruction = nn machine cycle machine cycle 1 machine cycle = 12 clock cycles1 machine cycle = 12 clock cycles
Delay CalculationDelay Calculation
Delay Calculation ExampleDelay Calculation Example
Delay Calculation ExampleDelay Calculation Example
Increasing Delay Using NOPIncreasing Delay Using NOP
Large Delay Using Nested LoopLarge Delay Using Nested Loop
REF::NATIONAL TAIWANOCEAN UNIVERSITYREF::NATIONAL TAIWANOCEAN UNIVERSITY國立台灣海洋大學國立台灣海洋大學
University Of Engineering And Technology TaxilaUniversity Of Engineering And Technology Taxila
Chapter 6Chapter 6Arithmetic Instructions and Arithmetic Instructions and ProgramsPrograms
OutlinesOutlines Range of numbers in 8051 unsigned dataRange of numbers in 8051 unsigned data Addition & subtraction instructions for unsigned Addition & subtraction instructions for unsigned
datadata BCD system of data representationBCD system of data representation Packed and unpacked BCD dataPacked and unpacked BCD data Addition & subtraction on BCD dataAddition & subtraction on BCD data Range of numbers in 8051 signed dataRange of numbers in 8051 signed data Signed data arithmetic instructionsSigned data arithmetic instructions Carry & overflow problems & correctionsCarry & overflow problems & corrections
Addition of Unsigned NumbersAddition of Unsigned Numbers ADDADD A, sourceA, source ; A = A + source; A = A + source
ADDC & Addition of 16-bit NumbersADDC & Addition of 16-bit Numbers 13C E73B 8D78 74
+
BCD Number SystemBCD Number System Unpacked BCD: 1 byteUnpacked BCD: 1 byte Packed BCD: 4 bitsPacked BCD: 4 bits
Adding BCD Numbers & DA InstructionAdding BCD Numbers & DA InstructionMOVMOV A,#17HA,#17HADDADD A,#28HA,#28H
MOVMOV A,#47HA,#47H ;A=47H first BCD operand;A=47H first BCD operand MOVMOVB,#25HB,#25H ;B=25 second BCD operand;B=25 second BCD operandADDADD A,BA,B ;hex (binary) addition (A=6CH);hex (binary) addition (A=6CH)DADA AA ;adjust for BCD addition (A=72H);adjust for BCD addition (A=72H)
HEXHEX BCDBCD2929 0010 10010010 1001
++ 1818 + + 0001 10000001 10004141 0100 00010100 0001 AC=1AC=1
++ 6 6 + + 0110 01104747 0100 01110100 0111
Subtraction of Unsigned NumbersSubtraction of Unsigned Numbers
SUBBSUBB A, sourceA, source ; A = A – source – C; A = A – source – CYY
SUBB when CY = 0SUBB when CY = 0– Take 2’s complement of subtraend (source)Take 2’s complement of subtraend (source)– Add it to minuendAdd it to minuend– Invert carryInvert carry
Example (Positive Result)Example (Positive Result)
Example (Negative Result)Example (Negative Result)
SUBB When CY = 1SUBB When CY = 1 For multibyte numbersFor multibyte numbers
Multiplication of Unsigned NumbersMultiplication of Unsigned Numbers MULMUL ABAB ; A ; A B, place 16-bit result in B and A B, place 16-bit result in B and A
MOVMOV A,#25HA,#25H ;load 25H to reg. A;load 25H to reg. AMOVMOV B,#65HB,#65H ;load 65H in reg. B;load 65H in reg. BMULMUL ABAB ;25H * 65H = E99 where;25H * 65H = E99 where
;B = 0EH and A = 99H;B = 0EH and A = 99H
Table 6-1:Unsigned Multiplication Summary (MUL AB)Table 6-1:Unsigned Multiplication Summary (MUL AB)
MultiplicationMultiplication Operand 1Operand 1 Operand 2Operand 2 ResultResult
byte byte bytebyte AA BB A=low byte,A=low byte,B=high byteB=high byte
Division of Unsigned NumbersDivision of Unsigned Numbers DIVDIV ABAB ; divide A by B; divide A by B
MOVMOV A,#95HA,#95H ;load 95 into A;load 95 into AMOVMOV B,#10HB,#10H ;load 10 into B;load 10 into BDIVDIV ABAB ;now A = 09 (quotient) and ;now A = 09 (quotient) and
;B = 05 (remainder);B = 05 (remainder)
Table 6-2:Unsigned Division Summary (DIV AB)Table 6-2:Unsigned Division Summary (DIV AB)
DivisionDivision NumeratorNumerator DenominatorDenominator QuotientQuotient RemainderRemainder
byte / bytebyte / byte AA BB AA BB
Example ( 1 of 2 )Example ( 1 of 2 )
Example ( 2 of 2 )Example ( 2 of 2 )
Signed 8-bit OperandsSigned 8-bit Operands Covert to 2’s complementCovert to 2’s complement
– Write magnitude of number in 8-bit binary (no Write magnitude of number in 8-bit binary (no sign)sign)
– Invert each bitInvert each bit– Add 1 to itAdd 1 to it
ExampleExample
ExampleExample
ExampleExample
Byte-sized Signed Numbers RangesByte-sized Signed Numbers RangesDecimalDecimal BinaryBinary HexHex-128-128 1000 00001000 0000 8080-127-127 1000 00011000 0001 8181-126-126 1000 00101000 0010 8282…….. …………………… ....-2-2 1111 11101111 1110 FEFE-1-1 1111 11111111 1111 FFFF 00 0000 00000000 0000 0000+1+1 0000 00010000 0001 0101+2+2 0000 00100000 0010 0202…… …………………… ......+127+127 0111 11110111 1111 7F7F
Overflow in Signed Number OperationsOverflow in Signed Number Operations
When Is the OV Flag Set?When Is the OV Flag Set? Either: there is a carry from D6 to D7 but Either: there is a carry from D6 to D7 but
no carry out of D7 (CY = 0)no carry out of D7 (CY = 0) Or: there is a carry from D7 out (CY = 1) Or: there is a carry from D7 out (CY = 1)
but no carry from D6 to D7but no carry from D6 to D7
ExampleExample
ExampleExample
ExampleExample
REF::NATIONAL TAIWANOCEAN UNIVERSITYREF::NATIONAL TAIWANOCEAN UNIVERSITY國立台灣海洋大學國立台灣海洋大學
University Of Engineering And Technology TaxilaUniversity Of Engineering And Technology Taxila
Chapter 7Chapter 7LOGIC INSTRUCTIONS LOGIC INSTRUCTIONS AND PROGRAMSAND PROGRAMS
OutlinesOutlines Define the truth tables for logic functions AND, OR, Define the truth tables for logic functions AND, OR,
XORXOR Code 8051 Assembly language logic function instructionsCode 8051 Assembly language logic function instructions Use 8051 logic instructions for bit manipulationUse 8051 logic instructions for bit manipulation Use compare and jump instructions for program controlUse compare and jump instructions for program control Code 8051 rotate and swap instructionsCode 8051 rotate and swap instructions Code 8051 programs for ASCII and BCD data conversionCode 8051 programs for ASCII and BCD data conversion
ANDAND
XX YY X AND YX AND Y
00 00 00
00 11 00
11 00 00
11 11 11
ANL destination, source ;dest = dest AND sourceANL destination, source ;dest = dest AND source
ORORORL destination, source ;dest = dest OR sourceORL destination, source ;dest = dest OR source
XX YY X AND YX AND Y
00 00 00
00 11 11
11 00 11
11 11 11
XORXORXRL destination, source ;dest = dest XOR sourceXRL destination, source ;dest = dest XOR source
XX YY X AND YX AND Y
00 00 00
00 11 11
11 00 11
11 11 00
XRL A,#04H ;EX-OR A with 0000 0100
XORXOR
XORXOR
CPL (complement accumulator)CPL (complement accumulator)MOVMOV A,#55HA,#55HCPLCPL AA ;now A=AAH;now A=AAH
;0101 0101(55H) becomes ;0101 0101(55H) becomes ;1010 1010 (AAH);1010 1010 (AAH)
Compare instructionCompare instructionCJNE destination, source ,relative addressCJNE destination, source ,relative address
Table 7-1:Carry Flag Setting For CJNE InstructionTable 7-1:Carry Flag Setting For CJNE Instruction
CompareCompare Carry FlagCarry Flagdestination > sourcedestination > source CY = 0CY = 0destination < sourcedestination < source CY = 1CY = 1
CJNE R5,#80,NOT_EQUAL ;check R5 for 80
….;R5=80NOT_EQUAL: JNC NEXT ;jump if R5>80
….;R5<80NEXT: ….
Rotating the bits of A right and leftRotating the bits of A right and leftRRRR AA ;rotate right A;rotate right A
MOV A,#36H ;A=0011 0110RR A ;A=0001 1011RR A ;A=1000 1101RR A ;A=1100 0110RR A ;A=0110 0011
RL A ;rotate left A
MOV A,#72H ;A=0111 0010RL A ;A=1110 0100RL A ;A=1100 1001
Rotating through the carryRotating through the carryRRCRRC A A ;rotate right through carry;rotate right through carry
CLR C ;make CY=0MOV A,#26H ;A=0010 0110RRC A ;A=0001 0011 CY=0RRC A ;A=0000 1001 CY=1RRC A ;A=1000 0100 CY=1
RLC A ;rotate left through carry
SETB C ;make CY=1MOV A,#15H ;A=0001 0101RLC A ;A=0010 1010 CY=0RLC A ;A=0101 0110 CY=0RLC A ;A=1010 1100 CY=0RLC A ;A=0101 1000 CY=1
SWAPSWAP AA
RRC A ;first bit to carryMOV P1.3,C ;output carry as data bitRRC A ;second bit to carryMOV P1.3,C ;output carry as data bitRRC A ;third bit to carryMOV P1.3,C ;output carry as data bit…..
BCD AND ASCII APPLICATION BCD AND ASCII APPLICATION PROGRAMPROGRAM
Packed BCD to ASCII conversionPacked BCD to ASCII conversion
Packed BCDPacked BCD Unpacked BCDUnpacked BCD ASCIIASCII29H29H 02H & 09H02H & 09H 32H & 39H32H & 39H0010 10010010 1001 0000 0010 &0000 0010 & 0011 0010 &0011 0010 &
0000 10010000 1001 0011 10010011 1001
ASCII to packed BCD conversionASCII to packed BCD conversion
Key ASCII Unpacked BCDKey ASCII Unpacked BCD Packed BCDPacked BCD44 34 00000100 34 00000100 77 37 00000111 01000111 or 47H 37 00000111 01000111 or 47H
MOV A,#’4’ ;A=34H, hex for ASCII char 4MOV R1,#’7’ ;R1=37H, hex for ASCII char 7ANL A,#0FH ;mask upper nibble (A=04)ANL R1,#0FH ;mask upper nibble (R1=07)SWAP A ;A=40HORL A,R1 ;A=47H, packed BCD
REF::NATIONAL TAIWANOCEAN UNIVERSITYREF::NATIONAL TAIWANOCEAN UNIVERSITY國立台灣海洋大學國立台灣海洋大學
University Of Engineering And Technology TaxilaUniversity Of Engineering And Technology Taxila
Chapter 8Chapter 8SINGLE-BIT INSTRUCTIONS SINGLE-BIT INSTRUCTIONS AND PROGRAMMINGAND PROGRAMMING
OutlinesOutlines List the 8051 Assembly language instructions for bit List the 8051 Assembly language instructions for bit
manipulationmanipulation Code 8051 instructions for bit manipulation of portsCode 8051 instructions for bit manipulation of ports Explain which 8051 registers are bit-addressableExplain which 8051 registers are bit-addressable Describe which portions of the 8051 RAM are bit-addressableDescribe which portions of the 8051 RAM are bit-addressable Discuss bit manipulation of the carry flagDiscuss bit manipulation of the carry flag Describe the carry flag bit-related instructions of the 8051Describe the carry flag bit-related instructions of the 8051
Single-bit instructionsSingle-bit instructions
I/O ports and bit-addressabilityI/O ports and bit-addressability
The 8051 has four I/O ports, each of which is 8 bits
Checking an input bitChecking an input bitJNB (jump if no bit) ; JB (jump if bit = 1)
Registers and bit-addressabilityRegisters and bit-addressability
Figure 8-2. Bits of the PSW Register
Bit-addressable RAMBit-addressable RAM
Single-bit operations with CYSingle-bit operations with CY
Instructions for reading input portInstructions for reading input port
READING INPUT PINS VS. PORT LATCHREADING INPUT PINS VS. PORT LATCH
In Reading a port:1.Read the status of the input pin2.Read the internal latch of the output port
Reading latch for output portReading latch for output port