1

さて、私は int 配列を作成し、それらを合計して平均を出力するという課題を持っています。laを使用していない間ずっと。主な構造はすべてうまくできていますが、問題が 1 つあります。これは、プロンプトの文字列を出力することです。

私が知る必要があるのは、.data セクションにある文字列にアクセスするためにポインタを移動する必要があるということです。以下は私のデータセクションです...

    .data
size: .word 10
nums: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

prompt: .asciiz "\nEnter ten integers : "

theaverage : .asciiz "\nThe average is "
greaterthan : .asciiz "\nThese integers are greater than the average   \n----------------------------------------- "
lessthan : .asciiz "\nThese integers are less than the average \n-------------------------------------- "

問題は、変数プロンプト、平均、大なり、小なりにアクセスするには、$t0 をどれだけインクリメントする必要があるかということです。私は自分でアレイを完全にうまく通過することができます。.data セクションのベースアドレスで $t0 から始めます...

main :
        lui $t0, 0x1001 # Base address of .data segment
4

1 に答える 1

0

データセクションに格納されている各要素のサイズを知る必要があります。

たとえば、それぞれが.word4バイトを消費し、各文字が1バイトを消費します。

.asciizまた、文字列がnullバイトで終わることも考慮する必要があります。

したがって、たとえば、開始アドレスを知るにはprompt、ベースアドレスに4(size)と40(nums配列)を加えたものを追加する必要があります。

次に、アドレスに17を加えたものtheaverageから開始します( 1バイトとしてカウントされ、終了は両方とも考慮されます)。他のラベルについても同様です。prompt\nnull

また、あなたが述べたように、.dataセグメントが0x1001ではなくアドレス0x1000で始まる可能性が高いことにも注意してください。

于 2012-12-12T01:20:05.820 に答える