有一个首地址为 LIST 的字数组,其中首单元保存数组的长度。试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。
DATA SEGMENT
LIST DW 15,1,2,9,0,5,7,6,3,5,0,12,0,78,15,45 ;数组长15
DATA ENDS
STACK SEGMENT STACK
DW 10 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,LIST
MOV CX,[SI]
MOV DX,CX
ADD SI,2
MOV DI,SI
CLD
L1:LODSW
CMP AX,0
JE L2
MOV ES:[DI],AX
DEC DX
ADD DI,2
L2:LOOP L1
L3:MOV CX,DX
MOV DX,0
L4:MOV ES:[DI],DX
ADD DI,2
LOOP L4
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END MAIN