给定的是英特尔 8086 处理器的汇编程序,它将数组中的数字相加:
.model small
.stack 100h
.data
array dw 1,2,3,1,2
sum dw ?,", is the sum!$"
.code
main proc
mov ax,@data
mov ds,ax
mov di,0
repeat:
mov ax,[array+di]
add sum,ax
add di,2 ; Increment di with 2 since array is of 2 bytes
cmp di,9
jbe repeat ; jump if di<=9
add sum,30h ; Convert to ASCII
mov ah,09h
mov dx,offset sum ; Printing sum
int 21h
mov ax,4c00h
int 21h
main endp
end main
上面的程序使用“base + index”寻址方式添加数组的数量。
可以通过以下方式执行相同的操作:
mov ax, array[di]
现在我在这里有以下问题:
array[di]
和有什么区别[array+di]
- 哪种内存寻址模式是
array[di]
? - 哪个更好用,为什么?