镕羽 发表于 2012-9-6 11:34:57

为什么debug内存里是乱码

STACKSG SEGMENT STACK 'S'
DW 64 DUP('ST')
STACKSG ENDS
DATASEGMENT
daDW 3,2,6,9,4,8,7,1,5;数组
CT   EQU ($-da)/2   ;元素个数
DATAENDS
CODESEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACKSG
MAINPROCFAR
MOVAX,DATA
MOVDS,AX

             mov di,ct-1 ;外循坏次数

l1:         mov cx,di;内循坏次数

             mov bx,0 ;用于数组寻数

l2:         mov ax,da ;两个内存数无法直接比较

             cmp ax,da ;比较

             jle cont ;小于等于则转到cont继续循环

             xchg ax,da ;否则交换两数

             mov da,ax

cont:      add bx,2 ;改变指针
             loop l2
             dec di;外循坏改变条件
             jnz l1;不为0则继续循环

MOVAX,4C00H
INT21H
MAINENDP
CODEENDS
ENDMAIN





镕羽 发表于 2012-9-6 11:37:11

masm、link时都正确 ,也生产exe文件了

也运行了   可是对应的内存为什么还是乱码??

应该为 00 01000200 03.........00 09才对。

镕羽 发表于 2012-9-6 13:37:24

补充:这是计算机组成原理作业用汇编语言 编写冒泡排序

ouyang 发表于 2012-9-6 15:53:34

我的也是乱码,木有解决……求高人指导吧!

yang19910223 发表于 2012-9-6 21:05:03

jle应该没错吧 我用的是jb,还有貌似用了-g指令后会系统会换过一个内存空间,再使用-d就是查看别的程序的内存空间了。可以使用-U指令查看你的DW数据块放在哪里了,也就是第一句汇编的 MOV AX,XXXX
比如-g
然后-u 看地址
然后-d XXXX:0000

镕羽 发表于 2012-9-7 12:13:16

本帖最后由 镕羽 于 2012-9-7 12:14 编辑

yang19910223 发表于 2012-9-6 21:05 static/image/common/back.gif
jle应该没错吧 我用的是jb,还有貌似用了-g指令后会系统会换过一个内存空间,再使用-d就是查看别的程序的内 ...
谢谢,找到数据段的内存了可是发现运行了maopao.exe后,内存里的数据并没有排序,还是无序的,我觉得代码逻辑并没有错,可以帮忙看看吗?图片见楼下

镕羽 发表于 2012-9-7 12:14:21

还是乱序的

X1n4n 发表于 2012-9-7 16:24:46

镕羽 发表于 2012-9-7 12:14 static/image/common/back.gif
还是乱序的

你没觉得你的这个“乱码”跟你定义的 WORD型数组的 是一样的吗?
其实 执行 debug maopao.exe 这个命令后 maopao.exe其实还没有执行呢。
要执行后才是排好序的啊。没执行的呢,当然就是你原来定义的数组顺序了。
debug maopao.exe
g
d XXXX:0000
先用g执行即可然后再查看。

镕羽 发表于 2012-9-7 17:33:43

X1n4n 发表于 2012-9-7 16:24 static/image/common/back.gif
你没觉得你的这个“乱码”跟你定义的 WORD型数组的 是一样的吗?
其实 执行 debug maopao.exe 这个命令后 ...

谢谢,可以了~~
但是我在debug之前,先运行了maopao.exe了,如这样:

D:\masm\maopao.exe

D:\masm\debug maopao.exe

怎么回事啊,谢谢指教吾辈小白~~

镕羽 发表于 2012-9-7 17:34:21

yang19910223 发表于 2012-9-6 21:05 static/image/common/back.gif
jle应该没错吧 我用的是jb,还有貌似用了-g指令后会系统会换过一个内存空间,再使用-d就是查看别的程序的内 ...

话说,你的头像是 小奴良吧~~

X1n4n 发表于 2012-9-7 18:00:11

D:\masm\maopao.exe 是你运行了一次,创建了一个进程然后程序排好序了,进程结束了。

对于 D:\masm\debug maopao.exe
debug是个调试器,它会启动程序,创建进程,然后挂起主线程。等待用户操作。此时可以执行单步 t 或者其它命令来调试程序。总之你要看内存必须要在这个进程的地址空间里看。捏那个第一句执行了一个进程这个进程debug感知不到与其无关。
BTW:不知小奴良为何物。。。=_=

镕羽 发表于 2012-9-7 21:01:13

X1n4n 发表于 2012-9-7 18:00 static/image/common/back.gif
D:\masm\maopao.exe 是你运行了一次,创建了一个进程然后程序排好序了,进程结束了。

对于 D:\masm\debu ...

谢谢高手赐教~

小奴良是回复之前楼上的同学的一个动漫人物~

yang19910223 发表于 2012-9-9 19:42:31

镕羽 发表于 2012-9-7 17:34 static/image/common/back.gif
话说,你的头像是 小奴良吧~~

大奴良不够萌 就用小奴良了
页: [1]
查看完整版本: 为什么debug内存里是乱码