Do là chương trình lắp ráp của Intel 8086 Processor có thêm những con số trong mảng:Whats sự khác biệt cơ bản giữa địa chỉ của mảng [di] và [mảng + di] trong lắp ráp là gì?
.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
Trên chương trình cho biết thêm số lượng mảng sử dụng "cơ sở + index" chế độ giải quyết.
Các hoạt động tương tự có thể bằng cách thực hiện bởi một cái gì đó như:
câu hỏimov ax, array[di]
Bây giờ tôi đã sau đây:
- sự khác biệt giữa
array[di]
và[array+di]
- nào nhớ mode địa chỉ là
array[di]
là gì ? - Cách nào tốt hơn để sử dụng và tại sao?
Không có sự khác biệt, nhưng cú pháp giữa các ý kiến '[mảng + di]'. Một số nhà lắp ráp cũng chấp nhận phiên bản khác. – Jester
"3." dựa trên nhiều ý kiến, như assembly của bạn quyết định những gì bạn có thể sử dụng ... Tôi sẽ đi với '[array + di]' vì A) IIRC đó là cách chính thức cách mà cú pháp Intel được định nghĩa bởi Intel B) nó tương thích với NASM - có vẻ là một trong những trình biên tập cuối cùng cho x86, tức là. duy trì, đa nền tảng, đa mục tiêu và nguồn mở. Và thậm chí miễn phí. Khó để đánh bại combo đó. C) có ý nghĩa hơn với tôi, tôi đã quen với suy nghĩ thay vì trong con trỏ hơn là trong "biến", khái niệm về các biến được hiển thị cho tôi sau khi tôi đã biết Z80 assembler. – Ped7g