汇编语言错误 mov ax,es:[bx]

在windows下,开始--》运行--》debug回车。-amovax,es:[bx];提示^Errormovax,ds:[bx];提示^Errormovax,[bx];... 在windows下,开始--》运行--》debug回车。
-a
mov ax,es:[bx]; 提示 ^Error
mov ax,ds:[bx]; 提示 ^Error
mov ax, [bx]; 正常

以上语句中,第二mov和第三个mov应该是一样的啊,为什么加上段超越前缀就报错呢?
"Win32是flat模式啊,没事你修改段寄存器干嘛 "
做实验啊,实验指导书上要求的.....
你的意思是在dos下就没问题喽??
展开
 我来答
百度网友ab835a052
2009-11-07 · TA获得超过341个赞
知道答主
回答量:89
采纳率:0%
帮助的人:99.4万
展开全部
用debug时默认数据的段地址存放在DS里的,
mov ax,es:[bx]
mov ax,ds:[bx]
如果用MASM可以通过编译,没有问题。但在debug里这种语法是错误的,mov ax, [bx]可以,实际上就相当于在MASM里mov ax,ds:[bx]语句。如果要换个数据段用ES存储段地址可以之前写“ES:”,debug就会默认ES的值作为数据段地址。
关于debug和MASM的区别建议看看王爽编著的《汇编语言》,里面有写到,而且很详细。
汤旺河边
2009-11-07 · TA获得超过2.9万个赞
知道大有可为答主
回答量:2675
采纳率:0%
帮助的人:2955万
展开全部
在DEBUG中,段超越前缀要作为单独一行输入。如,

-a
0AF1:0100 es:
0AF1:0101 mov ax,[bx]
0AF1:0103 ds:
0AF1:0104 mov ax,[bx]
0AF1:0106 mov ax,[bx]
0AF1:0108
-q
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-11-07
展开全部
debug本身和debug调试的程序都不是Win32程序,需要用到段
就像二楼说的如果段是DS的话不要加段前缀
如果不是DS的话要在需要改变段的那条指令前加ES,CS,SS等
-a
0B4A:0100 ES:
0B4A:0101 mov ax,[bx]
0B4A:0103
-u
0B4A:0100 26 ES:
0B4A:0101 8B07 MOV AX,[BX]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
surybai
2009-11-07 · TA获得超过440个赞
知道答主
回答量:265
采纳率:0%
帮助的人:231万
展开全部
有如下代码:
mov ax,ds:[bx]
mov ax,es:[bx]
编译后:
用debug 查看(如下):
13EE:0000 8B07 MOV AX,[BX]
13EE:0002 26 ES:
13EE:0003 8B07 MOV AX,[BX]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友39d9835
2009-11-07 · TA获得超过615个赞
知道小有建树答主
回答量:573
采纳率:0%
帮助的人:744万
展开全部
Win32是flat模式啊,没事你修改段寄存器干嘛
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式