我是汇编的新手(你可以清楚地看到),我正在尝试编译以下内容:
hex_charmap db '0123456789ABCDE'
mov al, [hex_charmap + ax]
Run Code Online (Sandbox Code Playgroud)
但是我在第2行遇到以下错误:
错误:无效的有效地址
这是什么意思,我该如何解决?
在8086中,此结构是正确的:
mov bh,[bx]
Run Code Online (Sandbox Code Playgroud)
但这是不正确的:
mov bh,[cx]
Run Code Online (Sandbox Code Playgroud)
我不知道为什么 我认为通用寄存器(AX,BX,CX,DX,SP,BP,SI和DI)是可以用于任何目的的寄存器,并且BX用于基地址或CX用于计数器的声明只是一个约定,它们完全没有区别。但是看来我错了。你能解释原因吗?这些寄存器之间的确切区别是什么?(例如,为什么不能将基址保存在cx寄存器中?)