51_jiaduoW~W 发表于 2012-8-14 16:37:01

汇编的问题好奇怪啊x86

;将a段中的前8个字逆序送到b中,下面是我的代码,执行到cx是三时候,add bx,2这条指令就报错退出了。我试了在其他机器上一样的问题,怎么回事?
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
main:
        mov ax,a
        mov ds,ax ;data
        mov ax,b
        mov ss,ax ;stack
        mov sp,16                        ;这里是16而不是8,切忌
       
        mov cx,8        ;8次循环入栈
        mov bx,0
x:        push
        add bx,2
        loop x
       
        mov ax,4c00h
        int 21h
code ends
end main

raxfeer 发表于 2012-8-14 20:11:39

听别人说,X86汇编都是疯子玩的……{:titter:}

51_jiaduoW~W 发表于 2012-8-15 10:22:40

人家所谓的疯子是高手的意思。sb

51_jiaduoW~W 发表于 2012-8-15 10:22:57

不懂装什么j吧

785418837 发表于 2012-8-15 12:14:32

看楼主不像是来请教的。

51_jiaduoW~W 发表于 2012-8-19 18:34:52

解决了,不管别人怎么说,还是要把问题共享一下
由于windows自带的debug程序通过硬件中断来实现调试,所以自己程序里的栈空间会被用到并被更改,
我的程序问题在于栈的大小不够用,所以debug无法满足,把栈空间调大就ok了

Q465834115 发表于 2012-8-19 19:08:23

51_jiaduoW~W 发表于 2012-8-15 10:22 static/image/common/back.gif
人家所谓的疯子是高手的意思。sb

LZ,二楼也是玩笑罢了,你何必当真呢?      

51_jiaduoW~W 发表于 2012-8-19 19:50:16

和二楼说声“对不起啊”,额,我有点冲动了当时。希望原谅,也感谢楼上给我指出来。
页: [1]
查看完整版本: 汇编的问题好奇怪啊x86