汇编语言(第三版)实验七

分析:考虑到table表有21条数据,每条数据有4个成员,年份(4个字节),收入(4个字节),
雇员数(2个字节),人均收入(2个字节),加上中间的空格,共16个字节
用bp+si+idata 在data段中定位年份和收入
用di+si 在data段中定位雇员数
用bx+idata 在es段定位数据 (注:es就是table)
采用循环结构,每循环一次就填完一条数据
循环21次,正好填完
每填完一条数据,bx+10h,定位下一条数据的首地址
bp+4,定位下一个年份和收入
di+2 定位下一个雇员数数据

assume cs:code,ds:data,ss:stack
table segment 
    db 21 dup('year summ ne ?? ') ;16个字节 
    ;年份(dd) 收入(dd) 雇员数(dw) 人均收入(dw) ;
table ends
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个字符串dword  84个字节
    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    ; 21年的公司总收入dword型数据  84个字节
    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    dw 11542,14430,15257,17800
    ; 21年公司雇员人数的21个word型数据
data ends
stack segment
    dw 0,0,0,0,0,0,0,0
stack ends
code segment 
    start: mov ax,data
           mov ds,ax
           mov ax,table
           mov es,ax
           mov ax,stack
           mov ss,ax
           mov sp,10h
           
           mov cx,21
           mov bx,0
           mov bp,0
           mov di,0
           mov si,0
        
        s: push cx
        
           ;年份           
           mov cx,2
           mov si,0                      
       s1: mov ax,ds:[bp+si]
           mov es:[bx+si],ax
           add si,2
           loop s1
           
           ;收入
           mov cx,2
           mov si,0
       s2: mov ax,ds:[84+bp+si]
           mov es:[bx+si+5],ax
           add si,2
           loop s2
          
           ;雇员
           mov ax,ds:[di+168]
           mov es:[bx+10],ax
           
           ;人均收入
           mov ax,es:[bx+5]
           mov dx,es:[bx+7]
           div word ptr es:[bx+10]
           mov es:[bx+0dh],ax
           
           add di,2
           add bp,4
           add bx,10h
           pop cx          
           loop s      
code ends
end start
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值