王爽《汇编语言》实验7

      DATAS  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
       DATAS  ENDS
       
      TABLES  SEGMENT
              DB        21 DUP ('year summ ne ?? ')
      TABLES  ENDS
       
      STACKS  SEGMENT   STACK
              DW        8 DUP(0)
      STACKS  ENDS
             
       CODES  SEGMENT
              ASSUME    CS:CODES,DS:DATAS
      START:  MOV       AX,DATAS
              MOV       DS,AX
              MOV       AX,TABLES
              MOV       ES,AX
              
              
              MOV       BX,0
              MOV       BP,0
              MOV       DX,0
              MOV       CX,21

         S1:  PUSH      CX          ;insert the years to the table
              MOV       SI,0
              MOV       DI,0
              MOV       CX,4

         S2:  MOV       AL,DS:[BP+SI]           ;DS:0开始逐个提取年份数字
              MOV       ES:[BX+SI],AL           ;ES:0即为TALBE:0
              INC       SI
              LOOP      S2

              XOR       AX,AX
              MOV       AX,DS:[BP+DI+54H]
              MOV       DX,DS:[BP+DI+56H]
              MOV       ES:[BX+5],AX
              MOV       ES:[BX+7],DX
              
              ADD       BX,10H      ;表格下一行差10H字节
              ADD       BP,4
              ADD       DI,2
                           
              POP       CX
              LOOP      S1
        
              MOV       AX,0
              MOV       BX,0
              MOV       BP,0
              MOV       CX,21
              
         S3:  MOV       AX,DS:[BP+0A8H]         ;雇员数据首地址DS:0A8H
              MOV       ES:[BX+0AH],AX          ;雇员人数在表格区0AH字节处
              
              MOV       AX,ES:[BX+5]            ;从表格中取出收入数据低字放入AX
              MOV       DX,ES:[BX+7]            ;从表格中取出收入数据高字放入DX

              DIV       WORD PTR ES:[BX+0AH]    ;计算人均收入
              MOV       ES:[BX+0DH],AX          ;将ax中的商存入table的0EH处

              ADD       BX,10H
              ADD       BP,2
              LOOP      S3
 
              MOV       AX,4C00H
              INT       21H
       CODES  ENDS
              END       START

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值