为什么mov cx的循环次数变成地址了?
新手刚学汇编,写了个汇编程序,DEBUG调试发现没有循环的,U了一下发现源程序中的mov cx,8变成地址了,这地址是源程序中数据段d的地址,哪位高手告诉我一下,为什么咧?怎么解决?谢谢 能@小甲鱼 不 额,@不了的,,, 你没发现你的cx值还是58?最好把下一步的值再传上来看看 oggplay 发表于 2014-2-16 09:10你没发现你的cx值还是58?最好把下一步的值再传上来看看
下一步就是变成那个地址啦,原本是应该变成循环次数8的 你从标号S处开始的指令也不正确啊!!!偏移地址0018开始到后面的指令与你的源代码都不一样啊!所以我怀疑你的源码本身就有问题!或者其他的原因,我还没有能力直接说明具体原因,要不你附上源码截图吧! HB无影 发表于 2014-2-16 12:09
你从标号S处开始的指令也不正确啊!!!偏移地址0018开始到后面的指令与你的源代码都不一样啊!所以我怀疑你 ...
左边就是所有的源代码了,就是从mov cx,8开始后面都不对了 以后贴源码用文本,不要用图片,否则,大家有心帮你测试,但是谁愿意照图片抄你的源码?
mov ax,d 对应mov ax,142B是对的,142A是B 段,1429是A段,你每个段都是8个字节,但是一个段最小都是16个字节,段地址1429+10个字节就是142A了,段地址142A+10个字节就是142B了,所以段地址很清楚,没问题!
MOV SP,48就不对,换成8H。栈的最底部,底部实际为6H,但是栈是空的,空栈的话,那么SP就在底部下面一个,所以是8H
你的S段,写的也不对,首先,Mov ax,ds:这样是不对的,不匹配,ax是字型,后面是字节型。在后面操作是字节型数据相加,但是你用PUSH入栈就是字型的,那么栈就会溢出,覆盖掉B段,数据可能不准确
CX变成非8数字,这个我也不明白哦!按道理不该这样的! tk2003 发表于 2014-2-16 15:15
以后贴源码用文本,不要用图片,否则,大家有心帮你测试,但是谁愿意照图片抄你的源码?
mov ax,d 对应m ...
嗯,下次不发图片了,记住了。
刚开始我以为栈sp要算上之前a,b段的16字节,再加上d 段所以就48了,现在懂了,非常感谢,还有后面的如果不用ax 用al ,可al 不能入栈呀,难不成要把上面的db改成 dw ?
页:
[1]