题目:在首地址为TABLE的数组中按递增次序存放着100H个16位补码数,试编写一个程序把出现次数最多及其出现次数分别存放在AX和CX寄存器中。
1
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ; Author:
3 ; comment: Blank
4 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5 ; input code
6
7 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8 assume cs: code, ss: sta, ds: data
9 sta segment
10 dw 40h dup(?)
11 top label word
12 sta ends
13 data segment
14 table dw 1 , 2 , 3 , 3 , 3 , 5 , 6 , 7 , 8 , 9
15 data ends
16
17 code segment
18 start:
19 mov ax,sta
20 mov ss,ax
21 lea sp,top
22 mov ax,data
23 mov ds,ax
24
25 mov si, 0
26 mov ax,table[si]
27 mov bx,ax
28 mov cx, 9
29 mov dx, 1
30 mov di, 0
31 add si, 2
32
33 l0:
34 cmp ax,table[si]
35 jne l1
36 inc dx
37 add si, 2
38 jmp l3
39
40 l1:
41 cmp bx,table[si]
42 je l2
43 mov bx,table[si]
44 mov di, 1
45 add si, 2
46 jmp l3
47
48 l2:
49 inc di
50 cmp di,dx
51 jbe l3
52 mov dx,di
53 mov ax,bx
54 add si, 2
55 l3:
56 loop l0
57
58 mov cx,dx
59
60 mov ah,4ch
61 int 21h
62
63 code ends
64 end start
2 ; Author:
3 ; comment: Blank
4 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5 ; input code
6
7 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8 assume cs: code, ss: sta, ds: data
9 sta segment
10 dw 40h dup(?)
11 top label word
12 sta ends
13 data segment
14 table dw 1 , 2 , 3 , 3 , 3 , 5 , 6 , 7 , 8 , 9
15 data ends
16
17 code segment
18 start:
19 mov ax,sta
20 mov ss,ax
21 lea sp,top
22 mov ax,data
23 mov ds,ax
24
25 mov si, 0
26 mov ax,table[si]
27 mov bx,ax
28 mov cx, 9
29 mov dx, 1
30 mov di, 0
31 add si, 2
32
33 l0:
34 cmp ax,table[si]
35 jne l1
36 inc dx
37 add si, 2
38 jmp l3
39
40 l1:
41 cmp bx,table[si]
42 je l2
43 mov bx,table[si]
44 mov di, 1
45 add si, 2
46 jmp l3
47
48 l2:
49 inc di
50 cmp di,dx
51 jbe l3
52 mov dx,di
53 mov ax,bx
54 add si, 2
55 l3:
56 loop l0
57
58 mov cx,dx
59
60 mov ah,4ch
61 int 21h
62
63 code ends
64 end start