Repeating a sequence of instructions a certain number of times is called a loop



Yüklə 1,97 Mb.
tarix07.11.2018
ölçüsü1,97 Mb.
#78723



Repeating a sequence of instructions a certain number of times is called a loop

  • Repeating a sequence of instructions a certain number of times is called a loop

    • Loop action is performed by
    • DJNZ reg, Label
      • The register is decremented
        • If it is not zero, it jumps to the target address referred to by the label
      • Prior to the start of loop the register is loaded with the counter for the number of repetitions
        • Counter can be R0 – R7 or RAM location
        • A loop can be repeated a maximum of 256 times




If we want to repeat an action more times than 256, we use a loop inside a loop, which is called nested loop

  • If we want to repeat an action more times than 256, we use a loop inside a loop, which is called nested loop

    • We use multiple registers to hold the count




Jump only if a certain condition is met

  • Jump only if a certain condition is met

    • JZ (jump if A = 0)
      • The content of register A is checked. If it is zero, it jumps to the target address.




JNZ (jump if A ≠ 0)

    • JNZ (jump if A ≠ 0)
      • The content of register A is checked. If it is not zero, it jumps to the target address.


JNC label ;jump if no carry, CY=0

    • JNC label ;jump if no carry, CY=0
      • If CY = 0, the CPU starts to fetch and execute instruction from the address of the label
      • If CY = 1, it will not jump but will execute the next instruction below JNC
  • All conditional jumps are short jumps

    • The address of the target must within -128 to +127 bytes of the contents of PC




The unconditional jump is a jump in which control is transferred unconditionally to the target location

  • The unconditional jump is a jump in which control is transferred unconditionally to the target location



2-byte instruction

      • 2-byte instruction
        • First byte is the opcode
        • Second byte is the relative target address 00 to FFH
        • Forward +127 and backward -128 bytes from the current PC
  • To calculate the target address of a short jump (SJMP, JNC, JZ, DJNZ, etc.)

    • The second byte is added to the PC of the instruction immediately below the jump




Call instruction is used to call subroutine

  • Call instruction is used to call subroutine

    • Subroutines are often used to perform tasks that need to be performed frequently
      • This makes a program more structured inaddition to saving memory space
    • LCALL (long call)
      • 3-byte instruction
        • First byte is the opcode
        • Second and third bytes are used for address of target subroutine
        • Subroutine is located anywhere within 64K byte address space


ACALL (absolute call)

    • ACALL (absolute call)
    • 2-byte instruction
      • 11 bits are used for address within 2K-byte range
  • When a subroutine is called, control is transferred to that subroutine

    • The processor saves on the stack the the address of the instruction immediately below the CALL
    • It also begins to fetch instructions form the new location


After finishing execution of the subroutine

  • After finishing execution of the subroutine

    • The instruction RET transfers control back to the caller
    • Every subroutine needs RET as the last instruction
      • RET pops the address from the stack into the PC and resumes executing the instructions after the CALL










The only difference between ACALL and LCALL is

  • The only difference between ACALL and LCALL is

    • The target address for LCALL can be anywhere within the 64K byte address
    • The target address of ACALL must be within a 2K-byte range
  • The use of ACALL instead of LCALL can save a number of bytes of program ROM space





CPU executing an instruction takes a certain number of clock cycles

  • CPU executing an instruction takes a certain number of clock cycles

    • These are referred as to as machine cycles
  • The length of machine cycle depends on the frequency of the crystal oscillator connected to 8051

    • In original 8051, one machine cycle lasts 12 oscillator periods












Two factors can affect the accuracy of the delay:

  • Two factors can affect the accuracy of the delay:

    • Crystal frequency
    • 8051 design
      • The original machine cycle duration was set at 12 clocks
    • Advances in both IC technology and CPU design in recent years have made the 1-clock machine cycle a common feature












Yüklə 1,97 Mb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə