.data
num dw 2,4,6,8,10
.code
main proc
mov eax,0
mov si,2
mov ax,num[si*2]
我想打印数组元素6,但错误是无效使用寄存器。如何解决它。
答案 0 :(得分:0)
我猜这是16位80x86程序集。我不知道它是哪个汇编程序(它不是GAS / AT& T,可能不是NASM / YASM / FASM,可能还有MASM或TASM)。不知道哪个汇编程序我不知道它所期望的语法。
但是,对于80x86上的16位寻址,无法对该指令进行编码(假设开始时不是语法错误)。替代方案包括:
a)执行add si,si
然后(取决于哪个汇编程序)mov ax,[num+si]
或mov ax,num[si]
。
b)执行mov bx,si
然后(取决于哪个汇编程序)mov ax,[num+bx+si]
或mov ax,num[bx+si]
。
c)执行mov si,2*2
然后(取决于哪个汇编程序)mov ax,[num+si]
或mov ax,num[si]
。
d)如果它是在32位CPU上运行的16位代码;执行mov esi,2
然后(取决于哪个汇编程序)mov ax,[num+esi*2]
或mov ax,num[esi*2]
。
e)(取决于哪个汇编程序)mov ax,[num+2*2]
或我不知道是什么(可能mov ax,(num+2*2)[]
?)。