シーケンス制御講座
楽しく情報交換しましょう。分からない事は質問して、分かる方は答えてあげてください。ただし営利目的な書き込みは予告無く削除いたします。
レイアウトが崩れる場合は掲示板がSSLに対応していません。お手数ですがURLの"https"を"http"に変更してください。またはコチラから。
データレジスタの空白削除 - tt
2022/08/05 (Fri) 16:15:28
はじめまして!
シーケンサについて質問させてください。
アスキー文字データ20桁で、桁不足の場合は空白(H20)で埋められているデータデバイスがあり、別機器へ転送する際、空白により意図した文字列にならず削除する必要がでてきました。
偶数文字であればデータデバイスH2020と等しいか比較or検索し該当すればH0で書換えや削除命令でいいのかなと考えております。
問題は奇数文字の場合、上位桁にH20が入るため、それを削除したいのですがどのようにすればいいいかわからず苦戦しております。
なにかいい方法はないでしょうか?
Re: データレジスタの空白削除 - take
2022/08/06 (Sat) 11:53:24
少し発想を変えてみてはどうでしょうか?文字列処理では元の文字列からいらない部分を消すよりも、元の文字列から必要な部分を取出した方がいいです。
例えば今回の例ですと
①文字列サーチ命令でスペース(H20)を探す。
②見つかった位置が取得されます。(何番目にあるか)
③取得した値から-1して、その文字列を取出す。
例えば左から16文字目にH20を発見したら、左から15文字目までを取出し他のレジスタに転送。
これだけです。
たぶんこのような命令はあると思います。
ttさんのような方法で行うには、H2020をH0に書き換えて、最終文字列が入ったデバイスを何とか特定する。
その後そのデバイスにビットマスクをして1文字(8ビット)にして比較する。たぶんこのビットマスクの方法に苦労していると思います。
ビットマスクは論理積のWAND命令で行います。マニュアルにそのまま書いてあると思います。ビットマスクはプログラの業界ではよく使うので、覚えておいて損はないと思います。
Re: データレジスタの空白削除 - tt
2022/08/08 (Mon) 10:49:24
管理人様
アドバイスありがとうございます。
おっしゃる通りビットマスクの方法がわからず悩んでおりました。
方法としてはやはりそういう命令を使うほかないのですね。。
便利な命令等少し期待しておりました。地道に検索から処理する方法で対応してみます。