下面程序的功能是:字数组 ARR1 为有符号数,第一个单元为元素个数 N ,后面为 N 个元素的值。编写程序,把零元数组中清除,移动元素位置并修改第一个单元(元素个数)。请将程序补充完整。 DATA SEGMENT ARR1 DW 5 , 10 , 15 , 0 , 29 , 6 LOCA DW 999 ; 此单元地址为结束标记 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START:MOV AX, DATA MOV DS, AX MOV CX, ARR1 LEA BX, ARR1+2 NEXT:CMP WORD PTR[BX] , 0 ; 判断是否是元素零 ; 是,则转移到 MOVE1 ; 否则, BX 指向下一个元素 ; 所有元素都比较完了吗?没有则返回 NEXT ; 都比较完了,跳转到 EXIT MOVE1 : ; 发现元素零,数组中元素个数减一 MOV DI , BX ; 将数组中零元素的偏移地址存入 DI 寄存器 MOVE2 : MOV AX , [DI+2] ; 将零元素后面的元素前移,即 DI+2 内容存入 AX MOV [DI] , AX ;AX 的内容存入 DI 所指向的字单元 ADD DI , 2 ; DI 指向下一个要前移的元 CMP DI , OFFSET LOCA ; 判断是否数组已经结束 JNB NEXT ; 是,则转移到 NEXT ,继续查找下一个零元素 JMP MOVE2 ; 否则转移到 MOVE2 继续前移后面的元素 EXIT : MOV AH, 4CH ; 返回 DOS INT 21H CODE ENDS END START