Decision Directives (Cont.)


The directive is expanded into assembly language instructions including the . Assume and are 32-bit unsigned integers:

 mov  eax, 6 
 .IF ( eax > val1 ) 
   mov  result, 1
 .ENDIF
⇒
   mov  eax, 6
   cmp  eax, val1
   jbe  @C0001       ; unsigned comparison
   mov  result, 1
 @C0001:             ; created by assembler
Memory Comparison Unsigned Comparison Signed Comparison
 INCLUDE Irvine32.inc
 .data 
  opnd1  BYTE  1
  opnd2  BYTE  2
 .code
 main PROC
  .IF ( opnd1 < opnd2 )
   call  WaitMsg
  .ENDIF
  exit
 main ENDP
 END main
 INCLUDE Irvine32.inc
 .data
  opnd  BYTE  -1
 .code
 main PROC 
  .IF ( opnd < 0 )
   call  WaitMsg
  .ENDIF
  exit
 main ENDP
 END main

 INCLUDE Irvine32.inc
 .data
  opnd  SBYTE  -1
 .code
 main PROC
  .IF ( opnd < 0 )
    call  WaitMsg
  .ENDIF
  exit
 main ENDP
 END main

Output Output Output

 

 

 

 

 

 

Memory & Register Register Comparison Constant Comparison
 INCLUDE Irvine32.inc
 .data
  opnd  SBYTE  -1 
 .code
 main PROC
  mov   al, 0 
  .IF ( opnd < al )
   call  WaitMsg
  .ENDIF
  exit
 main ENDP
 END main
 INCLUDE Irvine32.inc
 .data
  dummy  WORD  ? 
 .code
 main PROC
  mov  eax, -4
  .IF ( eax < 0 )
   call  WaitMsg
  .ENDIF
  exit
 main ENDP
 END main

 INCLUDE Irvine32.inc
 .data
  dummy  WORD  ? 
 .code
 main PROC
  mov  eax, -4
  .IF ( 0 > eax )
   call  WaitMsg
  .ENDIF
  exit
 main ENDP
 END main

Output Output Output

 

 

 

 

 

 






      “I’m not arguing, I’m just explaining why I’m right.”    
      ― Unknown