大家看看这个代码有问题吗?
本帖最后由 583413088 于 2012-2-5 19:04 编辑assume cs:code
a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start: mov ax, b
mov ss, ax ; 定义栈段地址
mov sp, 16 ; 栈段偏移地址
mov ax, a
mov ds, ax ; 定义数据段地址
mov bx, 0 ; bX清零
mov cx, 8 ; 定义循环次数
s: mov ax,
push ax
inc bx
loop s
mov ax, 4c00h
int 21h
code ends
end start我一单步调试 就提示内存出错
帮帮忙啊 大家 inc bx得改成 add bx,2 你定义的都是字大小的。 独立日 发表于 2012-2-3 20:56 static/image/common/back.gif
inc bx得改成 add bx,2 你定义的都是字大小的。
我改了 可是当CX的值为3时还是错误啊 大家帮帮忙啊 我总是找不出错啊 不好意思,上次就是扫了一眼。没注意,你定义的栈段(8dw)貌似小于数据段(16dw)的大小,把栈段弄得16字大试试 独立日 发表于 2012-2-4 21:09 static/image/common/back.gif
不好意思,上次就是扫了一眼。没注意,你定义的栈段(8dw)貌似小于数据段(16dw)的大小,把栈段弄得16字大试试
3Q 好了啊咋回事 为啥把栈空间 改成16字就没问题了啊
我不是说了吗,因为你的数据段大小是16字,所以对应的栈段必须是16字,如果栈8字大小的话放不下,发生溢出。。 因为你入栈的数据长度超出定义栈的长度,所以报错
页:
[1]