版权声明:本文为 gfson
原创文章,转载请注明出处。
注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢。
8.1 bx、si、di 和 bp
8.2 指令执行前数据的位置
8.3 寻址方式
8.4 处理数据的长度
8.5 div 指令
8.6 伪指令 db、dw、dd
- db 定义字节型数据。
- dw 定义字型数据。
- dd 定义双字节型数据。
8.7 dup
8.8 实验 7
- 答案:
assume cs:codesg,ds:data,es:table
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'
;以上是表示21年的21个字符串
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;以上是表示21年公司总收的21个dword型数据
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,45257,17800
;以上是表示21年公司雇员人数的21个word型数据
data ends
table segment
db 21 dup('year summ ne ?? ')
table ends
codesg segment
start:
mov ax,data
mov ds,ax
mov si,0
mov ax,table
mov es,ax
mov di,0
mov cx,21
mov bx,0
s:
mov ax,ds:[si] ;年份转送
mov es:[di],ax
mov ax,ds:[si+2]
mov es:[di+2],ax
mov ax,ds:[si+84] ;收入转送
mov es:[di+5],ax
mov dx,ds:[si+84+2]
mov es:[di+7],dx
push cx ;保护cx
mov cx,ds:[84+84+bx] ;雇员数转送
mov es:[di+0ah],cx
div cx ;计算人均收入
pop cx
mov es:[di+0dh],ax ;人均收入转送
add si,4
add bx,2
add di,16
loop s
mov ax,4c00h
int 21h
codesg ends
end start