|
发表于 2012-1-2 03:14:17
|
显示全部楼层
我的代码 比较长:(
assume cs:dm,ds:sj,ss:dz
sj segment
db '1975','1976','1977','1978'
db '1979','1980','1981','1982'
db '1983','1984','1985','1986'
db '1987','1988','1989','1990'
db '1991','1992','1993','1994'
db '1995'
dd 16,22,382,1356,2390,8000,18000,24486,50065,97479,140417,197514
dd 345980,890827,803530,1183000,1743000,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
sj ends
sjb segment
db 21 dup ('year summ ne ?? ')
sjb ends
dz segment
db 0,0,0
dz ends
dm segment
ks: mov ax,sj
mov ds,ax
mov ax,dz
mov ss,ax
mov sp,16
mov ax,sjb
mov es,ax
mov bx,0 ;初始化行数变量
mov bp,84 ;summ起始地址
mov cx,21 ;初始化S计数器
mov si,0 ;初始化源数据偏移
s: push cx ;S计数器保护
mov cx,2 ;初始化S1计数器
mov di,0 ;初始化目的数据偏移
s1: mov ax,[si] ;读入数据year
mov es:[bx+di],ax ;写入数据year
mov ax,ds:[bp+si] ;读入数据summ
mov es:[bx+5+di],ax ;写入数据summ
add si,2 ;源数据高位字节偏移
add di,2 ;目的数据高位字节偏移
loop s1
add bx,16 ;换行
pop cx ;s计数器还原
loop s
add bp,84 ;人数起始地址
mov bx,0 ;初始化行数变量
mov si,0 ;初始化源数据偏移
mov cx,21 ;初始化S2计数器
s2: mov ax,ds:[bp+si] ;读入人数数据
mov es:[bx+10],ax ;写入人数数据
add si,2 ;下一个源数据偏移
add bx,16 ;换行
loop s2
mov bx,0 ;初始化行数变量
mov cx,21 ;初始化S3计数器
s3: mov dx,es:[bx+7] ;高位被除数
mov ax,es:[bx+5] ;低位被除数
mov si,es:[bx+10] ;除数
div si
mov es:[bx+13],ax ;写入商
add bx,16 ;换行
loop s3
mov ax,4c00h
int 21h
dm ends
end ks |
|