私はwhileループを正しく実装したと思っていましたが、なぜ出力が得られませんか?アセンブリ言語の宿題に問題がある
私の本はあまり役立つものではなく、私はオンラインでリソースを見つけることができませんでした。
##### The Data Segment #########
.data
strFirstNumber: .asciiz "Enter the first number (0-63): "
strSecondNumber: .asciiz "Enter the second number (0-63): "
strError: .asciiz "That number is not in the 0-63 range.\n\n"
#### The Text Segment ##########
.text
.globl main
main:
li $t2, 0
#First Number
li $10, 64
li $v0, 4
la $a0, strFirstNumber
syscall
li $v0, 5
syscall
blez $v0, in_error
bgeu $v0, $10, in_error
j DoneIf
in_error:
li $v0, 4
la $a0, strError
syscall
li $v0, 4
la $a0, strFirstNumber
syscall
li $v0, 5
syscall
bltz $v0, in_error
bgeu $v0, $10, in_error
DoneIf:
move $t0, $v0
#Second Number
li $v0, 4
la $a0, strSecondNumber
syscall
li $v0, 5
syscall
bltz $v0, in_error2
bgeu $v0, $10, in_error2
j DoneIf2
in_error2:
li $v0, 4
la $a0, strError
syscall
li $v0, 4
la $a0, strSecondNumber
syscall
li $v0, 5
syscall
blez $v0, in_error2
bgeu $v0, $10, in_error2
DoneIf2:
move $t1, $v0
Loop:
beq $t2, $t0, Exit
add $t3, $t1, $t1
add $t2, $t2, 1
j Loop # go to Loop
Exit:
li $v0, 1
add $a0, $0, $t3
syscall
jr $31
具体的な問題は何ですか?コードが実際に実行されますか?期待されるプロンプトが表示されますか?それは入力を受け入れますか?次は何が起こる ?あなたはそれをデバッグするために何を試しましたか? –
ありがとうございます。コードが実行され、1番目と2番目の番号を入力できます。しかし、私は結果を表示することはできません。 2番目の数字が入力されても何も表示されません。コードのアイデアは、乗算を模倣するwhileループを実行することです。私はそれを一歩踏み出そうとしましたが、私が間違っていることを理解できません。 – bdmflyer
シングルステッピングの場合、ループにしますか?あなたがそこに着いたら '$ t0'から' $ t3'までの値は何ですか?あなたはこれを 'j Loop'にしたことがありますか?あなたがそこに着くと、レジスタの値は何ですか? –