assume cs:code
a segment
db 1,2,3,3
a ends
b segment
db 1,2,3,3
b ends
c1 segment
db 1,2,3,3
c1 ends
code segment
start:
mov bx,0
mov cx,4
xor dx,dx
Acumite:
;设置a段为数据段
mov ax,a
mov ds,ax
add dl,ds:[bx];累加a段
;设置b段为数据段
mov ax,b
mov ds,ax
add dl,ds:[bx];累加b段
;设置c1段为数据段
mov ax,c1
mov ds,ax
add dl,ds:[bx];累加C1段
;显示数据
add dl,30h
mov ah,02h
int 21h
inc bx
xor dx,dx
loop Acumite
mov ah,4ch
int 21h
code ends
end start
我们要知道,对于ds:[bx]的,段的偏移量应该是bx,除此之外,还可以使用[bx+9]但是[bx+cx]是不行的,[bx+局部变量]也不行
段偏移量的指定应该是bx,si,di也行
ds:[bx+si]或者ds:[bx+di]
ds:[bx+si+9]//必须是常数
ds:[bx+di+8]
变址寻址的寄存器组合是有:
bx和si,bx和di,bp和si,bp和di