16進数→10進数→10進数文字列変換
0x7FFFFFFF=2147483647
0x3B9ACA00=10000000=t9
0x5F5E100=10000000=t8
0x989680=10000000=t7
0xF4240=1000000=t6
0x186A0=100000=t5
0x2710=10000=t4
0x3E8=1000=t3
0x64=100=t2
0xA=10=t1
2147483647=2*t9+t8+4*t7+7*t6+4*t5+8*t4+3*t3+6*t2+4*t1+7
ようは10のべき乗で割るだけ
#値書き込み0x3F00
0x3B9ACA00
0x05F5E100
0x00989680
0x000F4240
0x000186A0
0x00002710
0x000003E8
0x00000064
0x0000000A
MIPS OP 説明
0x3c080aaa lui t0,$0aaa
0x3508aaaa ori t0,t0,$aaaa #アドレス
0x8d090000 lw t1,$0000(t0) #ロード
0x3c080880 lui t0,$0880
0x35083f00 ori t0,t0,$3f00 #計算値
0x00086825 or t5,zero,t0
0x8d0a0000 lw t2,$0000(t0) #計算値ロード *ループ
0x012a001a div t1,t2 #割り算 t1÷t2=LO+HI
0x00005812 mflo t3 #商
0x00004810 mfhi t1 #余り
0x340c0009 ori t4,zero,$0009 #割る回数
0xa1ab0024 sb t3,$0024(t5) #商をt0+0x24へ保存
0x21080004 addi t0,t0,$0004 #計算値
0x21ad0001 addi t5,t5,$0001 #商保存先ずらす
0x218cffff addi t4,t4,$FFFF #回数-1
0x1580fff6 bnez t4,-9 #割る10になるまでループ
0x00000000 nop
0xa1a90025 sb t1,$0025(t5) #余りをt0+0x25(0x3f2e)へ保存
#半角数字
0x3C080880 lui t0,$0880
0x35083f24 ori t0,t0,$3f24
0x340A000a ori t2,zero,$000a #0~9まで
0x81090000 lb t1,$0000(t0)
0x35290030 ori t1,t1,$0030 #論理和0x30
0xA1090000 sb t1,$0000(t0)
0x254AFFFF addiu t2,t2,$FFFF
0x21080001 addi t0,t0,$0001
0x1540FFFA bne t2,zero,$-5
0x00000000 nop
#全角数字
0x3C080880 lui t0,$0880
0x35083f24 ori t0,t0,$3f24 #アドレス
0x3C090880 lui t1,$0880
0x35293E00 ori t1,t1,$3E00 #書き込みアドレスセット
0x340a4f82 ori t2,zero,$4f82 #全角0
0x340b000a ori t3,zero,$000a #0~9まで
0x340c0000 ori t4,zero,$0000 #判定初期化
0x810d0000 lb t5,$0000(t0) #データ読み込み
0x158d0003 bne t4,t5,$+4 #一致したら書き込み
0x00000000 nop
0xa52a0000 sh t2,$0000(t1)
0x21290002 addi t1,t1,$0002 #保存先+2
0x256bffff addiu t3,t3,$ffff #0~9のカウント-1
0x254a0100 addiu t2,t2,$0100 #0x824F+0x1=全角1
0x258c0001 addiu t4,t4,$0001 #判定加算
0x21080001 addi t0,t0,$0001 #読み込み+1
0x1560fff6 bne t3,zero,$-9 繰り返し
0x00000000 nop