实验7 寻址方式在结构化数据访问中的应用
assume cs:codesg
data segment
db '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983'
db '1984', '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1991', '1992'
db '1993', '1994', '1995'
//以上表示21个年份,0~53H
dd 16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479, 140417, 197514
dd 345980, 5907827, 803530, 1183000, 1843000, 2759000, 3753000, 4649000, 5937000
//以上表示21个年份的总收入, 54H~0A7H
dw 3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258, 2793, 4037, 5635, 8226
dw 11542, 14430, 15257, 17800
//以上表示21个年份的雇员人数, 0A8H~0D1H
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 //设置es为table的段地址
mov bx, 0
mov si, 0
mov di, 0
mov cx, 21 //循环次数为21
s: mov ax, [bx]
mov es:[di], ax
mov ax, [bx+2]
mov es:[di+2], ax //存放年份
mov ax, [bx+54H]
mov dx, [bx+56H]
mov es:[5H+di], ax
mov es:[7H+di], dx //存放年收入
mov ax, [si+0A8H]
mov es:[0AH+di], ax //存放雇佣人数
mov ax, [54H+bx]
mov dx, [56H+bx]
div word ptr es:[0AH+di]
mov word ptr es:[0DH+di], ax //平均工资
add bx, 4
add si, 2
add di, 16
loop s
mov ax, 4C00H
int 21H
code ends
end start