0

アセンブリで 2x2 マトリックスの座標を指す方法がわかりません。

これは私のコードです:

matrix     db '0','0','0'   ; I define 3x3 matrix
row1       db '0','5','0'
row2       db '0','0','0'

; I modify item "A1"
mov bx, 0
mov si, 0
mov matrix[BX][SI], 'x'

bx の増加が次の列/バイトを指していることに気付きましたが、別の行を指すことができるように SI にどの値を割り当てなければならないかわかりません。

たとえば、マトリックス (5) の中央にあるバイトを変更するにはどうすればよいですか?

4

1 に答える 1

1

SI を使用して行を選択する場合は、rowIndex*3 に設定する必要があります。構文 "matrix[BX][SI]" は、高級言語のように 2 次元配列を示していないことに注意してください。「行列[BX + SI]」と同義です。行列の中央の要素のオフセットは 4 であるため、BX を 1 に、SI を 3 に設定することでアクセスできますが、BX を使用して行を選択する方がより一般的です。

于 2013-06-26T04:52:19.583 に答える