汇编疑问
本帖最后由 u654f 于 2015-8-10 12:33 编辑assume cs:codesg,ds:datasg
datasg segment
db 'welcome to masm!'
db '................'
datasg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov ss,ax
mov sp,20h
mov bx,14
mov cx,8
s:
push
dec bx
dec bx
loop s
mov ax,4c00h
int 21h
codesg ends
end start
以上代码是将第二行db作为栈,将第一行数据送入....中,代码达到了预期效果但还出现个疑问,第一段内存为何会发生改变?看图片
mov bx,14有点不太明白。不应该是mov bx,10h吗?要移动的数据有16个字节啊! 不科学啊!难道是用dosbox的原因吗? 不知道是环境问题,还是代码问题。一步一步调试了。是循环到bx为8时发生改变的,但是程序里面都没有修改过这段内存的值,调试时发现bx为8时执行push高地址内存的8位数据会往低内存地址的数据平移了8位。有点莫名其妙。 jmuxiaolu 发表于 2015-8-9 23:12
mov bx,14有点不太明白。不应该是mov bx,10h吗?要移动的数据有16个字节啊!
push 取得是m! bx=16取得就是..了 push 取得是m! bx=16取得就是..了
这个办法好。。 完全看不出问题 路过,赚鱼币 感谢楼主的奉献 我要鱼币 jmuxiaolu 发表于 2015-8-9 23:12
mov bx,14有点不太明白。不应该是mov bx,10h吗?要移动的数据有16个字节啊!
虽然问题没解决,但至少证明你动了脑子,强烈鄙视只管要鱼币不用脑子的!
页:
[1]