+ -
当前位置:首页 → 问答吧 → 汇编语言语法

汇编语言语法

时间:2011-04-04

来源:互联网

作业需要,现在在看汇编,对于内存寻址有一点疑问:

我申明了一个数据区域
buffer dw 500


现在我要将一些数据放入其中,用dx寄存器来作为指针,就像数组那样buffer[dx],来存取值(我只知道可以用立即数来指示,比如mov [buffer+1],ax,但使用寄存器怎么写),请问具体语法是什么,我用的是NASM编译器。

作者: jiag8   发布时间: 2011-04-04

网上有nasm的中文手册下载。

作者: masmaster   发布时间: 2011-04-04

刚看了手册
下面两条语句:
mov word [buffer+2],ax
mov word [buffer+dx],ax
只有第一句编译通过,第二局报错:invalid effective address


下面是从手册摘录的:
NASM因为关注简洁性,同样不支持MASM和它的衍生产品支持的的混合语法,比如像 

:'mov ax, table[bx]',这里,一个中括号外的部分加上括号内的一个部分引用一个 

内存地址,上面代码的正确语法是:'mov ax,[table+bx] 。同样,'mov ax,es:[di]' 

也是错误的,正确的应该是'mov ax,[es:di]'。

作者: jiag8   发布时间: 2011-04-04

唉呀呀 为什么上面这个例子里我把
dx换成bx就可以了呢?

mov word [buffer+bx],ax;编译成功

谁来解释一下阿!

作者: jiag8   发布时间: 2011-04-04