| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
assume cs:codesg,ds:datasg 
datasg segment 
        db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984' 
        db '1985','1986','1987','1988','1989','1990','1991','1992','1993','1994' 
        db '1995' 
        dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980 
        dd 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,11542,14430,15257,17800 
datasg ends 
 
table segment 
        db 21 dup ('year summ ne ?? ') 
table ends 
 
codesg segment 
start: 
        mov ax,datasg 
        mov ds,ax 
        mov ax,table 
        mov es,ax 
        mov bx,0                                                ;第1个年份在ds中的偏移地址,长度4个字节 
        mov di,0                                                ;table表中每行的首个内存单元偏移地址,长度16个字节 
        mov si,168                                        ;员工数第1个数字在ds中的偏移地址,长度2个字节 
        mov cx,21                                        ;循环21次 
          s:mov ax,[bx]                                ;取出每个年份的前2个字符存入AX 
                mov es:[di],ax                                ;将年份前2个字符写入table表中每行的第1、2位置 
                mov ax,[bx+2]                        ;取出每个年份的后2个字符存入AX 
                mov es:[di+2],ax                        ;将年份后2个字符写入table表中每行的第3、4位置                 
                mov ax,[bx+84]                        ;取出每个总收入低16位存入AX 
                mov es:[di+5],ax                        ;将每个总收入低16位写入table表中每行的第5、6位置         
                mov dx,[bx+86]                        ;取出每个总收入高16位存入DX 
                mov es:[di+7],dx                        ;将每个总收入商16位写入table表中每行的第7、8位置 
                div word ptr[si]                                ;计算平均收入,商在AX中 
                mov es:[di+13],ax                        ;将平均收入的商写入table表中每行的第13、14位置 
                mov ax,[si]                                ;取出每个员工数量值存入AX 
                mov es:[di+10],ax                        ;将每个员工数量值写入table表中每行的第10、11位置 
                add di,16                                        ;定位table表下一行首个内存单元的偏移地址 
                add bx,4                                        ;定位DS中下一个年份内存单元的偏移地址 
                add si,2                                        ;定位DS中下一个员工数内存单元的偏移地址 
                loop s 
        mov ax,4c00h 
        int 21h 
         
codesg ends 
end start 
 
个人愚见,请多指教! |   
 
 
 
 |