slide1 l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Lecture 5 and Lecture 6 Chapter 7 –Program Logic and Control PowerPoint Presentation
Download Presentation
Lecture 5 and Lecture 6 Chapter 7 –Program Logic and Control

Loading in 2 Seconds...

play fullscreen
1 / 26

Lecture 5 and Lecture 6 Chapter 7 –Program Logic and Control - PowerPoint PPT Presentation


  • 126 Views
  • Uploaded on

Lecture 5 and Lecture 6 Chapter 7 –Program Logic and Control. Chapter Outline Short, near and far address JMP Instruction The CMP Instruction Conditional Jump instruction The Loop instruction While Loop REPEAT Loop. Short,near,and far addresses.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Lecture 5 and Lecture 6 Chapter 7 –Program Logic and Control' - piera


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Lecture 5 and Lecture 6

Chapter 7 –Program Logic and Control

slide2

Chapter Outline

  • Short, near and far address
  • JMP Instruction
  • The CMP Instruction
  • Conditional Jump instruction
  • The Loop instruction
  • While Loop
  • REPEAT Loop
slide3

Short,near,and far addresses

1- A short address, limited to a distance of -128 to 127 bytes

2- A near address, limited to a distance of -32,768 to 32,767 bytes

3- A far address, which may be within the same segment at a distance over 32K or in other segment

slide4

Unconditional Jumps - The JMP Instruction

  • The JMP (jump) instruction causes an unconditional transfer of
  • control (unconditional jump).
  • Syntax:
  • JMP destination
      • Example
      • JMP L10
      • ……..
      • L10: INC CX
slide5

Unconditional Jumps - The JMP Instruction

  • Backward and Forward jumps
  • Backward:
  • L10:
  • …….
  • JMP L10
  • Forward:
        • JMP L10
  • …….
  • L10:
slide6

The CMP Instruction

  • The jump condition is often provided by the CMP (compare)
  • instruction
  • Syntax:
  • CMP destination, source
  • Compares by computing destination contents minus source contents.
  • The result is not stored, but the flags are affected.
  • Destination may not be a constant.
  • CMP is just like SUB, except that destination is not changed.
slide7

Conditional Jumps

  • Syntax
  • Jxxx destination_label
  • Example
  • JNZ PRINT_LOOP
  • If the condition for the jump is true, the next instruction to be
  • executed is the one at destinaltion_label (PRINT_LOOP), which
  • may precede or follow the jump instruction itself.
  • If the condition is false, the instruction immediately following the
  • jump is done next.
  • For JNZ, the cindition is that the result of the previous operation is
  • not zero.
slide8

Conditional Jumps

  • Signed Jumps: used for signed interpretations.
  • Symbol Description Condition for Jumps
  • JG/JNLE jump if grater than ZF = 0 & SF = OF
  • jump if not less than or equal
  • JGE/JNL jump if grater than or equal SF = OF
  • jump if not less than
  • JL/JNGE jump if less than SF <> OF
  • jump if not greater than or equal
  • JLE/JNG jump if less than or equal ZF = 1 or SF <> OF
  • jump if not grater than
slide9

Conditional Jumps

  • Unsigned Jumps: used for unsigned interpretations.
  • Symbol Description Condition for Jumps
  • JA/JNBE jump if above CF = 0 & ZF = 0
  • jump if not below or equal
  • JAE/JNB jump if above or equal CF = 0
  • jump if not below
  • JB/JNAE jump if below CF = 1
  • jump if not above or equal
  • JBE/JNA jump if below or equal CF = 1 or ZF = 1
  • jump if not above
slide10

Conditional Jumps

  • Single Flag Jumps: operates on settings of individual flags.
  • Symbol Description Condition for Jumps
  • JE/JZ jump if equal/ jump if equal to 0 ZF = 1
  • JNE/JNZ jump if not equal/ jump if not 0 ZF = 0
  • JC jump if carry CF = 1
  • JNC jump if no carry CF = 0
  • JO jump if overflow OF = 1
  • JNO jump if no overflow OF = 0
  • JS jump if sign negative SF = 1
  • JNS jump if nonnegative sign SF = 0
  • JP/JPE jump if parity even PF = 1
  • JNP/JPO jump if parity odd PF = 0
slide11

continue

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
slide12

IF-THEN-ELSE

It can be coded as follows:

; if AL <= BL

; then

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

slide13

AND condition

OR condition

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.
slide14

continue

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
slide15

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:

slide16

continue

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
slide17

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'?

JE THEN ; yes, go to display it

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:

slide18

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.
slide19

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
slide20

; what if CX =0?

MOV CX, 80

MOV AH, 2

MOV DL, '*'

JCXZ SKIP ;jump if CX=0

TOP:

INT 21h

LOOP TOP

SKIP:

FOR Loop

  • Example: Write some code to display a row of 80 stars.
  • Solution:
  • Pseudocode:
  • FOR 80 times DO
  • display '*'
  • END_IF

It can be coded as follows:

MOV CX, 80

MOV AH, 2

MOV DL, '*'

TOP:

INT 21h

LOOP TOP

slide21

WHILE Loop

  • This loop depends on a condition.
  • Pseudocode:
  • WHILE condition DO
  • statements
  • END_WHILE
slide22

continue

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
slide23

WHILE Loop

It can be coded as follows:

WHILE_:

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

slide24

REPEAT Loop

  • This loop depends on a condition.
  • Pseudocode:
  • REPEAT
  • Statements
  • UNTIL conditions
slide25

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

slide26

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)