私は、ファイルを分析し、その情報(名前とサイズ)をファイルに出力するアセンブラプログラムを作成しています。私は基本的に4Ehと4Ehの割り込みを使用してファイルを検索しています。それらは両方とも、そのファイルに関する情報に基づいてDTAオブジェクトを返します。32ビットのファイルサイズと16ビットのユーザー入力を比較しますか?
16ビットのユーザー入力サイズと比較する必要がある32ビットファイルサイズを戻します(指定されたユーザー入力サイズより大きい場合はファイル情報のみを出力する必要があります)。
ここで明白な問題は、32ビットの数値を16ビットの数値に変換する方法がわからないことです。そうでなければ、私はそれらを比較できないためです。たぶん、誰かがこの変換を実行する方法を知っているか、この比較を実装する方法に関する他のアイデアがありますか?
可能な場合は、多分誰かがあなたが逆方向にそれについて考えているTASMインテルのx86アセンブリのコード例
ファイルサイズの上位16ビットがゼロ以外の場合は、明らかにユーザー入力よりも大きな数値です。それらがゼロの場合は、比較できる2つの16ビット数値があります。簡単です。 – Jester
範囲0..65535の値は16ビットに収まります(上位16ビットはゼロになります)。 65536+の値は、上位16ビットにゼロ以外のビットがあります。あなたのアプリが入力として16ビットの値(0..65535)しか取らない場合は、最初に、上位16ビットをチェックして長さが65536以上であるかどうかを調べることができます。 – Ped7g