は、配列内の数字を追加してインテル8086プロセッサのアセンブリプログラムである:アセンブリの[di]と[array + di]のアドレス指定の基本的な違いは何ですか?考える
.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
プログラム上の「ベース+インデックス」アドレッシングモードを使用して、配列の数を追加します。
同様の操作をすることによってのようなものによって実行することができます:今、私はここに質問を以下している
mov ax, array[di]
:
- をアドレッシングモードをメモリ
array[di]
と[array+di]
- の違いは
array[di]
ある何? - どちらが使いやすく、なぜですか?
違いはありませんが、標準的な構文は '[配列+ディ]'です。一部のアセンブラは、他のバージョンも受け入れます。 – Jester
"3"あなたのアセンブラがあなたが使えるものを指示するように、私は '' [array + di] 'に行きます。なぜなら、IIRCはインテルの構文がインテルの構文でどのように定義されているのかという公式な方法です。 x86のための究極のアセンブラのように見えます。マルチプラットフォーム、マルチターゲット、オープンソースを提供します。さらにコストもかからない。そのコンボを打つのは難しい。私はZ80アセンブラを知っていたのですが、変数の概念は私には分かりました。 – Ped7g