テイルズオブエターニアを題材にしています v0には現在の所持金、t2には購入金額が格納されています この2つのレジスタに注意しながら読んで下さい。 消費税加算プログラムコード 1番左側の8000〜802Cはアドレスの下4ケタです 8000 24150069 addiu s5,zero,#$0069 8004 01550018 mult t2,s5 8008 00005012 mflo t2 800C 24150064 addiu s5,zero,#$0064 8010 0155001A div t2,s5 8014 00005012 mflo t2 8018 004A1023 subu v0,v0,t2 801C 04410002 bgez v0,$80008128 8020 00000000 nop 8024 00001021 addu v0,zero,zero 8028 AE42092C sw v0,$092c(s2) 802C 080467D0 j $80119F40 空きメモリに飛ばすタイミングは 80119F3Cの減算命令が1番いいでしょう 減算命令と、すぐ下のストア命令を 80119F3C 08002000 j $80008000 80119F40 00000000 nop に書換えて下さい。 ではプログラムの説明です 買い物金額は100(10進数です)を例にします。 1行目でs5に69を書き込みます 69は10進数で105になります。 2行目でt2とs5の掛算をします 式で表すと 100×105=10500 ここで購入金額が10500になります。 3行目でt2×s5の結果をt2に書き込みます 4行目でs5に64を書き込みます 64は10進数で100になりますね 5行目でt2とs5の割算をします 式で表すと 10500÷100=105 ここで購入金額が105になります。 6行目でt2÷s5の結果をt2に書き込みます 7行目で現在の所持金からt2を減らします この時点ですでにt2の購入金額は5%加算されています。 8行目でv0の数値が0より大きければ 8020と8024の命令を飛ばして8028に分岐します 9行目はnop(何もしない)にします 10行目はv0に0を書き込む命令です この命令については後で説明します 11行目で買い物で減ったお金を現在所持金に書き込みます 12行目でプログラムを元のプログラムに戻します 8行目でv0より0が大きければ分岐とありますが これは消費税が加算されたせいで 現在所持金より購入金額がオーバーしてしまい 所持金がマイナスになる事がある為です このbgez命令でそれを監視して 最終的に書き込む予定の現在金額がマイナスならば 10行目のv0に0を書き込む命令を実行させます v0に0を書き込む=マイナスなのを0に戻すと考えて下さい 逆に、マイナスになっていなければ10行目は無視されます これで出来たエターニアのコードです 買い物に消費税がかかる D0119F38 5012 80119F3C 2040 D0119F38 5012 80119F3E 0800 D0119F38 5012 80119F40 0000 D0119F38 5012 80119F42 0000 80008100 0069 80008102 2415 80008104 0018 80008106 0155 80008108 5012 8000810C 0064 8000810E 2415 80008110 001A 80008112 0155 80008114 5012 80008118 1023 8000811A 004A 8000811C 0002 8000811E 0441 80008124 1021 80008128 092C 8000812A AE42 8000812C 67D0 8000812E 0804 5%の消費税が加算されます 「割引セール実施中」とは併用出来ません。