相关疑难解决方法(0)

无效的有效地址计算

请看下面的程序,错误是无效的有效地址计算,我已经提到那行,请告诉我为什么这里无效的有效地址计算是程序

[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
Run Code Online (Sandbox Code Playgroud)

assembly

3
推荐指数
1
解决办法
5906
查看次数

8086中通用寄存器之间的差异

在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寄存器中?)

assembly x86-16

1
推荐指数
1
解决办法
444
查看次数

标签 统计

assembly ×2

x86-16 ×1