此问题在此处已有答案:
Differences between general purpose registers in 8086: [bx] works, [cx] doesn't?(3个答案)
19天前关闭。
请看下面的程序,错误是计算无效有效地址,我刚才提到的那一行请告诉我为什么计算无效有效地址这里是程序
[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
2条答案
按热度按时间gxwragnw1#
编辑:如果我没记错的话,
cx
寄存器不能作为索引使用。Table 2-1. 16-Bit Addressing Forms with the ModR/M Byte
1wnzp6jl2#
使用以下公式(对于TASM)更容易记住地址说明:
在哪里|表示OR(表示BX和BP不能在同一地址规范中)。constant可以是变量或数值常量。