1 assume cs:code ;将数据格式化存放在制定内存中.大作业
2
3 data segment
4 db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
5 db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
6 db '1993','1994','1995'
7 ;以上是表示21年的21个字符串
8
9 dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
10 dd 345980,590827,803530,1183000,841000,2759000,3753000,4649000,5937000
11 ;以上是表示21年公司总收入的21个dword型数据
12
13 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
14 dw 11542,14430,15257,17800
15 ;以上是表示21年公司雇佣人数的21个word型数据
16 data ends
17
18 table segment
19 db 21 dup ('year summ ne ?? ')
20 table ends
21
22 stack segment
23 dw 0
24 stack ends
25
26 code segment
27 starts:
28 mov ax,table
29 mov es,ax ;将table段地址给了es
30 mov ax,data
31 mov ds,ax ;将data数据段的地址给了ds
32 mov ax,stack
33 mov ss,ax ;将用于存放cx临时的栈段地址给ss
34 mov sp,10H
35
36 mov bx,0 ;bx和ds搭配
37 mov bp,0 ;bp和es搭配
38 mov di,0 ;di作为table段内偏移地址使用
39 ;格式化前两段(年份和收入)
40 mov cx,2
41 s1:
42 push cx ;压栈
43 mov cx,15H ;设置循环次数21次
44 s2:
45 mov ax,ds:[bx]
46 mov es:[bp+di],ax
47 mov ax,ds:2[bx]
48 mov es:2[bp+di],ax
49 add bp,10H
50 add bx,4
51 loop s2
52
53 add di,5 ;指向table段第二项内容
54 mov bp,0
55 pop cx
56 loop s1
57
58
59 ;格式化第三段(雇员数)代码
60 mov cx,15H
61 mov di,0aH
62 mov bp,0
63 s3:
64 mov ax,ds:[bx]
65 mov es:[bp+di],ax
66 add bp,10H
67 add bx,2
68 loop s3
69
70
71 ;格式化第四段,因为没有数据,所以不用格式化
72
73 mov ax,4c00H
74 int 21H
75
76
77 code ends
78
79 end starts