assume cs:code, ds:data
data segment
db '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983'
db '1984', '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992'
db '1993', '1994', '1995'
dd 16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479, 140417, 197514
dd 345980, 590827, 803530, 1183000, 1843000, 2759000, 3753000, 4649000, 5937000
dw 3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258, 2793, 4037, 5635, 8226
dw 11542, 14430, 15257, 17800
data ends
;year 0h - 53h; sum 54h - 0a7h; ne 0a8h - 0d1h
table segment
db 21 dup ('year sum0 ne ?? ')
table ends
code segment
start:
mov ax, data
mov ds, ax
mov ax, table
mov es, ax
mov bx, 0
mov si, 0
mov di, 0
mov cx, 21
s0:
mov ax, ' '
mov es:[bx + 4h], ax
mov es:[bx + 9h], ax ;空格
mov ax, 0h[si]
mov dx, 0h[si + 2]
mov es:[bx + 0], ax
mov es:[bx + 0 + 2], dx ;year
mov ax, 0a8h[di]
mov es:[bx + 10], ax ;ne
mov ax, 54h[si] ;被除数的地位
mov dx, 54h[si + 2] ;被除数的高位
mov es:[bx + 5], ax
mov es:[bx + 5 + 2], dx ;sum
div word ptr 0a8h[di]
mov es:[bx + 13], ax
add si, 4
add di, 2
add bx, 10h
loop s0
mov ax, 4c00h
int 21h
code ends
end start