# 2020-09-30 #「汇编语言 第 3 版 王爽」- 参考答案:实验 7 寻址方式在结构化数据访问中的应用
assume cs:codesg datasg segment ; 年份 21x4=84, 0-83 db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995' ; 收入 21x4=84, 84-167 dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ; 人数 21x2=42, 168-20H9 dw 3,7,9,13,28,38,130,220H,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 datasg ends table segment db 21 dup('year summ ne ?? ') table ends codesg segment start: ; 21 条数据,21 次循环 mov cx, 21 ; 用做下标,获取数据 mov si, 0 mov di, 0 ; 数据写入 table 段 mov ax, table mov es, ax ; 每次循环都要取年份、收入、人数数据 mov ax, datasg mov ds, ax ; 年份 => ds:[0],收入 => ds:[84],人数 => ds:[168] loop_01: ; 写入年份 mov ax, ds:0[si] mov es:[0], ax mov ax, ds:0[si+2] mov es:[2], ax ; 写入空格 mov al, 20H mov es:[4], al ; 写入收入 ; 与计算收入时,一起写入 ; 写入空格 mov al, 20H mov es:[9], al ; 写入人数 ; 与计算收入时,一起写入 ; 写入空格 mov al, 20H mov es:[0CH], al ; 写入收入、人数、平均收入 mov ax, ds:84[si] mov es:[5], ax mov dx, ds:84[si+2] mov es:[7], dx mov bx, ds:168[di] mov es:[0AH], bx div bx ; 前面已经将除数、被除数放入相应的寄存器 mov es:[0DH], ax ; 写入空格 mov al, 20H mov es:[0FH], al ; 调整变量,进入下一轮循环 mov ax, es inc ax mov es, ax add si, 4 add di, 2 loop loop_01 mov ax, 4c00h int 21h codesg ends end start
参考文献
K4NZ / 参考答案:实验 7 寻址方式在结构化数据访问中的应用
CSDN/汇编语言王爽第三版答案
百度文库/汇编语言实验答案 (王爽)