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

Yüklə 1,97 Mb.
 tarix 07.11.2018 ölçüsü 1,97 Mb. #78723

• ## 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

• We use multiple registers to hold the count

• ## 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

## 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

• 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

• 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 target address for LCALL can be anywhere within the 64K byte address
• The target address of ACALL must be within a 2K-byte range

• ## 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:

• Crystal frequency
• 8051 design
• The original machine cycle duration was set at 12 clocks

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ə