地址的内容无故被覆盖
assume cs:codea segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
d segment
db 0,0,0,0,0,0,0,0
d ends
code segment
start: mov ax,d
mov ss,ax
mov ax,a
mov ds,ax
mov ax,b
mov es,ax
sub ax,ax
sub bx,bx
sub dx,dx
mov cx,8
s: mov al,ds:
mov dl,es:
add al,dl
mov ss:,al
inc sp
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
这段代码要实现的功能是:将a段的数和b段的数依次相加,结果储存在d段
如图所示 第一次循环执行后,a段的数被写到d段的第0个内存单元中
如图所示 第二次循环后,d段0的数被其他数覆盖.
求解,为什么只要第26行将sp自加就会覆盖 好像SP只能作为栈的偏移地址使用,如果进行其他操作会出问题的,不要用inc sp啊,你这样用是对SP寄存器非法操作了,出问题很正常。{:10_266:}
页:
[1]