Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编内存操作数_Assembly_X86 - Fatal编程技术网

Assembly 汇编内存操作数

Assembly 汇编内存操作数,assembly,x86,Assembly,X86,我理解当[BX]在括号中时,它指的是它的内存内容。但同时我也不明白这一点 CMP [BX], 12ADH 在那个例子中,我不明白真正被比较的是什么 MOV EBX, [BX] 对于这个移动,我不知道移动的是什么,它的内存地址或者里面的值 CMP [BX], 12ADH 这实际上是一条无效指令,因为您没有指定第一个操作数的大小。假设您打算进行单词(16位)比较,如: CMP WORD [BX], 12ADH 这将首先在BX寄存器中指定的地址从内存中提取一个16位字。然后,它将该值与立即值1

我理解当[BX]在括号中时,它指的是它的内存内容。但同时我也不明白这一点

CMP [BX], 12ADH
在那个例子中,我不明白真正被比较的是什么

MOV EBX, [BX]
对于这个移动,我不知道移动的是什么,它的内存地址或者里面的值

CMP [BX], 12ADH
这实际上是一条无效指令,因为您没有指定第一个操作数的大小。假设您打算进行单词(16位)比较,如:

CMP WORD [BX], 12ADH
这将首先在BX寄存器中指定的地址从内存中提取一个16位字。然后,它将该值与立即值
12ADh
进行比较

请注意,
CMP
执行与
SUB
相同的操作,但没有实际修改任何值。它只“假装”进行减法运算,并相应地设置
标志


这将在BX寄存器中指定的地址从内存中获取32位DWORD。然后,它将该值存储在EBX寄存器中


在类似于
WORD[BX]
的表达式中,我们可以说BX“指向”内存中的16位单词:

         Memory             Register File
           ...
        _________             ________
 100h  |  1234h  |     /---- |  102h  | BX
       |_________|     |     |________|
 102h  |  5678h  | <---/        ...
       |_________|
 104h  |  9ABCh  |
       |_________|
 106h  |  DEF0h  |
       |_________|
           ...
内存寄存器文件
...
_________             ________
100h | 1234h |/----102h | BX
|_________|     |     |________|

102h | 5678h |这两个都像你说的那样使用内存。第一种方法将地址
bx
处的单词与
12ADh
进行比较,第二种方法从地址
bx
获取dword(这种形式不常见,但合法)。如果bx=10,则[bx]指地址10处的内存。如果这是清楚的,什么是不清楚的?哪一个是源,哪一个是目标取决于汇编程序语法(英特尔蚂蚁AT&T,这些是oposite)。在您的例子中,它似乎是Intel,所以第一个操作数是目标。我假设这是16位汇编,对吗?
         Memory             Register File
           ...
        _________             ________
 100h  |  1234h  |     /---- |  102h  | BX
       |_________|     |     |________|
 102h  |  5678h  | <---/        ...
       |_________|
 104h  |  9ABCh  |
       |_________|
 106h  |  DEF0h  |
       |_________|
           ...