What comes to your mind after watching the loop at the left? That's it the Head is Touching the Tail at some point.
In assembly a loop is a sequence of instructions that is repeated like the loop to the left.
The final instruction (Tail) jumps (touches) to the first instruction (Head).
The basic form of looping in Assembly is
For example if we want to read all input characters given by the user until he/she inputs
CMP AL,' '
Some other frequently used looping structures are-
In these kind of lop structures the instructions are repeated for known number of times. pseudocode -
FOR loop_count times DO
In assembly we use the instruction LOOP to implement for loop. The general form is-
Here header label is the name or label of the instruction block to be executed in the loop. The LOOP instruction uses CX as the counter so it has to be defined first. When the program executes LOOP it first checks if CX = 0 if true it continues to execute the next instructions. If the CX !=0 then control is transferred to the "header_label" , at the same time it also decreases the value of CX by 1.
Let us implement it in the program to print 100 '*' in assembly.
TOP: ; header_label
These kind of loops depends on a condition. pseudocode -
WHILE condition DO
The condition is checked at the top of the loop. If the condition is satisfied the the statements are executed. If false the program skips to whatever follows. It is possible that the condition is never satisfied (even at the initial stage) in that case the body is never executed.
Lets count the number of character in the input line.
The basic difference between WHILE and REPEAT loop is that using WHILE loop gives opportunity to skip the whole process even at the initial stage if the condition is false.
On the other hand the statements of REPEAT has to be done atleast once. REPEAT is useful on other cases as it leads to shorter coding.
Assembly Language Programming and Organization of IBM PC