汇编语言能不能向内存直接写数据 5

如题,movax,1000Hmovds,axmov[0],53有没有语法错误?mov[0],53一句没有语法问题,为什么都说有问题呢?x86系统默认把ds寄存器当作段寄存... 如题,
mov ax,1000H
mov ds,ax
mov [0],53
有没有语法错误?
mov [0],53
一句没有语法问题,为什么都说有问题呢?x86系统默认把ds寄存器当作段寄存器
展开
 我来答
wangfan2000
2012-09-10 · TA获得超过2549个赞
知道小有建树答主
回答量:586
采纳率:50%
帮助的人:570万
展开全部
可以直接写内存,但是为保证万一,一般直接写到安全区域(0:200~0:2FF),否则系统会有提示框。
上面这段程序在源程序中有语法错误,错误出现在指令mov [0],53,一是在源程序中,[0]被编译成0,所以指令会变成mov 0,53;这显然是错误的,再就是把一个立即数送存储单元时,要确定它的数据类型,即是字节传送还是字传送。如果是字节传送可改成:mov byte ptr ds:[0],53 如果是字传送,可改为:mov word ptr ds:[0],53,再就是程序中的标点符号应该是英文标点符号。

在debug里才是你补充里面所说的.你可以在源程序中试试.
jimview
推荐于2017-12-16 · TA获得超过114个赞
知道答主
回答量:15
采纳率:0%
帮助的人:13.9万
展开全部
这段代码,从意思层面上很明了,就是要往1000:0000中写入53这个数。
首先,mov [0], 53有语法错误,x86不支持这种写法,正确的可能应该是:
mov ax, 53
mov bypte ptr [0], ax
其次,这段代码在x86实模式下的意思基本是明确的,就是写0x10000地址。
但是,在x86保护模式下,是有问题的。因为保护模式下段寄存器保存的是一个段选择子,而段选择子有严格的格式定义。0x1000明显不是一个合法的段选择子,因此这段代码在保护模式下运行会引发一般保护性错误(General protection fault).
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谢房作
2012-09-14 · TA获得超过3049个赞
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:3553万
展开全部
DISPBXB PROC NEAR
MOV CX,16
LP:ROL BX,1
JC D1
MOV DL,30H
JMP OUTP
D1:MOV DL,31H
OUTP:MOV AH,2
INT 21H
LOOP LP
MOV DL,'B';显示字母“B”
MOV AH,2
INT 21H
RET
DISPBXB ENDP
套装(BX)= 7FFFH,输出格式0111111111111111B的的字符后面的字母B表示二进制的形式,显示的结果固定16。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
PPC5cab
2016-07-25 · TA获得超过239个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:91.7万
展开全部
因为这句话有歧义,可以理解为mov byte ptr [0],53也可以理解为mov word ptr [0],53
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
记住一座城
2012-09-07 · TA获得超过728个赞
知道小有建树答主
回答量:1091
采纳率:33%
帮助的人:668万
展开全部
要显示指明段,比如ds:[0]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式