我正在尝试复制变量并将其粘贴到我的数组中。我试图做的方式是跟随,但我的模拟器给我一个错误说错参数。我怎样才能做到这一点。假设count_a
和count_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
答案 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)