汇编语言(八)之删除数组中为零的元素
删除数组中为零的元素
程序运行:
无输出
代码:
datas segment
mem dw 10 dup(0h,34h,0h,56h,32h,10h,3h,13h,0h,0h)
memCount dw ($-mem)/2
datas ends
stacks segment stack
db 100h dup(?)
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
main proc far
start:
push ds
mov ax,0h
push ax
mov ax,datas ;初始化ds
mov ds,ax
mov si,0 ;数组下标索引
mov di,0 ;压缩后数组下标
mov cx,memCount
s:
mov ax,mem[si]
cmp ax,0 ;判断是否为0
je s1 ;若为0,则跳转s1
cmp si,di ;判断si和di是否为指向同一下标
je s2 ;若为0,则跳转s2
mov mem[di],ax ;数组压缩
s2:
add di,type mem ;压缩后数组下标加1
s1:
add si,type mem ;数组下标索引加1
loop s
sub si,di ;压缩剩下的空间长度
mov cx,si
s3:
mov mem[di],0 ;压缩剩下的空间置0
add di,type mem
loop s3
ret
main endp
codes ends
end main