|
主题 : : 大侠们帮帮小弟看看这段程序的问题。 [已解决] |
回复[ 5次 ]
点击[ 429次 ] | |
荣誉值:0
信誉值:4
注册日期:2011-04-29 14:07 |
题目是这样的:
把 程序提供的8个字单元顺序放到 DW 0,0,0,0,0,0,0,0 中,用上栈
程序开头制定这样:
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0,0,0,0
我的程序如下:
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0,0,0,0
start:
mov ax,codesg
mov ds,ax
mov ss,ax ; 栈的段地址在AX 中
mov sp,0h ; 栈指针
mov bx,10h
mov cx,8
s:pop [bx] ; 出栈,将SP指向的内存地址数据送到便宜地址为BX 的内存单元中!
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
单步第二次到add bx,2 后程序流程出错。。查看 d cs:0 发现pop过的地方的数据也发生了变换。不是0123H了。。。
难道pop这个指令出了把数据出栈还对内存的数据做了别的手脚?
程序流程也出了问题,loop没有执行完就跑到别的地方执行去了。。
请各位大侠看看。。到底是什么问题。。感激不尽。。 | | |