欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汇编语言实验(八)之删除数组中为零的元素

程序员文章站 2024-02-02 15:42:52
...

删除数组中为零的元素

程序运行:

无输出

 

代码:


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