问答题 主程序定义X、Y、Z字变量。要求完成X=Y+Z运算。运算由外部模块实现。试按模块化程序设计编写主模块及运算子模块。并实现两者的连接关系。
【正确答案】NAME  MODULE1
   EXTRN  SUBADD: FAR
   STACK  SEGMENT PARA STACK'STACK'
          DW 100 DUP(?)
   STACK  ENDS
   DATA   SEGMENT  'DATA'
   X      DW    2DUP(?)
   Y      DW    2200H
   Z      DW    0FECDH
   DATA   ENDS
   CODE   SEGMENT PARA'CODE'
     ASSUMECS: CODE,DS: DATA,SS: STACK
   BG:  MOV  AX,DATA
        MOV  DX,AX
        MOV  AX,Y    ;取加数
        MOV  BX,Z    ;取被加数
        CALL SUBADD
        MOV  X,AX
        MOV  X+2,CX
        MOV  AH,4CH
        INT  21H
   CODE ENDS
        END BG
   NAME MODULE2
   CODE  SEGMENT PARA'CODE'
   SUBADD PROC FAR
   ASSUME CS: CODE
   PUBLIC SUBADD
   MOV    CX,00
   ADD    AX,BX    ;AX←AX+BX
   ADC    CX,00   ;如有进位,保存在DX中
   RET
   SUBMUL  ENDP
   CODE  ENDS
   END
【答案解析】本题主要训练模块化程序设计方法。本题可划分为两个模块,主模块调用子模块,由子模块完成加法运算。过程是通过EXTRN及PUBLIC完成通信交互的。本题重点在于给出模块问调用的通信要求,所以程序较简单。