例6.4 假设有二个字变量word1和word2,编写程序段实现交换其值的功能。
| 解: | ||||
|
方法1:用汇编语言指令简单“直译”上面的 交换数据方法 |
||||
| DATA1 | SEGMENT | |||
| … | ||||
| word1 | DW ? | |||
| word2 | DW ? | |||
| temp | DW ? | |||
| … | ||||
| DATA1 | ENDS | |||
| CODE1 | SEGMENT | |||
| … | ||||
| MOV | AX, word1 | |||
| MOV | temp, AX | ;上二语句实现语句“temp=word1” | ||
| MOV | AX, word2 | |||
| MOV | word1, AX | ;上二语句实现语句“word1=word2” | ||
| MOV | AX, temp | |||
| MOV | word2, AX | ;上二语句实现语句“word2=temp” | ||
| … | ||||
| CODE1 | ENDS | |||
这种方法虽然也能完成功能,但显然其不能充分利用汇编语言的特点,程序效率很低。
|
方法2:用汇编语言指令的特点来直接编译 |
||||
| DATA1 | SEGMENT | |||
| … | ||||
| word1 | DW ? | |||
| word2 | DW ? | |||
| … | ||||
| DATA1 | ENDS | |||
| CODE1 | SEGMENT | |||
| … | ||||
| MOV | AX, word1 | |||
| XCHG | AX, word2 | |||
| MOV | word1, AX | ;能XCHG word1, word2来代替这三条指令吗? | ||
| … | ||||
| CODE1 | ENDS | |||
该方法充分利用了汇编语言的特点,不仅省去了中间变量temp的定义,而且程序的效率也提高了。