例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来终止程序的运行。