HLに入ってる数値に対応する10進数の文字列を得るには?

やり方はいろいろあると思いますが、ここでは各桁を2分法で絞り込んでいく方法を紹介します。

HL は 0〜65535 の範囲をとる 2byte の整数なので、一番上の桁は 0〜6 のいずれかだと分かります。
6 は、60000 の意味なので、その半分の値 30000 以上の場合は、その桁は 3以上が確定。小さい場合は 3未満が確定。
30000 を引いてしまって、残りがさらに半分(あくまで一番上の桁だけに着目してるので、30000 の半分は 10000 か 20000。多い方を選びましょう。) と比較。先ほど確定した値に 2 を加算するか決める。
また半分の 10000 で 1を加算するか決める。
これで万の桁が 0〜6 で求まります。
桁の数値として '0' の ASCIIコードを入れておきましょう。
ASCIIコードは、'0' + 1 は '1' になるように順番に並んでいるため、0〜9 に '0' を足してやれば '0'〜'9' になります。
    temp1 = '0'
    if HL >= 30000 then
        temp1 = temp1 + 3
        HL = HL - 30000
    if HL >= 20000 then
        temp1 = temp1 + 2
        HL = HL - 20000
    if HL >= 10000 then
        temp1 = temp1 + 1
        HL = HL - 10000
		
次の桁は 0〜9 の 10通りあるので 4回比較する必要があります。やり方は同じです。
    temp2 = '0'
    if HL >= 5000 then
        temp = temp + 5
        HL = HL - 5000
    if HL >= 3000 then
        temp = temp + 3
        HL = HL - 3000
    if HL >= 2000 then
        temp = temp + 2
        HL = HL - 2000
    if HL >= 1000 then
        temp = temp + 1
        HL = HL - 1000
		
以後、繰り返せば良いですね。
では、次のページでZ80のコードにしてみます。

2020年8月25日 更新
[次へ][戻る]