无效的有效地址计算
请看下面的程序,错误是无效的有效地址计算,我已经提到,线,请告诉我,为什么它的无效的有效地址计算 这里是程序
无效的有效地址计算
[org 0x100]
jmp start
array1: dw 10,15,20,25,30,35,40,45,50,55
array2: dw 15,10,20,35,40,30,55,50,25,45
start: mov bx,0
mov cx,0
loop: mov ax,[array2+bx]
cmp ax,[array1+cx]//here is the error invalid effective address calculation
jne NextElementOfArray1
NextElementOfArray2: add bx,2
cmp bx,20
je end
mov cx,0
jmp loop
NextElementOfArray1: add cx,2
cmp cx,20
je NextElementOfArray2
jmp loop
end: mov ax,0x4c00
int 0x21
start: mov bx,0
mov dx,0 ; <-- did you mean "mov cx, 0" ?
loop: mov ax,[array2+bx]
cmp ax,[array1+cx]
编辑:如果我没记错,cx
寄存器不能用作索引。
Table 2-1. 16-Bit Addressing Forms with the ModR/M Byte
Effective Address Mod R/M Value of ModR/M Byte (in Hexadecimal)
[BX+SI]
[BX+DI]
[BP+SI]
[BP+DI]
[SI]
[DI]
[BX]
[BX+SI]+disp8
[BX+DI]+disp8
[BP+SI]+disp8
[BP+DI]+disp8
[SI]+disp8
[DI]+disp8
[BP]+disp8
[BX]+disp8
[BX+SI]+disp16
[BX+DI]+disp16
[BP+SI]+disp16
[BP+DI]+disp16
[SI]+disp16
[DI]+disp16
[BP]+disp16
[BX]+disp16
ya ya我的意思是mov cx,0 – 2010-05-11 08:45:47
我应该在这里使用哪个注册表 – 2010-05-11 08:53:02
@Zia,我发布了英特尔手册中的有效索引列表。不要忘记下载并检查出来。 – 2010-05-11 09:05:59
更容易记住以下公式(为TASM)地址规范:
[BX|BP]+[SI|DI]+constant
凡|表示OR(意味着BX和BP不能在相同的地址规范中)。常数可以是变量或数字常量。
cx分配在哪里?你分配了ax和dx。 cx的价值是什么? – Shaihi 2010-05-11 08:43:08
我已经进行了更正,请现在检查 – 2010-05-11 08:49:32