- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这可能是一个非常简单的问题,但是在masm中,一个TBYTE在十六进制中可以容纳的最大值是多少?我正在 64 位系统上工作。我的教科书说它可以容纳的最大整数是 999,999,999,999,999,999。我尝试将其放入十六进制转换器中,它给出了 DE0B6B3A763FFFF。我知道这是不对的,因为当我尝试使用这个值运行一个小程序时,它会给我错误。
提前致谢!
Fuz,这是我正在开发的程序。我只需根据数据类型使用每个变量可以容纳的最大值来初始化每个变量。
TITLE Initializing all data types to maximum value
INCLUDE Irvine32.inc
.data
bVar BYTE 255
sVar SBYTE 127
wVar WORD 65535
swVar SWORD 32767
dwVar DWORD 4294967295
sdwVar SDWORD 2147483647
fwVar FWORD 281474976710655
qwVar QWORD 18446744073709551615
tbVar TBYTE 1208925819614629174706175 ; This value works, but still not
clear why it works even though
it isn't in hex.
r4Var REAL4 3.40E+38
r8Var REAL8 1.79E+308
r10Var REAL10 1.18E+4932
.code
main PROC
exit
main ENDP
END main
最佳答案
根据 MASM 版本 6.1 程序员指南,TBYTE 指令应该与所有其他数据定义指令不同,因为它将十进制整数初始值设定项转换为 FBLD 使用的 80 位打包 BCD(二进制编码的十进制)格式和 FBSTP 指令。正如 fuz 的回答更详细地解释的那样,80 位压缩 BCD 格式仅限于 18 位十进制整数。
但是,我测试过的 MASM 版本(包括 MASM 6.1d)实际上都没有这种行为。使用十进制整数和 TBYTE 伪指令的初始化程序会导致分配的内存使用 80 位整数值进行初始化。这就像十进制整数与 BYTE、WORD 和 DWORD 一起使用时分别产生 8 位、16 位和 32 位整数值,用于初始化内存。
例如,考虑以下代码:
WORD 12345
DWORD 12345
TBYTE 12345
根据文档,此代码应导致使用以下字节初始化内存,以十六进制显示:
39 30
39 30 00 00
45 23 01 00 00 00 00 00 00 00
前两行使用 12345 的 16 位和 32 位整数表示,而最后一行使用 80 位压缩 BCD 格式表示该数字。
但是,MASM 6.1d 以及我尝试过的每个版本 MASM(直到 Visual Studio 2017 附带的最新版本)都会将上面的代码汇编成以下字节:
39 30
39 30 00 00
39 30 00 00 00 00 00 00 00 00
事实上,十进制数与 TBYTE 一起使用并没有什么区别,正常的整数格式的使用方式与其他指令一样。
这意味着 TBYTE 指令的实际范围不是 80 位压缩 BCD 表示形式,而是 80 位二进制补码整数的范围。因此,您可以使用 -604462909807314587353088 到 1208925819614629174706175 之间的值。(或者至少在理论上,MASM 6.1d 有一个错误,不能正确处理前一个数字。后续版本修复了此错误。)
请注意,虽然 x86 CPU 支持 80 位压缩 BCD 类型,但如果仅通过 FBLD 和 FBSTP 指令,则没有可处理 80 位整数值的指令。因此,除非您愿意自己编写 80 位整数算术代码,否则将 TBYTE 与整数一起使用并不是很有用。
通常,您使用的唯一 80 位类型是 80 位浮点类型。在这种情况下,虽然您可以使用 TBYTE 指令,但您应该使用 REAL10 指令,并且需要将数字指定为带小数点的浮点常量。因此,要使用 80 位浮点格式的数字 12345 初始化 80 位内存位置,您可以使用如下内容:
REAL10 12345.
关于assembly - TBYTE 可容纳的最大值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46451773/
我有一个像 [3,10,4,3,9,15,6,13] 这样的列表,我想找到两个不重叠的系列/序列给出通过取最大-最小值可获得的最大值.它们必须是连续的,因此您不能从 1 中减去项目 3。但是您可以从
我正在尝试创建顶部列,这是几个列行的最大值。 Pandas 有一个方法 nlargest但我无法让它成行工作。 Pandas 也有 max和 idxmax这正是我想做的,但仅限于绝对最大值。 df =
我在使用 Android 时遇到了一点问题。 我有我的 GPS 位置,明确的经纬度,以及以米为单位的搜索射线(例如 100 米),可以吗? 想象一下我在射线形成的圆心的位置,我会知道如何在 Andro
假设我有一组最小值和最大值。我想要一个数据结构,在给定外部值的情况下,它会最有效地为我提供值 >= 最小值、值 = 最小值和值 <= 最大值?,我们在Stack Overflow上找到一个类似的问题:
我有以下 Maxima 代码: m:sum(x[i],i,1,N)/N; 然后我想计算 $m^2$。 m2:m^2, sumexpand; 然后我得到双重求和: sum(sum(x[i1]*x[i2]
如何从嵌套字典中获取一个值的最小值/最大值,该字典的缺失值也包含“Nan”? *这是供引用,我找到了一个解决方案,我想我应该在这里分享它,因为我在 stackoverflow 上的任何地方都找不到答案
在千里马 12.04.0 我有一个总和 mysum : sum(u[i]^2, i, 1, N); 现在我区分它 diff(mysum, u[i]); 现在我指定一个定义的索引 i=A 来区分它 at
是否可以根据时间轴获取最小和最大时间戳?我将在 parking 场示例中进行解释。 +---------------------+------+--------+-------+-----------
基本上在几个领域有几个日期 SELECT MAX(MAX(DATE_A),MAX(DATE_B)) from table DATE_A 和 DATE_B 是日期,我基本上想要日期 A 或日期 B 的最
我创建了一个小测试,其中一个 div 根据滚动深度滑动。 我只是想知道怎么设置 A) 起点 (scrolltop = x something) B) 如何设置最大值? var pxlCount = 0
由于达到最大值,clock_gettime() 何时会使用 CLOCK_MONOTONIC 返回一个较小的值?我不是指被描述为错误的小扭曲,而是类似于计数器重置的东西。 它是时间测量的,还是与滴答的绝
我正在使用 angularjs,尤其是 $timeout 服务(setTimeout 的包装器)。它的工作原理如下: angular.module('MyApp').controller('MyCo
是否有可能获得 MinValue - 或 MaxValue未知的 T 型?如 Int其中有 Int.MinValue和 Int.MaxValue ?? 谢谢 最佳答案 正如@mpilquist 在上面
我的数据为 员工: id Name -------- 1 xyz 2 abc 3 qaz Employee_A:(Eid - 员工表,title - 职称表) eid active
我有一个日期和时间行列表,每天有多行。 对于每个唯一日期,我想获取最小和最大时间值。 如何在 Excel v10(又名 2002)中执行此操作? 最佳答案 首先,您可以使用 Excel 函数 MIN(
我有以下 SQL 表 - Date StoreNo Sales 23/4 34 4323.00 23/4 23 5
我可能错过了一些微不足道的东西。我想我还没有完全理解一些基本的交叉过滤器概念 无论如何,我创建了一个带有几个维度的交叉过滤器,并在维度上使用过滤器。我现在想知道过滤值(不是键)的最小值/最大值。 我将
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我在这里错过了什么吗?我希望以下代码段中的 np.max 会返回 [0, 4] ... >>> a array([[1, 2], [0, 4]]) >>> np.max(a,
给定大小为 2 的列表列表,我试图找到通过索引确定最小/最大值的最快方法。目标是确定一系列 XY 点的边界/范围。 子列表未排序(按一个索引排序并不能保证另一个索引已排序)。 目前我正在做以下事情:
我是一名优秀的程序员,十分优秀!