我有区分说明的问题。
mov [300], bl
mov [bx], cl
答案 0 :(得分:4)
我认为[300]
表示“存储在地址300的值。另一方面,[bx]
表示”存储在寄存器BX中存储的地址的值“。(注意,两者都不是常量值,这只是一个赤裸的300
。)
答案 1 :(得分:0)
让我们假设
bx = 0xF000
bl = 0x00 (duh)
cl = 0x10
直接寻址
mov byte ptr [300], bl
将bl(0)的内容写入地址300。
间接寻址
mov byte ptr [bx], cl
将0x10写入地址0xF000
使用直接偏移的间接寻址
mov byte ptr[bx+300], cl
将0x10写入地址0xF12C (300十进制= 12C十六进制)
x86还有更多寻址模式,请参阅:http://www.ic.unicamp.br/~celio/mc404s2-03/addr_modes/intel_addr.html
为了使问题更加复杂,这种解释对于英特尔汇编语法有效,在AT& T又称GAS语法,源和目的地相反。
这不应该关注你,因为理智的人只使用英特尔语法,它更容易使用。