I'll try....
Line by line..
Delay: ( this is a label.. This constitutes the beginning of the routine... You can "Call" a label or you can "jmp" a label.. If you "Call" a routine you MUST return "ret"..
If you "jmp" a label you MUST jmp back... There are a few types of "Call" and "jmp" commands.. Long.. lcall and ljmp there is absolute... acall and ajmp... You can also have a short jmp sjmp.... all these depend on how far you are calling and jumping..
mov R1.#010h... Move direct command.. place 0x10h ( 16 decimal ) into Resister R1..
mov R2,#010h... Move direct command.. place 0x10h ( 16 decimal ) into Resister R2..
dznz R2,Dy2... Decrease R2 by one and only jump to labe1 Dy2 if the register R2 is not zero
dznz R1,Dy1... Decrease R1 by one and only jump to labe1 Dy1 if the register R1 is not zero
If both registers are zero the last command ret returns to the calling routine..
Does that make it any clearer...
Line by line..
Delay: ( this is a label.. This constitutes the beginning of the routine... You can "Call" a label or you can "jmp" a label.. If you "Call" a routine you MUST return "ret"..
If you "jmp" a label you MUST jmp back... There are a few types of "Call" and "jmp" commands.. Long.. lcall and ljmp there is absolute... acall and ajmp... You can also have a short jmp sjmp.... all these depend on how far you are calling and jumping..
mov R1.#010h... Move direct command.. place 0x10h ( 16 decimal ) into Resister R1..
mov R2,#010h... Move direct command.. place 0x10h ( 16 decimal ) into Resister R2..
dznz R2,Dy2... Decrease R2 by one and only jump to labe1 Dy2 if the register R2 is not zero
dznz R1,Dy1... Decrease R1 by one and only jump to labe1 Dy1 if the register R1 is not zero
If both registers are zero the last command ret returns to the calling routine..
Does that make it any clearer...