以BUF为首址的存储区,存放有若干个字数据,试编制一程序求出其中负数的平均值(负数之和>-32768),并存放在MEA2字单元中。(5分)
DATASEGMENTBUFDW……;存放若干个字数据COUNTEQU$-BUF;定义字数据所占字节数MEA2DW2;定义负数平均值存放单元DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATANVALPROCDSSTART:PUSHDS;设置返回堆栈MOVAX,0PUSHAXMOVAX,DATA;设置数据段地址MOVDS,AXLEASI,BUF;SI←取数据首址MOVCX,COUNTSHRCX,1;CX←计算字数据个数XORAX,AX;负数和结果寄存器AX清零XORDX,DX;DX清零MOVDI,0;负数个数计数寄存器DI清零AGAIN:MOVBX,[SI];BX←取一字数据CMPBX,0JGENEXT;若为正数转NEXTADDAX,BX;若为负数则求和INCDI;计负数个数NEXT:INCSI;修改取数地址LOOPAGAIN;循环重复MOVBX,DI;BX←负数个数CWD;扩展或双字IDIVBX;DX:AX÷BX求平均值MOVMEA2,AX;MEA2←负数平均值。RETNVALENDPCODEENDSENDSTART