わかりました。できるだけ簡単にするために、aというラベルの付いた配列のいくつかの要素を変更するために使用したい基本的なループがあるとします。次のサンプルコードでは、aのすべての要素を1に置き換えようとしましたが、実際には機能しません。
assume cs:code ,ds:data
data segment
a db 1,2,3,4
i db 0
data ends
code segment
start:
mov ax,data
mov ds,ax
lea si,a
the_loop:
mov cl,i
cmp cl,4
jae the_end
mov ds:si[i],1 ; this is the part that i don't really understand since
inc i ; i'm expecting i=0 and ds:si[i] equiv to ds:si[0] which
loop the_loop ; is apparently not the case here since i actually receives the
; the value 1
the_end:
mov ax,4c00h
int 21h
code ends
end start
命令al
の後に格納されている要素を変更するだけでこれを実行でき、それを格納するだけでよいことを認識しています。lodsb
しかし、私が上で試したようなことをすることが可能かどうか知りたいです。