;将首地址为MEM的100个字的数组中所有为0的项删除
;并将后续项向前压缩,最后将数组剩余部分补上0
DATA SEGMENT
MEM DW 20 DUP(1,2,0,4,5)
COPY DW 100 DUP(0)
CRLF DB 0AH,0DH,'$'
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
LEA SI,MEM
LEA DI,COPY
MOV CX,100
L0:
;并将后续项向前压缩,最后将数组剩余部分补上0
DATA SEGMENT
MEM DW 20 DUP(1,2,0,4,5)
COPY DW 100 DUP(0)
CRLF DB 0AH,0DH,'$'
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
LEA SI,MEM
LEA DI,COPY
MOV CX,100
L0: