【发布时间】:2017-11-07 15:26:59
【问题描述】:
我正在编写一个汇编程序,它分析文件并将它们的信息(名称和大小)输出到文件中。我基本上使用 4Eh 和 4Eh 中断来搜索文件:它们都返回 DTA 对象,其中包含有关该文件的相应信息。
它返回一个 32 位文件大小,我必须将其与 16 位用户输入大小进行比较(如果文件信息大于给定的用户输入大小,我必须只输出文件信息)。
这里明显的问题是我不知道如何将 32 位数字转换为 16 位数字,否则我无法比较它们。也许有人知道如何执行这种转换或对如何实现这种比较有任何其他想法?
如果可能,也许有人可以在 TASM Intel x86 程序集中提供示例代码
【问题讨论】:
-
显然,如果文件大小的前 16 位非零,则它比您的用户输入的数字更大。如果它们为零,那么您有两个可以比较的 16 位数字。容易。
-
0..65535 范围内的值将适合 16 位(高 16 位将为零)。 65536+ 值将在高 16 位中有一些非零位。如果您的应用仅将 16 位值 (0..65535) 作为输入,那么您可以先通过检查高 16 位来检查长度是否 >= 65536。