assume cs:code
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
temp segment
db 100 dup(0)
temp ends
code segment
start: mov ax,table
mov es,ax
mov ax,data
mov ds,ax
mov bx,0
mov bp,0
mov cx,21
s0:mov ax,[bx]
mov word ptr es:[bp],ax
mov ax,[bx+2]
mov word ptr es:[bp+2],ax
add bx,4
add bp,10H
loop s0
mov cx,21
mov bp,0
s1:mov ax,[bx]
mov word ptr es:[bp+5],ax
mov ax,[bx+2]
mov word ptr es:[bp+7],ax
add bx,4
add bp,10H
loop s1
mov cx,21
mov bp,0
s2:mov ax,[bx]
mov word ptr es:[bp+0AH],ax
add bx,2
add bp,10H
loop s2
mov cx,21
mov bp,0
s3:push cx
mov ax,es:[bp+5]
mov dx,es:[bp+7]
mov cx,es:[bp+0aH]
call divdw
mov word ptr es:[bp+0cH],ax
mov word ptr es:[bp+0eH],dx
add bp,10H
pop cx
loop s3
mov cx,21
mov ax,table
mov es,ax
mov ax,temp
mov ds,ax
mov bx,0
mov di,0
show_all: push cx
mov ax,es:[bx]
mov ds:[0],ax
mov ax,es:[bx+2]
mov ds:[2],ax
mov byte ptr ds:[4],0
mov ax,di
mov dh,al
mov dl,0
mov cl,2
mov si,0
call show_str
mov ax,es:[bx+5]
mov dx,es:[bx+7]
mov si,0
call dtoc
mov ax,di
mov dh,al
mov dl,10
mov cl,2
call show_str
mov ax,es:[bx+0aH]
mov dx,0
mov si,0
call dtoc
mov ax,di
mov dh,al
mov dl,30
mov cl,2
call show_str
mov ax,es:[bx+0ch]
mov dx,es:[bx+0eh]
mov si,0
call dtoc
mov ax,di
mov dh,al
mov dl,50
mov cl,2
call show_str
add bx,10H
inc di
pop cx
loop show_all
mov ax,4c00h
int 21h
show_str: push ax
push cx
push si
push di
push es
push bp
mov ax,0B800h
mov es,ax
and ax,0
mov al,80
mul dh
mov dh,0
add ax,dx
add ax,ax
mov bp,ax
mov di,0
mov al,cl
mov ch,0
show:mov cl,ds:[si]
jcxz ok
mov es:[bp+di],cl
mov es:[bp+di+1],al
inc si
add di,2
jmp short show
ok:pop bp
pop es
pop di
pop si
pop cx
pop ax
ret
divdw: push bx
push ax
mov ax,dx
mov dx,0
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
pop bx
ret
dtoc:push ax
push bx
push si
push cx
push dx
push di
mov cx,10
mov di,0
d0:call divdw
push cx
inc di
mov cx,ax
jcxz d1
mov cx,10
jmp short d0
d1:mov cx,di
d2:pop ax
dec cx
add ax,30H
mov ds:[si],ax
inc si
jcxz d3
jmp short d2
d3:pop di
pop dx
pop cx
pop si
pop bx
pop ax
ret
code ends
end start
第七章,写垃圾了,只能将就着先这样写着