题目:有一个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将其后续项向前压缩,最后将数组中剩余部分补上零。
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;Author:
3 ;comment: Blank
4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5 ;input code
6
7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8 sta segment
9 dw 40 dup(?)
10 top label word
11 sta ends
12
13 data segment
14 mem dw 10,35,0,12,71,63,0,8,9,110,50
15 num dw ?
16 data ends
17
18 code segment
19 assume cs:code,ds:data,ss:sta
20 start:
21 mov ax,sta
22 mov ss,ax
23 lea sp,top
24 mov ax,data
25 mov ds,ax
26
27 mov num,0
28 mov si,0
29 mov cx,mem[si]
30 l0:
31 add si,2
32 cmp mem[si],0
33 jne l10
34 push si
35 dec cx
36 inc num
37 push cx
38 lx:
39 mov ax,mem[si+2]
40 mov mem[si],ax
41 add si,2
42 loop lx
43 pop cx
44 pop si
45 sub si,2
46 jne l0
47
48 l10:
49 loop l0
50 mov cx,num
51 ld: add si,2
52 mov mem[si],0
53 loop ld
54
55 mov ah,4ch
56 int 21h
57
58 code ends
59 end start
60