assume cs:code,ds:data,es:table
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
table segment
db 21 dup('year summ ne ?? ')
table ends
code segment
star:
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov si,0
mov bx,0
mov di,0
call row_str
mov dh,2
mov dl,5
mov cl,2
call show_str1
mov dh,2
mov dl,15
mov cl,2
call show_str2
mov dh,2
mov dl,30
mov cl,2
call show_str3
mov dh,2
mov dl,45
mov cl,2
call show_str4
mov ax,4c00h
int 21h
row_str:
push si
push bx
push di
mov cx,21
s:
mov ax,ds:[0+di]
mov es:[0+si],ax
mov ax,ds:[2+di]
mov es:[2+si],ax
mov ax,ds:[84+di]
mov es:[5+si],ax
mov ax,ds:[86+di]
mov es:[7+si],ax
mov ax,ds:[168+bx]
mov es:[10+si],ax
mov ax,es:[5+si]
mov dx,es:[7+si]
div word ptr es:[10+si]
mov es:[13+si],ax
add di,4
add bx,2
add si,16
loop s
pop di
pop bx
pop si
ret
show_str1: ;打印第一列
push ds
push bx
push cx
push si
mov ax,47104
mov ds,ax
mov ax,160
mul dh
mov bx,ax
mov ax,2
mul dl
add bx,ax
add ah,cl
call show_year
pop si
pop cx
pop bx
pop ds
ret
show_year:
mov bp,0
push si
push bx
push di
mov cx,21
s1:
push cx
mov bp,0
mov di,0
mov cx,4
s2:
mov al,es:[bp+si]
mov ah,10
mov ds:[0+di+bx],ax
inc bp
add di,2
loop s2
add si,16
add bx,160
pop cx
loop s1
pop di
pop bx
pop si
ret
show_str2: ;打印第二列
push ds
push bx
push cx
push si
push di
mov ax,47104
mov ds,ax
mov ax,160
mul dh
mov bx,ax
mov ax,2
mul dl
add bx,ax
add ah,cl
call show_summ
pop di
pop si
pop cx
pop bx
pop ds
ret
show_summ:
mov cx,21
s3:
mov bp,0
push cx
mov ax,es:[5+si]
mov dx,es:[7+si]
push si
mov cx,10
push ax
s4:
mov cx,10
mov ax,dx
mov dx,0
div cx
mov si,ax
pop ax
div cx
mov cx,dx
mov dx,si
inc bp
add cx,48
push cx
mov cx,ax
jcxz s5
push ax
jmp short s4
s5:
mov di,0
mov cx,bp
s6:
pop ax
mov ah,10
mov ds:[0+bx+di],ax
add di,2
loop s6
pop si
add si,16
add bx,160
pop cx
loop s3
ret
show_str3:
push ds
push bx
push cx
push si
push di
mov ax,47104
mov ds,ax
mov ax,160
mul dh
mov bx,ax
mov ax,2
mul dl
add bx,ax
add ah,cl
call show_ne
pop di
pop si
pop cx
pop bx
pop ds
ret
show_ne:
mov cx,21
mov si,0
z:
mov di,0
mov bp,0
push cx
mov ax,es:[10+si]
z1:
mov dx,0
mov cx,10
div cx
inc bp
add dx,48
push dx
mov cx,ax
jcxz z2
jmp short z1
z2:
mov cx,bp
z3:
pop ax
mov ah,10
mov ds:[0+bx+di],ax
add di,2
loop z3
add si,16
add bx,160
pop cx
loop z
ret
show_str4:
push ds
push bx
push cx
push si
push di
mov ax,47104
mov ds,ax
mov ax,160
mul dh
mov bx,ax
mov ax,2
mul dl
add bx,ax
add ah,cl
call show_??
pop di
pop si
pop cx
pop bx
pop ds
ret
show_??:
mov cx,21
mov si,0
q:
mov di,0
mov bp,0
push cx
mov ax,es:[13+si]
q1:
mov dx,0
mov cx,10
div cx
inc bp
add dx,48
push dx
mov cx,ax
jcxz q2
jmp short q1
q2:
mov cx,bp
q3:
pop ax
mov ah,10
mov ds:[0+bx+di],ax
add di,2
loop q3
add si,16
add bx,160
pop cx
loop q
ret
code ends
end star
代码没有优化过,

这不是最好的法案!