预备知识:
(1)寻址方式 《汇编语言》P169
(2)div指令
被除数 dx + ax,除数 bx ,商 ax,dx 余数;
(3)dd :双字数据
(4)dup :重复赋值指令
实验任务:结构化存储
Source Code:

assume cs:codesg, ds:data, es:table, ss:stack data segment ;21 year 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 dw 8226,11542,14430,15257,17800 data ends table segment db 21 dup('year summ ne ?? ') table ends stack segment db 16 dup(0) stack ends codesg segment start: mov ax,data ;数据源 mov ds,ax mov bx,0 mov si,84 mov di,168 mov ax,table ;目标地址 mov es,ax mov bp,0 mov ax,stack ;栈段 mov ss,ax mov sp,16 mov cx,21 s: mov ax,[bx+0] mov es:[bp+0],ax mov ax,[bx+2] mov es:[bp+2],ax ;年份 mov byte ptr es:[bp+4],20h mov ax,[si] mov es:[bp+5],ax mov ax,[si+2] mov es:[bp+7],ax ;收入 mov byte ptr es:[bp+9],20h mov ax,[di] mov es:[bp+10],ax mov byte ptr es:[bp+12],20h ;员工人数 mov ax,[si] mov dx,[si+2] div word ptr [di] mov es:[bp+13],ax mov byte ptr es:[bp+15],20h add bx,4 add si,4 add di,2 add bp,16 loop s mov ax,4c00H int 21H codesg ends end start
原始数据:
运行结果:
但是你会发现,收入,人数,人均收入都显示不了,是因为,收入是4个字节,分开了,在数据段中就有体现;