汇编语言第四版 实验七 寻址方式在结构化数据访问中的应用

参照教材P173 Power idea公司从1975年成立一直到1995年的基本情况编程,将data段中的数据按教材中的格式写入到table段中,并计算21年中的人均收入(取整),结果也按照所给的格式保存在table段中。

思路:分别找出year, summ, ne在data段中的偏移地址,然后通过循环赋值,顺便计算人均收入。

一个 year 4个字节,开始的偏移地址为0

一个suum 4个字节,开始的偏移地址在前面所有year之后所以为21*4=84

一个ne为2个字节,开始的偏移地址在前面所有的year和suum之后,所以为42*4=168

接下来就好办了,代码如下

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'	
	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,8226
	dw 11542,14430,15257,17800	
data ends

table segment
	db 21 dup ('year summ ne ?? ')
table ends           
            
codesg segment
    start:
    
    mov ax,data
    mov es,ax
    
    mov bp,0
    mov si,84
    mov di,168
    
     
    mov ax,table
    mov ds,ax
    mov bx,0
      
      
    mov cx,21
    s:
    mov ax,es:[bp]
    mov ds:[bx],ax
    mov ax,es:[bp+2]
    mov ds:[bx+2],ax
    
    mov ax,es:[si]
    mov ds:[bx+5],ax
    mov ax,es:[si+2]
    mov ds:[bx+7],ax
    
    mov ax,es:[di]
    mov mov ds:[bx+0AH],ax
    
    mov ax,ds:[bx+5]
    mov dx,ds:[bx+7]
    div word ptr ds:[bx+0AH]
    mov ds:[bx+0DH],ax
    
    
    add bx,10H
    add bp,4h
    add si,4h
    add di,2h
    loop s
    
    mov ax,4c00h
    int 21h
codesg ends
end start

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值