| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
assume cs:code,ds:data,es:table,ss:stack 
 
data segment  
        ;data 
        db '1975','1976','1977','1978','1979','1980','1982','1982','1983' 
        db '1984','1985','1986','1987','1988','1989','1990','1991','1992' 
        db '1993','1994','1995' 
        ;21年的字符串 
         
        ;data + 54H (84) 
        dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 
        dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 
        ;21个年份公司的总收入 
         
        ;data + A8H(168) 
        dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 
        dw 11542,14430,15257,17800 
        ;21个年份的雇员数 
data ends 
 
stack segment 
        dw 16 dup(0) 
stack ends; 
 
table segment 
        ;                        年份 收入 雇员 人均收入 
        db 21 dup ('year summ ne ?? ') 
table ends 
 
code segment 
start: 
                mov ax,data 
                mov ds,ax                        ;初始化数据段 
                mov ax,table 
                mov es,ax                        ;es指向table段地址 
                mov ax,stack                 
                mov ss,ax 
                mov sp,16 
 
                mov bx,0                         ;bx作为data段四字节数据的索引 (每次增加4) 
                mov si,0                         ;si作为data段2字节数据的索引 (每次增加2) 
                mov bp,0                        ;bp作为table段的索引 (table每次增加16) 
                mov cx,21 
        s:         
                ;拷贝 
                ;table中每年的数据相隔F个字节 
                ;table中同一年数据头索引 year(0)-summ(5)-ne(A)-??(D) 
                ;                        长度(byte)          4       4       2      2         
                mov ax,ds:[bx]                                ;拷贝年份字符串 4 byte 每次2byte 
                mov es:[bp],ax 
                mov ax,ds:[bx+2H]         
                mov es:[bp+2H],ax         
                 
                mov ax,ds:[bx+54H]                        ;拷贝收入字符串 dd=4byte 每次2byte 
                mov es:[bp+5H],ax 
                mov ax,ds:[bx+56H] 
                mov es:[bp+5H+2H],ax         
                 
                mov ax,ds:[si+0A8H]         
                mov es:[bp+0AH],ax                        ;拷贝雇员字符串        dw=2byte  
                 
                ;除法计算会改变bx的值,先将bx入栈 
                push bx 
                ;计算平均收入 
                ;load收入(4字节) 
                mov ax,ds:[bx+54H] 
                mov dx,ds:[bx+56H] 
                ;load人数(2字节) 
                mov bx,ds:[si+0A8H] 
                div bx 
                 
                ;bx出栈 
                pop bx 
                ;保存计算结果(取整)(2字节) 
                mov es:[bp+0DH],AX 
                 
                add bx,4H                         
                add si,2H 
                add bp,10H                         
                loop s 
 
                mov ax,4c00H 
                int 21H 
code ends 
end start 
 
         |   
 
 
 
 |