C语言鱼c 发表于 2014-4-27 15:00:34

这是什么原因?

本帖最后由 C语言鱼c 于 2014-4-27 15:02 编辑

这题的题目是利用栈将程序中定义的数据逆向存放

这是什么原因?

dsa159245 发表于 2014-4-27 15:44:03

貌似没有错啊
CX=3 说明还有三次循环没有执行啊

为之疯狂 发表于 2014-4-27 15:57:09

数据的确有问题,2楼可能看错了,楼主是先把数据已经存放在cs:00到CS:10 的16个字节中了,按道理元数据应该不会被改变,楼主能把代码贴出来吗,我去测试一下,别老是搞图片。

C语言鱼c 发表于 2014-4-27 16:01:58

为之疯狂 发表于 2014-4-27 15:57 static/image/common/back.gif
数据的确有问题,2楼可能看错了,楼主是先把数据已经存放在cs:00到CS:10 的16个字节中了,按道理元数据应 ...

原代码:
assume cs:code
code segment
                dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
                dw 0, 0, 0, 0, 0, 0, 0, 0   ;eight
               
start:                mov ax, cs
                        mov ss, ax
                        mov sp, 32
                        mov bx, 0
                       
                        mov cx, 8
                s:        push cs:
                        add bx, 2
                loop s
               
                        mov bx, 0
                        mov cx, 8
                s0:        pop cs:
                        add bx, 2
                loop s0
                               
                                                mov ax, 4c00h
                                                int 21h
code ends
end start

传说。 发表于 2014-4-27 16:13:22

定义 dw 应该定义16 个0, 上面是有h ,下面定义 0的时候没有h , 所以你给的空间应该不对吧?你这样定义的应该是24个字型数据。

传说。 发表于 2014-4-27 16:14:07

楼主顺便看下我的题目吧。 我在书上抄的题目 也郁闷。。

为之疯狂 发表于 2014-4-27 16:31:17

C语言鱼c 发表于 2014-4-27 16:01 static/image/common/back.gif
原代码:
assume cs:code
code segment


我刚测试了一下,发现当 cx=4的时候,他就已经把 cs:f + cs:e这两个字节给修改了,我也不知道为什么,待请高人来回答。
页: [1]
查看完整版本: 这是什么原因?