例6.7 把下列C语言的语句改写成等价的汇编语言程序段(不考虑运算过程中的溢出)。
If (a+b > 0 && c%2 ==                         
0) a = 62;
                           
else a = 21;
其中:变量a,b和c都是有符号的整型(int)变量。
| 解: | ||||
| DATA1 | SEGMENT | |||
| … | ||||
| A | DW ? | |||
| B | DW ? | |||
| C | DW ? | |||
| … | ||||
| DATA1 | ENDS | |||
| CODE1 | SEGMENT | |||
| … | ||||
| MOV | AX, A | |||
| ADD | AX, B | |||
| JLE | _ELSE | ;ADD指令会改变算术标志位 | ||
| TEST | C, 1 | ;C%2==0,也就是:看C的最低位是否为0 | ||
| JNZ | _ELSE | |||
| MOV | A, 62D | |||
| JMP | NEXT | |||
| _ELSE: | MOV | A, 21D | ||
| NEXT: | … | |||
| CODE1 | ENDS | |||
例6.8 用地址转移表实现下列C语言的switch语句,其中:变量A和B是有符号的整型(int)变量。
      
  | 
    
      
  |  
  |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
用地址表实现多路转移的关键在于:转移入口的地址表和转移情况可整数化。如果这二个要求有一个不满足,或很难构造,则无法使用该方法。