| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 humfrey 于 2019-9-23 10:22 编辑  
 
学习两三周了,第一次用周末的时间在家写了个作业。。 
把简单的问题做复杂,就是为了体验一下不同的指令。。。   
 
assume         cs:codeseg 
data        segment 
        db '1975','1976','1977','1978','1979','1980','1981','1982','1983' 
        db '1984','1985','1986','1987','1988','1988','1990','1991','1992' 
        db '1993','1994','1995' 
        ;以上是21年的21个字符串 
         
        dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 
        dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 
        ;以上是表示21公司总收入的21个dword型数据 
         
        dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 
        dw 11542,14430,15257,17800 
        ;以上表示21年公司雇员人数的21个word型数据 
data        ends 
 
table segment 
        db 21 dup ('year summ ne ?? ') 
table        ends 
 
codeseg segment 
start:        mov ax, data 
                mov ds, ax 
                ;define stack segment 
                add ax, 00dh 
                mov ss, ax 
                mov sp, 010h 
                mov byte ptr ds:[0d2h], 2        ;保存一个除数2 
                 
                mov ax, table 
                mov es, ax 
                 
                mov bx, 0 
                mov si, 0 
                mov di, 0                 
                 
                mov cx, 21 
        s:        push cx         
                mov cx, 4 
        sy:        mov ax,ds:[si] 
                mov ah, ds:[si+054h] 
                mov es:[bx+di], ax 
                mov es:[bx+di+5],ah 
                inc di 
                inc si 
                loop        sy                        ;Year loop 
                mov di, 0 
                 
                mov byte ptr es:[bx+4], ' ' 
                mov byte ptr es:[bx+9], ' ' 
                 
                mov ax, si 
                div byte ptr ds:[0d2h] 
                mov di, ax 
                mov ax, ds:[di+0A6h]                 
                mov di, 0 
                mov es:[bx+0ah], ax 
                mov byte ptr es:[bx+0ch], ' ' 
 
                mov ax, es:[bx+5] 
                mov dx, es:[bx+7] 
                div word ptr es:[bx+0ah] 
                mov es:[bx+0dh],ax 
                mov byte ptr es:[bx+0fh], ' '                 
         
                add bx, 010h 
                pop cx 
                loop s 
                                 
                mov ax, 4c00h 
                int 21h 
                 
        codeseg ends 
end start 
 
 
 
 
 |   
 
 
 
 |