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