回 帖 发 新 帖 刷新版面

主题:关于数组操作的问题

为什么我这段程序能通过
data segment
    s dw 1,2,3
data ends
code segment
assume cs:code,ds:data
main:
    mov ax,data
    mov ds,ax
    mov bx,1
    mov cx,s[bx]
code ends
end main


但这段却显示通不过
data segment
    s dw 1,2,3
data ends
code segment
assume cs:code,ds:data
main:
    mov ax,data
    mov ds,ax
    mov ax,1
    mov cx,s[ax]
code ends
end main
显示 error A2048:must be index or base register

回复列表 (共3个回复)

沙发


ax不能用于寻址

板凳

error A2048:must be index or base register:必须为一个索引下标或base寄存器


而所谓的“base寄存器”其实就是BX(字母B就代表base),所以只能用BX而不能用其他的通用寄存器CX,DX,更不能使用累加器AX。
可以试试,把AX换成CX,DX。你会发现都是同样的错误而不能通过编译。

3 楼

寻址寄存器只有si,di,bx,bp四种,ax不能用于寻址

我来回复

您尚未登录,请登录后再回复。点此登录或注册