发布于 2008-05-09 09:04:31
0楼
不是这么解释的。
AC0超出255并不能造成MOV_DW指令的*AC1溢出。
问题在于:
MOVB VB14, AC0
MUL 4, AC0
前一条4指令把VB14装入到AC0的低8位,第二条指令把AC0当作16位数来用,那么AC0的第8-15位是什么值?未知!所以第二条指令MUL实际上是用4乘一个未知数,后续生成的指针,就可能指到天国去了。
那么楼主在这两条指令前加了一句movw 0,ac0,实际是把AC0的第0-15位均清零,所以当AC0由8位的VB14值升到MUL的16位值时,第8-15位有了确的值(0),你后续的指针值才是可预知的。