删除数组中为零的元素
程序运行:
无输出
代码:
datas segmentmem dw 10 dup(0h,34h,0h,56h,32h,10h,3h,13h,0h,0h)memCount dw ($-mem)/2datas endsstacks segment stackdb 100h dup(?)stacks endscodes segmentassume cs:codes,ds:datas,ss:stacks
main proc far
start:push dsmov ax,0hpush axmov ax,datas ;初始化dsmov ds,axmov si,0 ;数组下标索引mov di,0 ;压缩后数组下标mov cx,memCounts:mov ax,mem[si]cmp ax,0 ;判断是否为0je s1 ;若为0,则跳转s1cmp si,di ;判断si和di是否为指向同一下标je s2 ;若为0,则跳转s2mov mem[di],ax ;数组压缩s2:add di,type mem ;压缩后数组下标加1s1:add si,type mem ;数组下标索引加1loop s sub si,di ;压缩剩下的空间长度mov cx,sis3:mov mem[di],0 ;压缩剩下的空间置0add di,type memloop s3retmain endp
codes endsend main