汇编语言实验七(王爽)新方法

在这里插入图片描述
在这里插入图片描述
这里offset salary就是得到收入数据在data段里的偏移地址
大概思路是先将1995年的数据放进table段里,照着每个字段放进table,模拟这一过程,再思考怎么利用bx,bp循环

assume cs:codesg

data segment
year    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个字符串
salary  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型数据
emp     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 ax,table
        mov es,ax

        mov cx,21
        mov bx,0
        mov bp,0
        mov si,0
        mov di,0


s:      mov ax,ds:[bp]
        mov es:[si],ax
        add si,2
        mov ax,ds:[bp+2]
        mov es:[si],ax;year

        add si,3;(si)=(si)+3=2+3 到收入第一字节
        mov di,offset salary;工资数据偏移地址
        mov ax,ds:[bp+di]
        mov es:[si],ax
        add si,2
        mov ax,ds:[bp+di+2]
        mov es:[si],ax;salary

        add si,3;si移到emp第一字节上
        mov di,offset emp;雇员偏移地址
        mov ax,ds:[bx+di]
        mov es:[si],ax;emp

        add si,3
        mov di,offset salary;工资数据偏移地址        
        mov ax,ds:[bp+di];被除数低16位
        mov dx,ds:[bp+di+2];被除数高16位
        mov di,offset emp;雇员偏移地址
        div word ptr ds:[bx+di];除数
        mov es:[si],ax;商赋值

        add si,3;下一行开头
        add bp,4;下一个年份,收入,自然 前进4
        add bx,2;下一个雇员数据,右移2个字节
        loop s

        mov ax,4c00h
        int 21h
codesg ends


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值