Data Transfer with Loops

CSC-167 · Semester II · Microprocessor

Data Transfer with Loops

Counter loop with DCR / JNZ — watch B count down.

Program memory
0x2000MVI B, 05H ; counter = 5
0x2002LOOP: MOV A, B ; load counter into A
0x2003OUT 01H ; output value to port 1
0x2005DCR B ; decrement counter
0x2006JNZ LOOP ; B=4 -> jump to 0x2002
0x2002LOOP: MOV A, B ; load counter into A
0x2003OUT 01H ; output value to port 1
0x2005DCR B ; decrement counter
0x2006JNZ LOOP ; B=3 -> jump to 0x2002
0x2002LOOP: MOV A, B ; load counter into A
0x2003OUT 01H ; output value to port 1
0x2005DCR B ; decrement counter
0x2006JNZ LOOP ; B=2 -> jump to 0x2002
0x2002LOOP: MOV A, B ; load counter into A
0x2003OUT 01H ; output value to port 1
0x2005DCR B ; decrement counter
0x2006JNZ LOOP ; B=1 -> jump to 0x2002
0x2002LOOP: MOV A, B ; load counter into A
0x2003OUT 01H ; output value to port 1
0x2005DCR B ; decrement counter
0x2006JNZ LOOP ; B=0 -> fall through
0x2008HLT ; stop

Registers

A

00

B

05

C

00

; port 1 output sequence

OUT 01H → 05 04 03 02 01 (when B > 0)

step 1/22 · counter B = 05