;by:double; date:2009-09-19; ver:0.1 assume cs:codesg,ds:datasg,es:tablesg datasg segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985' db '1986','1987','1988','1989','1990','1991','1992','1993','1994','1995' ;year dd 66,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,183000,1843000,2759000,3753000,4649000,5937000 ;total income dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 ;employers datasg ends tablesg segment db 21 dup ('year summ ee ?? ') tablese segment codesg segment start: mov ax,datasg mov ds,ax mov ax,tablesg mov es,ax mov si,0 mov bx,0 mov di,0 mov cx,21 s: mov al,[si+0] mov es:[di+0],al mov al,0[si+1] mov es:[di+1],al mov al,0[si+2] mov es:[di+2],al mov al,0[si+3] mov es:[di+3],al ;move year mov ax,ds:[84+si+0] mov dx,ds:[84+si+2] mov es:[di+5],ax mov es:[di+7],dx ;move company total income.dword type. mov ax,ds:[168+bx] mov es:[di+10],ax ;move employers. mov ax,ds:[84+si+0] ;restore ax. div word ptr ds:[168+bx] ;word ptr type memory, point it out. mov es:[di+13],ax ;move average income. add si,4 add bx,2 add di,16 loop s mov ax,4c00h int 21h codesg ends end start