Download presentation
Presentation is loading. Please wait.
1
Jump & Loop instructions
Lecture 4 Jump & Loop instructions
2
Chapter Outline Jump Instruction IF-THEN-ELSE Loop instruction
For Loop While Loop REPEAT Loop
3
IF-THEN-ELSE Example: Suppose AL and BL contain extended ASCII characters. Display the one that comes first in the character sequence. Solution: Pseudocode: IF AL <= BL THEN display the character in AL ELSE display the character in BL END_IF continue
4
IF-THEN-ELSE It can be coded as follows: ; if AL <= BL
CMP AL, BL ; AL <= BL? JNBE ELSE_ ; no, display char in BL ; AL <= BL MOV DL, AL ; move char to be displayed JMP DISPLAY ; go to display ELSE_: ; BL < AL MOV DL, BL DISPLAY: MOV AH, 2 ; prepare to display INT 21h ; display it
5
Branches with compound Conditions
Sometimes the branching condition in an IF or CASE takes the form: condition_1 AND condition_2 or condition_1 OR condition_2 where condition_1 and condition_2 are either true or false. AND condition OR condition
6
AND Condition An AND condition is true if and only if all conditions are true. Example: Read a character, and if it’s an uppercase letter, display it. Solution: Pseudocode: Read a character (into AL) IF ('A' <= character) and (character <= 'Z') THEN display character END_IF continue
7
AND Condition It can be coded as follows: ; read a character
; if ('A' <= char) and (char <='Z') ; then display char MOV AH,1 ; prepare to read INT 21h ; char in AL CMP AL, 'A' ; char >= 'A'? JNGE END_IF ; no, exit CMP AL, 'Z' ; char <= 'Z'? JNLE END_IF ; no, exit MOV DL, AL ; get char MOV AH, 2 ; prepare to display INT 21h ; display char END_IF:
8
OR Condition An OR condition is true if at least one of the conditions is true. Example: Read a character. If it’s 'y' or 'Y', display it; otherwise, terminate the program. Solution: Pseudocode: Read a character (into AL) IF (character = 'y') or (character = 'Y') THEN display character ELSE terminate the program END_IF continue
9
OR Condition It can be coded as follows: ; read a character
; if (char = 'y') or (char = 'Y') MOV AH,1 ; prepare to read INT 21h ; char in AL CMP AL, 'y' ; char = 'y'? JE THEN ; yes, go to display it CMP AL, 'Y' ; char = 'Y'? JMP ELSE_ ; no, terminate THEN: MOV DL, AL ; get char MOV AH, 2 ; prepare to display INT 21h ; display char JMP END_IF ; and exit ELSE_: MOV AH, 4Ch INT 21h ; DOS exit END_IF:
10
Loop Instruction The LOOP instruction can be used to implement a for loop. Syntax: The counter for the loop is the register CX, which is initialized to loop_count. Execution of the LOOP instruction causes CX to be decremented automatically. If (CX < > 0) control transfers to destination_label else the next instruction after LOOP is done. SHORT address LOOP
11
Loop Instruction Using the instruction LOOP, a FOR loop can be implemented as follows: ; initialize CX to loop_count TOP: ; body of the loop LOOP TOP In for loop the loop statements are repeated a known number of times.
12
FOR Loop Example: Write some code to display a row of 80 stars.
Solution: Pseudocode: FOR 80 times DO display '*' END_IF ; what if CX =0? MOV CX, 80 MOV AH, 2 MOV DL, '*' JCXZ SKIP ;jump if CX=0 TOP: INT 21h LOOP TOP SKIP: It can be coded as follows: MOV CX, 80 MOV AH, 2 MOV DL, '*' TOP: INT 21h LOOP TOP
13
WHILE Loop This loop depends on a condition.
The condition is checked at the top; if true the statements are executed; if false program goes into whatever follow. Pseudocode: WHILE condition DO statements END_WHILE
14
WHILE Loop Example: Write some code to count the number of characters in an input line. Solution: Pseudocode: initialize count to 0 read a character WHILE character <> carriage_return DO count = count + 1 read character END_WHILE continue
15
WHILE Loop It can be coded as follows:
END_WHILE: MOV DX, 0 ; DX counts characters MOV AH, 1 ; prepare to read INT 21h ; character in AL CMP AL, 0Dh ; CR? JE END_WHILE ; yes, exit INC DX ; not CR, increment count INT 21h ; read a character JMP WHILE_ ; loop back
16
REPEAT Loop This loop depends on a condition.
the statements are executed then the condition is checked. If true the loop terminates; if false, control branches to the top of the loop. Pseudocode: REPEAT Statements UNTIL conditions
17
REPEAT Loop Example: write code to read characters until a blank is read Pseudocode: REPEAT Read character UNTIL character is blank The code is: MOV AH,1 REAPEAT: INT 21H CMP AL,’ ‘ JNE REAPEAT
18
WHILE Versus REPEAT Use of a WHILE loop or a REPEAT loop is a matter of personal preference. A WHILE loop can be bypasses if the terminating condition is initially false. (a REPEAT loop must be done at least once) The code for a REPEAT loop is likely to be a little shorter because there is only one jump. (WHILE loops has two jumps)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.