1 / 49

High-level language structures

High-level language structures. Branching structures IF-THEN. IF condition is true THEN execute true-branch statements End_if. Branching structures IF-THEN. false true. condition. True branch statements. example.

clune
Download Presentation

High-level language structures

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. High-level language structures CAP221

  2. Branching structuresIF-THEN • IF condition is true THEN execute true-branch statements End_if CAP221

  3. Branching structuresIF-THEN false true condition True branch statements CAP221

  4. example • Replace the number in AX by its absolute value. • Pseudo code algorithm is IF AX <0 Then replace AX by –AX END_IF CAP221

  5. example • Code: CMP AX,0 ;AX<0? JNL END_IF ;no, exit NEG AX ;yes, change sign END_IF: CAP221

  6. IF_THEN_ELSE • IF condition is true THEN execute true-branch statements ELSE execute FALSE-branch statements End_IF CAP221

  7. IF_THEN_ELSE FALSE TRUE CONDITION FALSE BRANCH STATEMENTS TRUE BRANCH STATEMENTS CAP221

  8. CASE • A case is a multiway branch structure that tests a register, variable, or expression for particular values or range of values. The general form is as follows: case expression values_1: statements_1 values_2: statements_2 ………….. values_n: statements_n END_CASE CAP221

  9. CASE EXPRESSION VALUE_1 VALUE_N VALUE_2 ……. STATEMENTS_1 STATEMENTS_2 STATEMENTS_N CAP221

  10. EXAMPLE • IF AX contains a negative number, put -1 in BX; if AX contains 0, put 0 in BX; if AX contains a positive number, put 1 in BX. CAP221

  11. example • Pseudo code algorithm is Case AX < 0:put -1 in BX = 0:put 0 in BX > 0:put 1 in BX END_CASE CAP221

  12. Code: CMP AX,0 JL NEGATIVE JE ZERO JG POSITIVE NEGATIVE: MOV BX,-1 JMP END_CASE ZERO: MOV BX,0 JMP END_CASE POSITIVE: MOV BX,1 END_CASE Example • NOTE: only one CMP is needed, because jump instructions do not affect the flags. CAP221

  13. example • If AL contains 1 or 3, display “o”; if AL contains 2 or 4, display “e”. • Pseudo code algorithm is • Case AL 1, 3: display “o” 2, 4: display “e” End_case CAP221

  14. Code: CMP AL,1 JE ODD CMP AL,3 JE ODD CMP AL,2 JE EVEN CMP AL,4 JE EVEN JMP END_ ODD: MOV DL, ’o’ JMP DIS_ EVEN: MOV DL, ’e’ END_: example CAP221

  15. Branches with compound conditions • Sometimes the branching condition in an IF or CASE takes the form • Condition_1 and condition_2 • Condition_1 or condition_2 CAP221

  16. AND conditions • An AND condition is true if and only if condition_1 and condition_2 are both true. • Likewise, if either condition is false, then the whole thing is false. CAP221

  17. Example • Read a character, and if it’s an uppercase letter, display it. • Pseudo code algorithm is read a character (into AL) If (‘A’ <= character) and (character <=‘Z’) Then Display character End_if CAP221

  18. Code: MOV ah,1 INT 21h CMP al,’A’ JL end_if CMP al,’Z’ JG end_if MOV DL,AL MOV AH,2 INT 21H End_if: example CAP221

  19. OR conditions • condition_1 OR condition_2 is true if at least one of the conditions is true. • if both conditions are false, then the whole thing is false. CAP221

  20. example • Read a character. If it’s “y” or “Y”, display it; otherwise, terminate the program. • Pseudo code algorithm is Read a character (into AL) if (character = “y” or character= “Y”) Then Display character Else Terminate the program End_if CAP221

  21. MOV AH,1 INT 21h CMP AL, ’y’ JE THEN CMP AL,’Y’ JE THEN JMP ELSE_ THEN: MOV AH,2 MOV DL,AL INT 21H JMP END_IF ELSE_: MOV AH,4CH INT 21H END_IF: example CAP221

  22. Looping structures • A loop is a sequence of instructions that are repeated. • For loop: this is a loop structure in which the loop statements are repeated a known number of times (a count-controlled loop). CAP221

  23. For loop_count times do statementsend_for Initialize count statements Count = count - 1 Count=0 False True CAP221

  24. LOOP instruction • The LOOP instruction can be used to implement a FOR loop. • General form: LOOP des_label The counter for the loop is the register CX. CAP221

  25. LOOP instruction • CX is initialized to loop_count. • Execution of the LOOP instruction causes CX to be decremented automatically. • If CX is not 0, control transfers to des_label. • If CX =0, the next instruction after LOOP is done. • Des_label must precede the LOOP instruction by no more than 126 bytes. CAP221

  26. LOOP instruction • So, a FOR loop can be implemented as follows. ; initialize CX to loop_count Des_label: ; body of the loop loop des_label CAP221

  27. example • Write a count-controlled loop to display a row of 80 stars. • Pseudo code algorithm is For 80 times do display ‘*’ end_for CAP221

  28. MOV CX,80 MOV AH,2 MOV DL,’*’ TOP: INT 21H LOOP TOP example CAP221

  29. LOOP instruction • A loop instruction is executed at least once. • If CX = 0 when the loop is entered, the loop instruction causes CX to be decremented to FFFFH. • So, the loop is executed 65535 more times. CAP221

  30. LOOP instruction • Solution: use the instruction JCXZ (jump if CX is zero) before the loop. JCXZ des_label CAP221

  31. LOOP instruction • A loop implemented as follows is bypassed if CX is 0. JCXZ skip top: ;body of the loop loop top Skip: CAP221

  32. While Loop • This loop depends on a condition. • Pseudo code while condition do statements end_while CAP221

  33. While Loop condition True statements False CAP221

  34. example • Write some code to count the number of characters in an input line. • Pseudo code initialize count to 0. read a character while character <> carriage_return do count=count + 1 read a character end_while CAP221

  35. example MOV DX,0 MOV AH,1 INT 21H WHILE_: CMP AL,0DH JE END_ INC DX INT 21H JMP WHILE_ END_ : CAP221

  36. Repeat loop • Another conditional loop is the repeat loop. Pseudo code repeat statements until condition CAP221

  37. Repeat loop statements condition False True CAP221

  38. example • Write some code to read characters until a blank is read. Pseudo code Repeat read a character until character is a blank CAP221

  39. example MOV AH,1 REPEAT: INT 21H CMP AL,’ ’ JNE REPEAT CAP221

  40. WHILE versus REPEAT • In a while loop, the loop can be bypassed if the terminating condition is initially false. • The statements in a repeat must be done at least once. • Code for a repeat loop is likely to be shorter because there is only a conditional jump at the end, but a while loop has two jumps: a conditional jump at the top and a jmp at the bottom. CAP221

  41. Programming with high-level structures • Top-down program design: The original problem is solved by solving a series of sub problems, each of which is easier to solve than the original problem. CAP221

  42. example Prompt the user to enter a line of text. On the next line, display the capital letter entered that comes first alphabetically and the one that comes last. If no capital letters are entered, display “No capital letter”. sample execution: type a line of text: THE QUICK BROWN FOX JUMPED. first capital = B last capital = X CAP221

  43. Top down program design First refinement: • Display the opening message. • Read and process a line of text. • Display the results. CAP221

  44. example TITLE PGM6_2 : FIRST LAST CAPITALS .MODEL SMALL .STACK 100H .DATA PROMPT DB 'Type a line of text ',0dH,0AH,'$' NOCAP_MSG DB 0DH,0AH,' No Capitals $' CAP_MSG DB 0DH,0AH,'FIRST CAPITAL = ' FIRST DB '[' DB ' LAST CAPITAL = ' LAST DB '@ $' CAP221

  45. Step 1 .CODE MAIN PROC ; initialize DS MOV AX,@DATA MOV DS, AX ; first step display opening message MOV AH,9 LEA DX,PROMPT INT 21H CAP221

  46. Step 2: read and process a line of text Read a character. While character is not a carriage return do If character is a capital letter Then If character precedes first capital Then First capital = character End_if If character follows last capital Then Last capital = character End_if End_if Read a character End_while CAP221

  47. ;read and process a line of text MOV AH,1 INT 21H WHILE_: ; while character is not carriage ;return do CMP AL,0dH JE END_WHILE ; if character is a capital letter CMP AL,'A' JNGE END_IF CMP AL,'Z' JNLE END_IF ; then ; if character precedes FIRST ;capital CMP AL,FIRST JNL CHECK_LAST ; then FIRST CAPITAL = ;character MOV FIRST,AL ; end_if CHECK_LAST : ; if character follows last capital CMP AL,LAST JNG END_IF ; then LAST CAPITAL = character MOV LAST,AL ;end_if END_IF: ; read a character INT 21H JMP WHILE_ END_WHILE : CAP221

  48. Step 3: display the results if no capitals were typed then display “no capitals” Else display first capital and last capital End_if CAP221

  49. ; display results MOV AH,9 ; if no capital were typed CMP FIRST, '[' JNE CAPS ; then LEA DX,NOCAP_MSG JMP DISPLAY CAPS : LEA DX,CAP_MSG DISPLAY : INT 21H ;end_if ; DOS exit MOV AH,4CH INT 21H MAIN ENDP END MAIN CAP221

More Related