用汇编语言执行c=a+b,为什么在DEBUG里看不到c的结果
汇编语言程序调试啊datasegmentadw100hbdw250hcdw?dataendscodesegmentassumecs:code,ds:datastart:m...
汇编语言程序调试啊
data segment
a dw 100h
b dw 250h
c dw ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov ax,a
add ax,b
mov c,ax
mov ah,4ch
int 21h
code ends
end start
听老师说在DEBUG里面可以看到运算过程及结果,但是我在自己电脑上运行的时候看到c的值是0,是怎么回事啊? 展开
data segment
a dw 100h
b dw 250h
c dw ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov ax,a
add ax,b
mov c,ax
mov ah,4ch
int 21h
code ends
end start
听老师说在DEBUG里面可以看到运算过程及结果,但是我在自己电脑上运行的时候看到c的值是0,是怎么回事啊? 展开
5个回答
展开全部
代码没有问题!
请问你是怎么看的?
debug加载源文件,跟踪到mov c,ax,并执行,查看c的内容,看AX也一样的,然后跟踪直到退出。
c的值是0绝对超小概率事件,你运气很不错!
请问你是怎么看的?
debug加载源文件,跟踪到mov c,ax,并执行,查看c的内容,看AX也一样的,然后跟踪直到退出。
c的值是0绝对超小概率事件,你运气很不错!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
,
a b是标号,所以想用在代码段中,必须把他们所在的段和某寄存器联系起来,你题中是把DATA的数据段跟CS联系起来,所以,应该再用一个寄存器来作为偏移。
如
mov si, 0
然后
mov ax,a[si]
add si, 2
add ax,b[si]
这样才可以。
a b是标号,所以想用在代码段中,必须把他们所在的段和某寄存器联系起来,你题中是把DATA的数据段跟CS联系起来,所以,应该再用一个寄存器来作为偏移。
如
mov si, 0
然后
mov ax,a[si]
add si, 2
add ax,b[si]
这样才可以。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我的怀疑是 dw,毕竟 ax 只是16位的寄存器,不是 eax
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-09-03
展开全部
你用的是什么编译器?用Tc的话可以用Alt+F5查看,或者在最后加getch();
用Vc的话可以采用断点标志,将光标移动到最后一行,在点击一下菜单栏里的小手,再运行就可以了
用Vc的话可以采用断点标志,将光标移动到最后一行,在点击一下菜单栏里的小手,再运行就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询