0% found this document useful (0 votes)
71 views15 pages

Computer Organization and Assembly Language: Conditional Processing (Part II)

Here are solutions to the practice problems: 1. and bl,00100110b jnz L1 2. and bl,00100110b cmp bl,00100110b je L1 3. test al,1 jz L2 4. cmp ax,0 jl L3 5. sub bx,cx jg L4

Uploaded by

Maheen Shahid
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views15 pages

Computer Organization and Assembly Language: Conditional Processing (Part II)

Here are solutions to the practice problems: 1. and bl,00100110b jnz L1 2. and bl,00100110b cmp bl,00100110b je L1 3. test al,1 jz L2 4. cmp ax,0 jl L3 5. sub bx,cx jg L4

Uploaded by

Maheen Shahid
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

Computer Organization

and Assembly Language

Week 15-1

Conditional Processing
(Part II)
What's Next

 Boolean and Comparison


Instructions
 Conditional Jumps
 Conditional Loop Instructions
Conditional Jumps
 Jumps Based On . . .
 Specific flags
 Equality
 Unsigned comparisons
 Signed Comparisons
 Applications
 Encrypting a String
 Bit Test (BT) Instruction
Jcond Instruction
 Two steps to create a logic structure in ASM
 Execute CMP, AND, or SUB to modify the CPU status flags
 Execute conditional jump iinstruction
 A conditional jump instruction branches to a label
when specific register or flag conditions are met

 Specific jumps:
JB, JC - jump to a label if the Carry flag is set
JE, JZ - jump to a label if the Zero flag is set
JS - jump to a label if the Sign flag is set
JNE, JNZ - jump to a label if the Zero flag is clear
JECXZ - jump to a label if ECX = 0
Jcond Ranges
 Prior to the 386:
 jump must be within –128 to +127 bytes from
current location counter
 x86 processors:
 32-bit offset permits jump anywhere in memory
Jumps Based on Specific Flags
Jumps Based on Equality
Jumps Based on Unsigned
Comparisons
Jumps Based on Signed Comparisons
Applications (1 of 5)
• Task: Jump to a label if unsigned EAX is greater than EBX
• Solution: Use CMP, followed by JA

cmp eax,ebx
ja Larger

• Task: Jump to a label if signed EAX is greater than EBX


• Solution: Use CMP, followed by JG

cmp eax,ebx
jg Greater
Applications (2 of 5)

• Jump to label L1 if unsigned EAX is less than or equal to Val1

cmp eax,Val1
jbe L1 ; below or equal

• Jump to label L1 if signed EAX is less than or equal to Val1

cmp eax,Val1
jle L1
Applications (3 of 5)
• Compare unsigned AX to BX, and copy the larger of the two
into a variable named Large
mov Large,bx
cmp ax,bx
jna Next
mov Large,ax
Next:

• Compare signed AX to BX, and copy the smaller of the two


into a variable named Small
mov Small,ax
cmp bx,ax
jnl Next
mov Small,bx
Next:
Applications (4 of 5)
• Jump to label L1 if the memory word pointed to by ESI equals
Zero
cmp WORD PTR [esi],0
je L1

• Jump to label L2 if the doubleword in memory pointed to by


EDI is even

test DWORD PTR [edi],1


jz L2
Applications (5 of 5)

• Task: Jump to label L1 if bits 0, 1, and 3 in AL are all set.


• Solution: Clear all bits except bits 0, 1,and 3. Then
compare the result with 00001011 binary.

and al,00001011b ; clear unwanted bits


cmp al,00001011b ; check remaining bits
je L1 ; all set? jump to L1
Your turn . . .
 Write code that jumps to label L1 if either bit
4, 5, or 6 is set in the BL register.
 Write code that jumps to label L1 if bits 4, 5,
and 6 are all set in the BL register.
 Write code that jumps to label L2 if AL has
even parity.
 Write code that jumps to label L3 if AX is
negative.
 Write code that jumps to label L4 if the
expression (BX – CX) is greater than zero.

You might also like