任务

Power idea 公司从1975年成立一直到1995年的基本情况如下。

年份 收入(千美元) 雇员(人) 人均收入(千美元)
1975 16 3 ?
1975 22 7 ?
1975 382 9 ?
1975 1356 13 ?
1975 2390 28 ?
1975 8000 38 ?
... ?
1995 5937000 17800 ?

下面的程序中, 已经定义好了这些数据:

assume cs:code

data segment
    db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
    db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
    db '1993','1994','1995'

    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    dd 345980,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
    dw 11542,14430,25257,17800
data ends

table segment
    db 21 dup ('year summ ne ?? ')
table ends

编程, 将data段中的数据按如下格式写入到table段中, 并计算21年中的人均收入(取整), 结果也按照下面的格式保存在table段中。

回答

assume cs:code

data segment
    db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
    db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
    db '1993','1994','1995'

    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    dd 345980,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
    dw 11542,14430,25257,17800
data 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

    mov bx,0
    mov di,0
    mov si,0
    mov cx,21
s:
    mov ax,ds:[0].0[bx]  ; 年份
    mov es:[si].0[0],ax
    mov ax,ds:[0].2[bx]
    mov es:[si].2[0],ax

    mov es:[si].4[0],' ' ; 空格

    mov ax,ds:[84].0[bx] ; 收入
    mov es:[si].5[0],ax
    mov ax,ds:[84].2[bx]
    mov es:[si].5[2],ax

    mov byte ptr es:[si].5[4],' ' ; 空格

    mov ax,ds:168[di]       ; 员工数量
    mov es:[si].0ah[0],ax

    mov byte ptr es:[si].0ah[2],' ' ; 空格

    mov ax,ds:[84].0[bx]  ; 总收入低位放入ax
    mov dx,ds:[84].2[bx]  ; 总收入高位放入dx
    div word ptr ds:168[di] ; 计算人均收入

    mov es:[si].0dh[0],ax   ; 商放入table中es:[si+D]字型单元

    mov byte ptr es:[si].0fh[0],' ' ; 空格

    add bx,4
    add di,2
    add si,10h
    loop s

code ends

end start