
王爽汇编+26
王爽汇编学习继续接上,接着上次我们继续学习loop指令和bx寄存器的配合使用
下面有道思考题
写一段程序将ffff:0 – ffff:b这段内存中的数据累加后存到dx寄存器中。
这道题有以下几点需要思考:
1,8086cpu是不支持将8位数直接传送到dx这样的16位寄存器中的
2,dx寄存器是16位,最大值是ffff,能否存放的下这段内存单元中的数据的累加值
思考加分析就能知道dx寄存器完全存的下这段内存数据的累加值。试想一个12个内存单元,每个单元最大是ff,假设碰巧12个单元都是ff那无非也就是12个ff相加,既12乘以255,12*255=3060,十六进制是0xbf4,远不及0xffff,dx能存储最大值是0xffff
下面开始展示我的代码,我为了方便计算,把FFFF:0到FFFF:b这12个内存单元中分别按照顺序写入了1-12

编译链接过程直接省略了
下面进行调试

上图是先看看加载到内存中的代码,接下来我们让程序断在填充完ffff:0到ffff:b这段内存后面

可以看到这段连续的内存单元已经被填充了12个数,这12个数分别是1到12。接下来继续走完累加的代码看看最终dx中的结果是多少

我这里是直接用p指令执行完循环的代码,可以看到上图中执行完后dx的寄存器的内容是0x4e,十进制是78。用python也可以验证一下

看来是正确的。