2018/7/23(MON) | 【後方排気】SI:やっぱり16ビット計算 |
---|---|
やっぱり、いろいろ検討すると
16ビットでの計算が必要そう この前の5倍して割り算して2倍じゃやっぱ足りない。 ということで16ビットの計算を実装する。 アセンブラで・・・ で まずは簡単なところで10倍するロジックを考える 73を10倍してみる。 73を16進数、2進数で表現すると 8ビットだとこんな感じ。 これを16ビットで表現すると こんな感じで上位8ビットと下位8ビットで表す で、これを10倍するには 左に1ビットシフトした値(2倍) と 左に3ビットシフトした値(8倍) を 足して10倍の値を求めます。 で、アセンブラだと1ビットずつしかシフトできないのと レジスタが8ビットなので 上位と下位ごとに計算する必要があります。 まず3ビットシフトした値(8倍)を求めるロジック たかだか3ビットシフトするだけで こんだけステップ数がかかるのか? 下位をシフトしたときに桁あふれしたら 上位に+1しています で 73を10倍するロジックはこんな感じ 3ビットシフトした値と1ビットシフトした値を足してます 特筆することはもないですけど 上位と下位を別々にあつかうところですかね? シミュレーターで動かしてみると 反転しているところ 上位と下位は さきほどの机上計算の上位と下位と一致しています 73の10倍の730となっていますので 合ってそうですね。 だぁ〜アセンブラ面倒くせぇ〜 次は割り算かな??? これだけステップ数掛かると システムの成立性のために 処理時間をちゃんと計算した方がよさそう。。。 まだまだつづく。。。 |