程序的算法是,循环查找,找到一个负数,就用movsw指令将它后面的数据一次复制到这个数开始的位置。
程序如下:
data segment
buf dw 1,2,-3,-4,-5,6,-7,8,-9,-10
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov es,ax
mov cx,10
lea bx,buf
lop: cmp [bx],word ptr 0 ;查找小于0的数据
jge next
mov di,bx ;找到了,利用movsw将后面的数据向前移动
mov si,bx
inc si
inc si
push cx
dec cx
cld
rep movsw
pop cx
loop lop
jmp stop
next: inc bx
inc bx
loop lop
stop: mov ax,4c00h
int 21h
code ends
end start