急求汇编小程序,高分,急,急,急

来源:百度知道 编辑:UC知道 时间:2024/09/22 11:19:36
有一个首地址为MEM的100D字数组,编程删除数组中所有0项,并将后续项向前压缩,最后将数组剩余部分补上0/..

以下程序只要把MEM后面的100个数据填满就可以。肯定成功,我已经试过啦。保证正确哦
DATA SEGMENT
MEM DW 58,0,0,1234,56,……;定义100个
DATA ENDS
SSEG SEGMENT
DB 100 DUP(?)
SSEG ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:SSEG
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,SSEG
MOV SS,AX
LEA BX,MEM
MOV DI,BX
ADD BX,98*2;BX指向最后一个数据
CLD
MOV AX,0
MOV CX,100
PUSH DI
PUSH CX
KK1:
POP CX
POP DI
REPNE SCASW
JNE EXIT;找不到0,退出

MOV SI,DI ;SI指向0项的下一个位置
SUB DI,2 ;DI指向0项位置
PUSH DI;保存查到时的位置,为后面的查找提供起始位置
PUSH CX;保存查到时的位置,为后面的查找提供循环次数

KK2:
REP MOVSW;往前压缩
MOV WORD PTR [BX],9999H ;后面补0
SUB BX,2 ;调整指针,为后面补0做准备
JMP KK1
EXIT:
MOV AH