用Р定义堆栈段,尽量把堆栈预留空间设置大一点,因为Р子程序调用过程中,要进行大量的反复保存各寄存器Р内的内容。然后定义代码段,给各个段寄存器分配段。Р给每个段寄存器指定段地址。然后调用各子程序实现Р各项功能,在子程调用前设置好相关参数。最后设置一Р个程序执行完后的退出人际交互命令。Р主程序流程图如图2所示。Р 图2 主程序流程图Р Р部分主程序如下(完整程序参见附录二):Р data segment Р X DW ?Р Y DW ?Р Z DW ?Р S DW ?Р DISNO DB 0AH,0DH,'NO$'Р BUFF3 DB 0AH,0DH,'SHUCHU ER JIN ZHI SHU$'Р BUFF4 DB 0AH,0DH,'OU SHU SHI JIN ZHI SHU CHU$'Р BUFF5 DB 0AH,0DH,'SHUCHU CHU PING FANG HE$'Р BUFF2 DB 0AH,0DH,'IF YOU WANT TO QUIT,PLEASE PRESS Q/q$'Р stri db 'input a number :',0ah,0dh,'$' ;显示提示文字Р max db 5 Р actlen db ?Р string db 5 dup(?)Р num dw 2 dup(?) ;保留输入数值的存储空间Р data ends Р stack1 segment Р dw 256h dup(0) ;保留堆栈空间Р stack1 ends Р code segment Р assume ds:data,ss:stack1,cs:codeР start:Р mov ax,data Р mov ds,ax Р call input Р mov ax,num Р mov num+2,ax Р mov dl,0ah ;换行Р mov ah,2 ;单字符输出调用