例10.17 利用PSP中的信息来终止当前程序的运行。
| 解: | ||||
| DSEG | SEGMENT | |||
| MSG DB "Hello$" | ||||
| DSEG | ENDS | |||
| CSEG | SEGMENT 'CODE' | |||
| ASSUME CS:CSEG, DS:DSEG | ||||
| MAIN | PROC FAR | |||
| start: | ;在装入内存时,DS存放的是PSP的段地址 | |||
| PUSH | DS | |||
| XOR | AX, AX | |||
| PUSH | AX | ;当前堆栈内容为0和PSP的段地址 | ||
| MOV | AX, DSEG | |||
| MOV | DS, AX | |||
| MOV | DX, OFFSET MSG | |||
| MOV | AH, 9 | |||
| INT | 21H | |||
| RET | ||||
| MAIN | ENDP | |||
| CSEG | ENDS | |||
| END start | ||||
例10.17是早期利用PSP来终止程序的方法。子程序MAIN必须定义为FAR类型,其前三条语句是为用PSP的头二个字节来终止程序运行服务的,但现在通常用中断21H之功能4CH来终止程序的运行。