Mipsアセンブリプログラミングの初心者です。私はこのプロジェクトを持っています:Mipsアセンブリは、文字列中の最も長い単語のアドレスを見つけます。
まず、指定された文字列のアドレスをレジスタにロードする必要があります。この文字列には文(文字の配列)が含まれ、単語はスペースで区切られます。それから、各単語の長さを見つけ、その長さを他の単語の長さと比較しなければなりません。最後に、最長の単語を見つけて、最初の文字のアドレスを出力する必要があります。
例えば、文字列がある場合:
string: .asciiz "This is a wonderful day"
私たちが保存されているワットアドレスを返す必要があります。
は、これまでのところ私はこれを書いている:
.globl main
.text
main:
la $a0, string #Load the address of the string to $a0
addu $v1, $0, $a0 #Initialize the address of the longest word to v1
exit: #Exiting the program
addiu $v0, $zero, 10
syscall
.data
string: .asciiz "This is a wonderful day"
すべてのヘルプは高く評価しました。ありがとう。
、Javaでの実装は、このようなものが考えられます。編集はあなたが探索するためのいくつかのより多くのアイデア...
を良い進歩を見せている
int i = 0;
int Counter1 = 0;
int Counter2 = 0;
int address1 = getTheAddressOfCharacter(string[i]); //get the address of the first letter of the string.
while(string[i] != ' ') //find the length of the 1st word and store it in counter1.
{
Counter1 += 1;
i += 1;
}
int address2 = getTheAddressOfCharacter(string[i]); //get the address of the second letter of the string.
while(string[i] != '\0')
{
if(string[i] != ' ')
{
if(Counter2 == 0)
address2 = getTheAddressOfCharacter(string[i]);
Counter2 += 1;
}
else
{
if(Counter2 > Counter1)
{
address1 = address2;
Counter1 = Counter2;
}
Counter2 = 0;
}
i += 1;
}
あなたの問題は何ですか?最初にいくつかのアルゴリズムを設計し、そのコメントをコードに書き込んでください。コメントでアルゴリズムを使用した後、すべてのコメントがいくつかの単純な操作だけを記述し、そのアルゴリズムが正しく動作することを確認するまで、それらを改良し続けます(空文字列、単一単語、入力中のスペースなど)。その後、それを実装する指示を書くことができます。 – Ped7g
それは "Javaで"正しく動作しません(と私はそれが論理だという意味 "getAddress"のような非Javaの事を意味しない)。適切な時に 'address2'を更新できません。それは空の文字列入力でもクラッシュします。それは、単一のスペースの文字列のためのスペースのアドレスを返します、おそらくそれは "単語が見つかりません"を表示する方が正しいでしょう。 'address2'アップデートメカニズムに対処している間、いたずらなテスターは単語間の二重トリプルスペースや文字列のスペースエンドを追加することに注意してください(しかし一般的に悪い試みではなく、使用されている操作はアセンブリ命令に似ています)。 – Ped7g
多分Javaを残して、 "string [i]"を "address at value"と同等(これはアセンブリでは簡単です)と考えて、アドレスとインデックスの両方で作業する必要はありません。このタスクのすべてのためのそれら。 – Ped7g