汇编语言(王爽)8章实验七

下面的程序中,已经定义好了这些数据:

assume cs:codesg
datasg 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'
    ;year
    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    ;income
    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    dw 11542,14430,15257,17800
    ;number
datasg ends
table segment
    db 21 dup('year summ ne ?? ')
table ends

编程,将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。
在这里插入图片描述

assume ds:data,cs:code,es:table
data segment
	db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984'
	db '1985','1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'
	dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
	dd 345980,590827,803530,1183000,184300,2759000,3753000,469000,5937000
	dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226,11542,14430,15257,17800
data ends
//;21*4+21*4+21*2=210
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
	mov cx,21
	mov si,0
	mov di,0
	s:
		mov bx,ds:[168+di]
		mov es:[10+si],bx		;雇员数量放入table ne
		/*保存此时的di到es:[150h],因为只有21条数据,每条16byte,
		所以es只用了[0:014fH].因为自己写代码时发现变量名似乎不够了用了这个方法,
		其他博客有用3个变量名不需要额外空间的写法*/
		mov es:[150h],di		
		
		add di,di				//168以前每次+4,168以后每次+2,所以需要两个di
		
		mov bx,ds:[0+di]		;年份数据放入table year
		mov es:[0+si],bx
		
		mov bx,ds:[2+di]		;年份数据放入table year
		mov es:[2+si],bx
		
		mov bx,ds:[84+di]		;收入数据放入table summ
		mov es:[5+si],bx
		
		mov bx,ds:[86+di]		;收入数据放入table summ
		mov es:[7+si],bx
		
		mov dx,ds:[86+di]
		mov ax,ds:[84+di]
		mov di,es:[150h]		;读取原来的di

		div word ptr ds:[168+di]
		mov es:[13+si],ax		;平均值放入table 
			
		add si,10h
		add di,2
	loop s
	mov ax,4c00h
	int 21h

code ends
end start

注意div word ptr ds:[168+di],一开始写成div ds:[168+di],编译时报错长度有问题,
如果写成div byte ptr ds:[168+di],除数只有8位,那么余数和商都保存在ax。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值