题目:在首地址为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