王爽汇编——实验七

这一个咋一看很唬人,是前面知识的大杂烩,也是看了一些大神的代码才看懂

其实也就是那几个步骤,但是比较复杂

目录

1.对整个data段进行定位,取数。

2.对table段进行定位

3.总代码展示

 ​


1:对整个data段进行定位,取数。

        但这里的问题是data段里又分了好多种信息,所以要多用一个寄存器来分别对这些信息定位,格式可以用ds:0H,ds:54H,ds:A8H分别定位到年份,收入,雇员三个子段。

        

        现在又来了个问题,这每个子段又是一个个小段,比如年份里就有21年,我们每次要取的都是其中之一。所以还需要另外一个寄存器帮助我们确定当年具体是在哪一年,我选了si寄存器

        上面是将bx的值乘4赋给si寄存器,这个可以帮我们知道如今到了哪一年。

        比如,最开始,bx=0;那么si=4*bx也等于0,那说明我在的年份在ds:0H[si],也即ds:0H[0]处,为1975,用两个寄存器就可以将其取出;当第二轮循环,bx=1时,si=4,那就说明年份的起始地址为ds:0H[4] ,1976,同样,用两个寄存器可将其取出

2.对table段进行定位

table段的定位可以放在循环中,因为table每一行是16个字节,这样我们对其段地址加上bx,也就是第几年的时候,就可以自动完成换行了。

比如说,一开始bx=0,那es = table +0,就是在table的第一行

               随后,bx=1, es = table + 1,因为es是段寄存器,加一就代表着真正地地址加了16,也就完成了换行,之后的可类比这个

在对table的每一行完成定位后,还有每一行的内容需要定位,因为是固定的,所以只需要用es:0H[0]和es:0H[1]就可以表示四字节的年份

可以参考该代码段,下面两行

 3.总代码展示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值