我试图将变量复制到数组中

时间:2015-05-13 22:13:01

标签: assembly

我正在尝试复制变量并将其粘贴到我的数组中。我试图做的方式是跟随,但我的模拟器给我一个错误说错参数。我怎样才能做到这一点。假设count_acount_b

中已有值
.model

.data

frequency dw dup(0)

count_a   dw ?

count_b   dw ? 

.code

mov bx,[frequency]     ;Effective Address of Frequency in bx

   mov [bx],count_a

   add bx,2

   mov [bx],count_b

end

1 个答案:

答案 0 :(得分:1)

你不能将内存复制到内存(一个变量到另一个变量),你必须在中间使用一个寄存器,如下所示:

.model

.data

frequency dw dup(0)

count_a   dw ?

count_b   dw ? 

.code

   mov bx,[frequency]     ;Effective Address of Frequency in bx

   MOV DX,count_a
   mov [bx],DX

   add bx,2

   MOV DX,count_b
   mov [bx],DX

end

不允许将数据从count_a移动到[bx],因此我们可以使用DX(或任何其他寄存器)来存储值,并将其从一个内存位置传递到另一个内存位置。

顺便说一句,“mov bx,[frequency]”不是频率的有效地址,这是:

lea bx, frequency

现在BX包含有效的频率地址,这要归功于“lea”指令。另一种方式:

mov bx, offset frequency

您正在使用“mov bx,[frequency]”将数组频率的前两个字节传输到bx。

最后一条评论:“频率”看起来不像一个数组,它应该是:

frequency dw 256 dup(0)