用汇编语言执行c=a+b,为什么在DEBUG里看不到c的结果

2024-12-26 16:09:56
推荐回答(5个)
回答1:

首先,你应该知道debug 的简单命令:

-u 反汇编

-g [range]执行到指定。。

-d [adress] 查看内存

这样,你想看c的值,就用-d命令查看c所在的内存

下面给你截了个小图,自己试试吧!

需要注意的是数据在内存中是小端存储,简单的说,前面你把c定义成字,内存中低八位应在高八位的前面....

另外,完全可以通过系统调用将c的值显示在显示器上...

好了,给分吧!

回答2:

代码没有问题!

请问你是怎么看的?

debug加载源文件,跟踪到mov c,ax,并执行,查看c的内容,看AX也一样的,然后跟踪直到退出。

c的值是0绝对超小概率事件,你运气很不错!

回答3:


a b是标号,所以想用在代码段中,必须把他们所在的段和某寄存器联系起来,你题中是把DATA的数据段跟CS联系起来,所以,应该再用一个寄存器来作为偏移。

mov si, 0
然后
mov ax,a[si]
add si, 2
add ax,b[si]
这样才可以。

回答4:

我的怀疑是 dw,毕竟 ax 只是16位的寄存器,不是 eax

回答5:

你用的是什么编译器?用Tc的话可以用Alt+F5查看,或者在最后加getch();
用Vc的话可以采用断点标志,将光标移动到最后一行,在点击一下菜单栏里的小手,再运行就可以了